diff --git a/docs/WBS_10_DOTNET_MIGRATION_ROADMAP.yaml b/docs/WBS_10_DOTNET_MIGRATION_ROADMAP.yaml index 8d7bc069..462c45fd 100644 --- a/docs/WBS_10_DOTNET_MIGRATION_ROADMAP.yaml +++ b/docs/WBS_10_DOTNET_MIGRATION_ROADMAP.yaml @@ -372,3 +372,16 @@ alignment: WBS-10.10: WBS-10-B2 WBS-10.11: WBS-10-A3 WBS-10.12: WBS-10-C3 + roadmap_section_map: + WBS-10.1: "기반 결함 수정" + WBS-10.2: "테스트 인프라 구축" + WBS-10.3: "Domain 계산기 Parity 검증 (Python ↔ C# 동등성)" + WBS-10.4: "공식 계산 엔진 C# 포팅 (compute_formula_outputs.py 대응)" + WBS-10.5: "하네스 주입 엔진 C# 포팅 (inject_computed_harness.py 대응)" + WBS-10.6: "파이프라인 오케스트레이터" + WBS-10.7: "Application 서비스 레이어 구축" + WBS-10.8: "데이터 수집 오케스트레이터" + WBS-10.9: "보안 강화" + WBS-10.10: "Razor Pages 어드민 대시보드 고도화" + WBS-10.11: "Razor Pages 개발 가이드라인 수립" + WBS-10.12: "Playwright 기반 Razor Pages 어드민 UI E2E 자동화" diff --git a/tools/validate_dotnet_migration_roadmap_v1.py b/tools/validate_dotnet_migration_roadmap_v1.py index 74afa71b..dfb0ea50 100644 --- a/tools/validate_dotnet_migration_roadmap_v1.py +++ b/tools/validate_dotnet_migration_roadmap_v1.py @@ -73,6 +73,7 @@ def main(argv: list[str] | None = None) -> int: alignment = data.get("alignment") or {} spec_task_map = alignment.get("spec_task_map") or {} + roadmap_section_map = alignment.get("roadmap_section_map") or {} if not spec_task_map: payload["missing"].append("alignment.spec_task_map") else: @@ -80,6 +81,13 @@ def main(argv: list[str] | None = None) -> int: "WBS-10.7", "WBS-10.8", "WBS-10.9", "WBS-10.10", "WBS-10.11", "WBS-10.12"): if spec_id not in spec_task_map: payload["missing"].append(f"alignment.{spec_id}") + if not roadmap_section_map: + payload["missing"].append("alignment.roadmap_section_map") + else: + for spec_id in ("WBS-10.1", "WBS-10.2", "WBS-10.3", "WBS-10.4", "WBS-10.5", "WBS-10.6", + "WBS-10.7", "WBS-10.8", "WBS-10.9", "WBS-10.10", "WBS-10.11", "WBS-10.12"): + if spec_id not in roadmap_section_map: + payload["missing"].append(f"alignment.roadmap_section_map.{spec_id}") payload["gate"] = "PASS" if not payload["missing"] else "FAIL" payload["message"] = (