From e926a7af75f709dc9fa6cada6f7018cb2cad5571 Mon Sep 17 00:00:00 2001 From: kjh2064 Date: Sun, 12 Jul 2026 23:55:00 +0900 Subject: [PATCH] docs: add dotnet migration inventory --- AGENTS.md | 1 + docs/ROADMAP_WBS.md | 1 + docs/WBS_10_DOTNET_MIGRATION_INVENTORY.yaml | 86 +++++++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 docs/WBS_10_DOTNET_MIGRATION_INVENTORY.yaml diff --git a/AGENTS.md b/AGENTS.md index 2a182da6..34f72ef4 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -97,6 +97,7 @@ - `docs/ROADMAP_WBS.md`: `.gs → Python` 및 `xlsx → sqlite` WBS. - `docs/ROADMAP_WBS.md`의 WBS-8.2: `run_kis_data_collection_v1.py` → `validate_platform_transition_wbs_v1.py` → `validate_snapshot_admin_web_v1.py`. - `docs/WBS_10_DOTNET_MIGRATION_ROADMAP.yaml`: `.NET 엔진 고도화` 상세 WBS와 각 WBS별 성공 데이터 가이드. +- `docs/WBS_10_DOTNET_MIGRATION_INVENTORY.yaml`: WBS-10 전환 우선순위용 실행 경로 인벤토리. - `tools/validate_dotnet_migration_roadmap_v1.py`: WBS-10 상세 로드맵 YAML validator. - `Temp/snapshot_admin_approval_packet_v1.json`: snapshot admin approval packet export. - `Temp/snapshot_admin_approval_packet_v1.md`: snapshot admin approval packet summary. diff --git a/docs/ROADMAP_WBS.md b/docs/ROADMAP_WBS.md index 41cb6084..7797c42a 100644 --- a/docs/ROADMAP_WBS.md +++ b/docs/ROADMAP_WBS.md @@ -1465,6 +1465,7 @@ WBS-8.8 (KIS 리팩터) — 독립적 (원격 병행) > **📌 보강 문서(2026-06-30):** 본 WBS-10 의 다수 항목이 `완료` 표기되어 있으나 실측 결과 일부 괴리(10.6 파이프라인·10.9 보안 실질 미완성)가 확인되었다. 마이그레이션 완성 우선 + 상용화 잔여 작업의 재정의는 [WBS_10_DOTNET_MIGRATION_HARDENING_2026_06_30.md](./WBS_10_DOTNET_MIGRATION_HARDENING_2026_06_30.md) 참조. > 상세 작업 가이드(YAML): [WBS_10_DOTNET_MIGRATION_ROADMAP.yaml](./WBS_10_DOTNET_MIGRATION_ROADMAP.yaml) +> 실행 경로 인벤토리: [WBS_10_DOTNET_MIGRATION_INVENTORY.yaml](./WBS_10_DOTNET_MIGRATION_INVENTORY.yaml) > 현황 진단(2026-06-26): .NET 프로젝트는 Python 엔진(41 모듈, 14,500 LOC) 대비 5~10%(~1,400 LOC) 수준. > Domain 계산기 6개·데이터 모델 8개·KIS/Naver/Yahoo 클라이언트·PostgreSQL 마이그레이션·Razor Pages 어드민 대시보드 기본 구현 완료. diff --git a/docs/WBS_10_DOTNET_MIGRATION_INVENTORY.yaml b/docs/WBS_10_DOTNET_MIGRATION_INVENTORY.yaml new file mode 100644 index 00000000..ef2ca740 --- /dev/null +++ b/docs/WBS_10_DOTNET_MIGRATION_INVENTORY.yaml @@ -0,0 +1,86 @@ +formula_id: WBS_10_DOTNET_MIGRATION_INVENTORY_V1 +status: draft +owner: QuantEngine +scope: + goal: ".NET 고도화 전환 우선순위를 결정하기 위한 운영 경로 인벤토리" + classification: + - python_harness + - dotnet_domain + - dotnet_application + - dotnet_web + - read_model + +routes: + - route_id: python_harness_validation + path: + - tools/validate_quant_engine_wbs_v1.py + - tools/validate_dotnet_migration_roadmap_v1.py + - tests/unit/test_validate_dotnet_migration_roadmap_v1.py + classification: python_harness + keep_or_migrate: keep + reason: "검증 도구는 운영 엔진이 아니라 하네스/계약 검사 계층이다." + + - route_id: python_wbs_source + path: + - spec/60_quant_engine_wbs.yaml + - docs/WBS_10_DOTNET_MIGRATION_ROADMAP.yaml + classification: python_harness + keep_or_migrate: keep + reason: "권위 문서와 상세 로드맵은 운영 실행물이 아니라 계약 문서다." + + - route_id: dotnet_core_formula_engine + path: + - src/dotnet/QuantEngine.Core/Domain/FormulaEngine.cs + - src/dotnet/QuantEngine.Core/Domain/FactorCalculator.cs + - src/dotnet/QuantEngine.Core/Domain/AntiChasingCalculator.cs + - src/dotnet/QuantEngine.Core/Domain/ProfitLockCalculator.cs + - src/dotnet/QuantEngine.Core/Domain/PullbackTriggerCalculator.cs + - src/dotnet/QuantEngine.Core/Domain/SellPriceSanityChecker.cs + - src/dotnet/QuantEngine.Core/Domain/KrxTickNormalizer.cs + classification: dotnet_domain + keep_or_migrate: migrate + reason: "운영 계산의 canonical engine 후보이며 parity harness의 주 대상이다." + + - route_id: dotnet_application_orchestration + path: + - src/dotnet/QuantEngine.Application/Services/PipelineOrchestrator.cs + - src/dotnet/QuantEngine.Application/Services/KisDataCollectionOrchestrator.cs + - src/dotnet/QuantEngine.Application/Services/HistoryIngestionService.cs + - src/dotnet/QuantEngine.Application/Services/PriceDataNormalizer.cs + - src/dotnet/QuantEngine.Application/Services/SourcePriorityResolver.cs + - src/dotnet/QuantEngine.Application/Services/DataCollectionService.cs + classification: dotnet_application + keep_or_migrate: migrate + reason: "Python 오케스트레이션/수집/정규화 흐름을 .NET 서비스 계층으로 수렴시킨다." + + - route_id: dotnet_web_scheduler + path: + - src/dotnet/QuantEngine.Web/Services/SchedulerService.cs + - src/dotnet/QuantEngine.Web/Endpoints/CollectionEndpoints.cs + - src/dotnet/QuantEngine.Web/Pages/Admin/Operations/Index.cshtml.cs + classification: dotnet_web + keep_or_migrate: migrate + reason: "스케줄러와 운영 제어면은 서비스 수준으로 고도화 대상이다." + + - route_id: dotnet_read_models + path: + - src/dotnet/QuantEngine.Web/Pages/Admin/Dashboard/Index.cshtml.cs + - src/dotnet/QuantEngine.Web/Pages/Admin/Collection/Index.cshtml.cs + - src/dotnet/QuantEngine.Web/Pages/Admin/Monitoring/Index.cshtml.cs + - src/dotnet/QuantEngine.Web/Pages/Admin/Database/Index.cshtml.cs + classification: read_model + keep_or_migrate: migrate + reason: "운영 조회는 역정규화 read model로 분리한다." + +priority_order: + - python_harness_validation + - python_wbs_source + - dotnet_core_formula_engine + - dotnet_application_orchestration + - dotnet_web_scheduler + - dotnet_read_models + +notes: + - "운영 경로는 keep_or_migrate가 migrate인 대상만 .NET canonical 대상으로 본다." + - "python_harness는 thin wrapper 또는 검증용으로만 유지한다." + - "read_model은 원장 대체가 아니라 서빙 전용이다."