docs: resolve VS-03/04/12/14 numbering collision (renumber to VS-26/27/28/29)
Renumbers the four 2026-08-07 slices (ApprovalWorkflow, AuditTrail, TradeExecution, PortfolioReconciliation) to previously-unused VS-26..29, leaving WBS_MASTER.csv's original VS-03/04/12/14 definitions (IngestMarketDataPIT, ApplyCorporateActions, RankBuyCandidates, GenerateDailyRecommendations) untouched, per docs/DECISIONS/ADR-WBS-001-slice-renumbering.md. While investigating, found two things not yet resolved by this commit: - DEBT-017 (duplicate ApprovalWorkflow implementation): the tested backend (ApprovalWorkflow/) is [DontRegister]'d dead code; the live one (Features/ApprovalWorkflow/, wired in Program.cs) has no dedicated tests. AEG-VS-26-01 downgraded from COMPLETED to BLOCKED in the tracker pending an architect decision on which implementation is canonical. - Features/MarketData and Features/Portfolio (VS-03/04/05/08 Market Data Ingestion Dashboard, Portfolio Rebalance, Risk Metrics, Dashboard) are a third, already-implemented-and-tested body of work entirely absent from WBS_PROGRESS_TRACKER.csv. Flagged in CURRENT_ROADMAP.md as a follow-up. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+15
-13
@@ -1,28 +1,30 @@
|
||||
# 🚀 K-ArtSell Aegis v16.0 - 현재 진행 로드맵
|
||||
|
||||
**최종 갱신:** 2026-08-07 (이 문서의 이전 버전은 2026-08-03 상태로 정체되어 있었고, 그 사이 병합된 115개 커밋을 반영하지 못했습니다. 이번 갱신은 실제 코드/테스트를 직접 확인한 결과입니다.)
|
||||
**최종 갱신:** 2026-08-08 (VS 번호 재배정 — 아래 "알려진 문서 정합성 문제" 1번 참조. 2026-08-07 갱신 내용은 실제 코드/테스트를 직접 확인한 결과였고 이번 갱신은 그 위에 번호 충돌만 정정한 것입니다.)
|
||||
|
||||
**상태 요약:** VS-03(승인 워크플로우), VS-04(감사 추적), VS-10(매도 결정), VS-12(거래 실행), VS-14(포트폴리오 대사) 백엔드 구현 + 테스트 완료. Phase 1 Shadow Run(Gate 5a, 252+ 거래일 검증)은 **아직 시작되지 않음** (과거 "RUNNING" 기록은 허위였음이 이미 문서로 정정됨). 상세 항목별 상태는 `docs/CURRENT/CATALOGS/WBS_PROGRESS_TRACKER.csv` 참조.
|
||||
**상태 요약:** VS-27(감사 추적), VS-10(매도 결정), VS-28(거래 실행), VS-29(포트폴리오 대사) 백엔드 구현 + 테스트 완료. VS-26(승인 워크플로우, 구 VS-03)은 DEBT-017(중복 구현) 미해결로 **BLOCKED**. Phase 1 Shadow Run(Gate 5a, 252+ 거래일 검증)은 **아직 시작되지 않음** (과거 "RUNNING" 기록은 허위였음이 이미 문서로 정정됨). 상세 항목별 상태는 `docs/CURRENT/CATALOGS/WBS_PROGRESS_TRACKER.csv` 참조.
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 알려진 문서 정합성 문제 (DECISION_REQUIRED)
|
||||
|
||||
1. **VS 번호 체계 충돌:** `docs/CURRENT/CATALOGS/WBS_MASTER.csv`(원 계획)와 실제 구현/`WBS_PROGRESS_TRACKER.csv`(실행 트래커) 사이에 VS-03/VS-04/VS-12/VS-14 번호가 서로 다른 기능을 가리키는 충돌이 있습니다. 이번 세션에서 발견했고, 사용자 결정에 따라 **기존 트래커 번호를 유지**하고 충돌 사실만 각 행에 명시했습니다. 근본 해결(재번호 부여 또는 WBS_MASTER 공식 대체)은 아직 미결정입니다.
|
||||
2. **DbUp 마이그레이션 테스트 DB 권한 문제:** `kartsell` DB 사용자가 `kartsell_migration_test` 데이터베이스의 소유자가 아니어서 `DbUpMigrationTests`(12건)가 로컬에서 실패합니다. 코드 문제가 아니라 DBA 조치(소유권 부여)가 필요합니다.
|
||||
1. **VS 번호 체계 충돌 — 2026-08-08 부분 해결:** `WBS_MASTER.csv`(원 계획)와 `WBS_PROGRESS_TRACKER.csv`(실행 트래커) 사이의 VS-03/VS-04/VS-12/VS-14 충돌은 트래커 쪽 4개 슬라이스(승인워크플로우/감사추적/거래실행/포트폴리오대사)를 VS-26/27/28/29로 재번호 부여하여 해결했습니다. 근거: `docs/DECISIONS/ADR-WBS-001-slice-renumbering.md`.
|
||||
- **이 과정에서 새로 발견한, 아직 미해결인 문제 (TECH_DEBT_REGISTER.md DEBT-017):** VS-26(구 VS-03) 승인워크플로우는 **동일 기능의 중복 구현이 두 벌** 존재합니다 — `src/KArtSell.Modules.ModelOperations/ApprovalWorkflow/`(20/20 테스트 통과하지만 전 엔드포인트가 `[DontRegister]`로 비활성화되어 실제로는 호출 불가능한 죽은 코드)와 `Features/ApprovalWorkflow/`(`Program.cs`에 실제 등록되어 살아있지만 전용 테스트가 없음). 즉 **테스트된 코드는 죽어있고, 살아있는 코드는 테스트되지 않았습니다.** 아키텍트 결정(둘 중 하나를 정식으로 선택하고 나머지 삭제) 전까지 이 슬라이스에 프런트엔드를 붙이지 마세요. WBS_PROGRESS_TRACKER.csv의 AEG-VS-26-01 행 상태를 `BLOCKED`로 정정했습니다.
|
||||
- **또 다른 발견 — 미추적 작업:** `src/KArtSell.Host/Features/MarketData/VS03_*.cs`, `Features/Portfolio/VS04_*.cs`/`VS05_*.cs`/`VS08_*.cs`는 실제 구현되고 테스트도 있는(commits `2bc2b1e`, `32b49a4`, `14c5e4f`, `2eee44d`) **세 번째** VS-03/04/05/08 사용례(Market Data Ingestion Dashboard, Portfolio Rebalance, Risk Metrics, Dashboard)인데, `WBS_PROGRESS_TRACKER.csv`에 전혀 기록되어 있지 않습니다. 다음 세션에서 이 작업을 검증(빌드/테스트 재현, 프런트엔드 존재 여부 확인)하고 트래커에 추가해야 합니다.
|
||||
2. **DbUp 마이그레이션 테스트 DB 권한 문제:** `kartsell` DB 사용자가 `kartsell_migration_test` 데이터베이스의 소유자가 아니어서 `DbUpMigrationTests`(12건)가 로컬에서 실패합니다. 코드 문제가 아니라 DBA 조치(소유권 부여)가 필요합니다. 실행할 SQL 초안: `scripts/dba/grant-migration-test-db-ownership.sql`.
|
||||
3. **frontend 빌드 산출물 재해시:** `dotnet build`를 실행할 때마다 `pnpm build`가 재실행되어 `wwwroot/assets/*` 해시 파일명이 바뀌고 git에 불필요한 변경이 쌓이는 구조적 문제가 있습니다 (아직 미해결).
|
||||
|
||||
---
|
||||
|
||||
## ✅ 완료 (Backend 구현 + 테스트, 2026-08-07 기준 검증됨)
|
||||
|
||||
### VS-03: 모델 승인 워크플로우 (Maker-Checker Governance)
|
||||
- **위치:** `src/KArtSell.Modules.ModelOperations/ApprovalWorkflow/`
|
||||
- **테스트:** 20/20 PASS (격리 실행 기준)
|
||||
- **미완료:** 프런트엔드 UI 없음
|
||||
- **이번 세션에서 발견/수정한 결함:** `ApprovalSql`이 Dapper로 `DateOnly` 파라미터를 바인딩하지 못해 승인 제안서 생성이 실 DB 환경에서 100% 실패하던 버그 — 병합 이후 실 DB로 한 번도 검증되지 않아 발견되지 않고 있었음
|
||||
### VS-26 (구 VS-03): 모델 승인 워크플로우 (Maker-Checker Governance) — 🔴 BLOCKED
|
||||
- **위치:** `src/KArtSell.Modules.ModelOperations/ApprovalWorkflow/` (죽은 코드, `[DontRegister]`) + `Features/ApprovalWorkflow/` (실제 등록됨, 테스트 없음)
|
||||
- **테스트:** 20/20 PASS는 죽은 코드 쪽 결과입니다 — 실제로 호출되는 구현은 테스트되지 않았습니다. 자세한 내용은 TECH_DEBT_REGISTER.md DEBT-017 참조.
|
||||
- **미완료:** 프런트엔드 UI 없음. DEBT-017 해결 전까지 착수 금지.
|
||||
- **이전 세션에서 발견/수정한 결함 (여전히 유효, 죽은 코드 쪽 한정):** `ApprovalSql`이 Dapper로 `DateOnly` 파라미터를 바인딩하지 못해 승인 제안서 생성이 실 DB 환경에서 100% 실패하던 버그 — 병합 이후 실 DB로 한 번도 검증되지 않아 발견되지 않고 있었음
|
||||
|
||||
### VS-04: 불변 감사 추적 (Audit Trail / GDPR)
|
||||
### VS-27 (구 VS-04): 불변 감사 추적 (Audit Trail / GDPR)
|
||||
- **위치:** `src/KArtSell.Modules.ModelOperations/Compliance/`
|
||||
- **테스트:** 5/5 PASS (격리 실행 기준)
|
||||
- **미완료:** 프런트엔드 UI 없음
|
||||
@@ -31,16 +33,16 @@
|
||||
### VS-10: 매도 결정 엔진 (Sell Decision Engine)
|
||||
- **위치:** `src/KArtSell.Modules.ModelOperations/SellDecision/`, `frontend/src/features/sell-decision/`
|
||||
- **테스트:** 32/32 PASS (격리 실행 기준)
|
||||
- **완료도:** Backend + Frontend 모두 존재 (VS-03/04/12/14 중 유일)
|
||||
- **완료도:** Backend + Frontend 모두 존재 (VS-26/27/28/29 중 유일)
|
||||
- **⚠️ 미검증 사항:** 코드/테스트 완료 ≠ PBO/DSR 프로덕션 검증 완료. 실 시장 데이터 기반 검증은 Phase 1 Shadow Run 완료 후에만 가능
|
||||
|
||||
### VS-12: 거래 실행 시스템 (Trade Execution, KIS 연동)
|
||||
### VS-28 (구 VS-12): 거래 실행 시스템 (Trade Execution, KIS 연동)
|
||||
- **위치:** `src/KArtSell.Modules.ModelOperations/TradeExecution/`
|
||||
- **테스트:** 13/13 PASS (격리 실행 기준)
|
||||
- **미완료:** 프런트엔드 UI 없음
|
||||
- **이번 세션에서 발견/수정한 결함 (심각):** `UpdateTradeStatusAsync`가 `status`/`kis_response`/`error_message`만 저장하고 `kis_order_id`, `executed_quantity`, `unit_price`, `commission`, `net_proceeds`, 체결/정산 타임스탬프는 병합 이후 매번 조용히 유실시키던 버그. 거래 체결·정산 데이터가 실제로는 저장되고 있지 않았음
|
||||
|
||||
### VS-14: 포트폴리오 대사 (Portfolio Reconciliation)
|
||||
### VS-29 (구 VS-14): 포트폴리오 대사 (Portfolio Reconciliation)
|
||||
- **위치:** `src/KArtSell.Modules.ModelOperations/PortfolioReconciliation/`
|
||||
- **테스트:** 18/18 PASS (격리 실행 기준)
|
||||
- **미완료:** 프런트엔드 UI 없음
|
||||
|
||||
Reference in New Issue
Block a user