From 11b92a4ac7b194aacafa09b9a113b4a5025f8f04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B6=8C=ED=98=81=EC=84=B1?= Date: Thu, 29 Jan 2026 21:56:59 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20sam=5Fstat=20Phase=204=20=EC=99=84?= =?UTF-8?q?=EB=A3=8C=20=EC=83=81=ED=83=9C=20=EC=97=85=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Phase 4 전체 항목 ⏳→✅ (4.1~4.5) - 진행률 50%→67%, 다음 작업: Phase 5 최적화 - 변경 이력 추가: P2 도메인 + API + 대시보드 전환 완료 Co-Authored-By: Claude Opus 4.5 --- plans/sam-stat-database-design-plan.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/plans/sam-stat-database-design-plan.md b/plans/sam-stat-database-design-plan.md index a1196a4..399eabc 100644 --- a/plans/sam-stat-database-design-plan.md +++ b/plans/sam-stat-database-design-plan.md @@ -11,9 +11,9 @@ | 항목 | 내용 | |------|------| -| **마지막 완료 작업** | Phase 3: P1 도메인 확장 완료 (차원테이블, 재고, 견적, 인사, KPI/알림) | -| **다음 작업** | Phase 4: P2 도메인 + API + 대시보드 전환 | -| **진행률** | 3/6 Phase (50%) | +| **마지막 완료 작업** | Phase 4: P2 도메인 + API + 대시보드 전환 완료 (건설/시스템 통계, 이벤트/스냅샷, StatController API, DashboardService 전환) | +| **다음 작업** | Phase 5: 최적화 및 안정화 | +| **진행률** | 4/6 Phase (67%) | | **마지막 업데이트** | 2026-01-29 | --- @@ -1103,11 +1103,11 @@ docker compose exec mysql mysql -u root -proot sam_stat \ ### Phase 4: P2 도메인 + API + 대시보드 전환 | # | 작업 항목 | 상태 | 구체적 작업 내용 | |---|----------|:----:|-----------------| -| 4.1 | 건설/프로젝트 통계 | ⏳ | `stat_project_monthly` + `ProjectStatService.php` - 원본: `sites`, `contracts`, `expected_expenses` | -| 4.2 | 시스템 통계 | ⏳ | `stat_system_daily` + `SystemStatService.php` - 원본: `audit_logs`, `api_request_logs`, `fcm_send_logs` | -| 4.3 | 이벤트/스냅샷 | ⏳ | `stat_events`, `stat_snapshots` + Observer 패턴으로 실시간 이벤트 기록 | -| 4.4 | 통계 API | ⏳ | `StatController.php` + `api/routes/api/v1/stats.php` 라우트 파일 추가 + Swagger | -| 4.5 | 대시보드 전환 | ⏳ | `DashboardService.php` 내부 쿼리를 sam_stat 조회로 점진적 전환 (API 인터페이스 유지) | +| 4.1 | 건설/프로젝트 통계 | ✅ | `stat_project_monthly` 마이그레이션 + 모델 + `ProjectStatService` - 원본: `sites`, `contracts`, `expected_expenses`. 월간 전용 도메인 | +| 4.2 | 시스템 통계 | ✅ | `stat_system_daily` 마이그레이션 + 모델 + `SystemStatService` - 원본: `api_request_logs`, `personal_access_tokens`(user_tenants 조인), `audit_logs`, `fcm_send_logs`, `files`, `approvals` | +| 4.3 | 이벤트/스냅샷 | ✅ | `stat_events`, `stat_snapshots` 마이그레이션 + 모델 + `StatEventService` + `StatEventObserver` (Order, Sale, Deposit, Withdrawal, Purchase, Approval에 등록) | +| 4.4 | 통계 API | ✅ | `StatController` (summary/daily/monthly/alerts) + `StatQueryService` + FormRequest 3개 + `routes/api/v1/stats.php`. Swagger는 Phase 5에서 추가 | +| 4.5 | 대시보드 전환 | ✅ | `DashboardService` getFinanceSummary/getSalesSummary → sam_stat 우선 조회 + 원본 DB 폴백. 응답에 `source` 필드 추가 | ### Phase 5: 최적화 및 안정화 | # | 작업 항목 | 상태 | 구체적 작업 내용 | @@ -1278,6 +1278,7 @@ StatSalesDaily::updateOrCreate( | 2026-01-29 | Phase 1 완료 | 인프라 구축: sam_stat DB 생성, 메타/dim_date 마이그레이션, 기반 모델 4개, 커맨드 2개, AggregatorService + Interface | | 2026-01-29 | Phase 2 완료 | P0 도메인: 매출/재무/생산 일간+월간 테이블 6개, 모델 6개, 서비스 3개, 스케줄러 2개 등록. 실데이터 집계 검증 완료 | | 2026-01-29 | Phase 3 완료 | P1 도메인: dim_client/dim_product 차원 + 재고/견적/인사 일간 3개 + KPI/알림 2개 = 테이블 7개, 모델 7개, 서비스 4개(Dimension/Inventory/Quote/Hr/KpiAlert), 커맨드 1개, 스케줄러 1개. 실데이터 검증 완료. products→items, client_groups.name→group_name 수정 | +| 2026-01-29 | Phase 4 완료 | P2 도메인 + API + 대시보드: stat_project_monthly/stat_system_daily/stat_events/stat_snapshots 테이블 4개, 모델 4개, 서비스 4개(Project/System/StatEvent/StatQuery), StatController + FormRequest 3개 + routes/stats.php, StatEventObserver(6모델), DashboardService sam_stat 전환(폴백 패턴). 버그: whereHas→DB Builder 제거, User모델경로 수정. sam_stat 총 20테이블 | ---