PPT 템플릿 품질 게이트와 manifest 추천 흐름을 고도화한다

- PptxSkill에 template master clone 진단 코드와 Template diagnostics 출력 라인을 추가해 color fallback 원인을 asset missing / clone failure로 구분한다.

- PptQualityGatePolicy와 templates.manifest.json, PptxTemplateManifestCatalog를 확장해 manifest 메타데이터 기반 추천과 원인별 재루프 프롬프트를 연결한다.

- PptQualityGatePolicyTests, PptxTemplateManifestCatalogTests, PptxSkillTemplatePackTests, PptxSkillTemplateDiagnosticsTests를 보강하고 README.md 및 docs/DEVELOPMENT.md 이력을 2026-04-16 00:15 (KST) 기준으로 갱신한다.

검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_ppt_manifest_quality\\ -p:IntermediateOutputPath=obj\\verify_ppt_manifest_quality\\ / dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter PptQualityGatePolicyTests -p:OutputPath=bin\\verify_ppt_manifest_quality_tests\\ -p:IntermediateOutputPath=obj\\verify_ppt_manifest_quality_tests\\ 포함 15건 통과
This commit is contained in:
2026-04-16 00:16:36 +09:00
parent 13061fa3ca
commit db4ccd5df4
10 changed files with 781 additions and 102 deletions

View File

@@ -1711,3 +1711,31 @@ UI ?遺우쁽????域뱀뮆???귐뗫솯?醫딆춦 ???袁る퓮 ?臾믩씜 ??疫
- 검증:
- `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_chat_width_wrap\\ -p:IntermediateOutputPath=obj\\verify_chat_width_wrap\\` 경고 0 / 오류 0
- `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "ChatStreamingUiPolicyTests|ChatWindowSlashPolicyTests" -p:OutputPath=bin\\verify_chat_width_wrap_tests\\ -p:IntermediateOutputPath=obj\\verify_chat_width_wrap_tests\\` 통과 74
업데이트: 2026-04-16 00:15 (KST)
- PPT 템플릿 품질 보정 흐름을 manifest 중심으로 재구성했다.
- `src/AxCopilot/Services/Agent/PptQualityGatePolicy.cs`
- `PPT quality`, `Slide alerts`, `Needs work` 외에 `Template diagnostics:``color fallback` 문구를 함께 파싱한다.
- `asset missing`, `master clone failed`, `color fallback` 중 하나라도 남으면 재생성 후보로 판단한다.
- 재생성 프롬프트를 원인별로 분기해 `document_plan` 선행 여부, manifest 템플릿/`template_pack` 재선택, `master cloned` 결과 강제 유도를 포함한다.
- `src/AxCopilot/Services/Agent/PptxSkill.cs`
- `TryCloneMasterFromTemplate(...)``TemplateMasterCloneResult` 기반으로 바꿔 `openxml_package_error`, `missing_presentation_part`, `missing_slide_master`, `missing_slide_layout`, `clone_exception` 같은 진단 코드를 결과 문자열에 남긴다.
- 템플릿 복제 실패 시 `Template diagnostics:` 라인을 추가하고, `themeLabel``master clone failed:<reason> -> color fallback` 형태로 출력한다.
- `template_pack` 사용 시 manifest 추천 결과를 먼저 계산하고, 추천된 템플릿 key와 `tone/density/fidelityTier/reason`를 출력에 포함한다.
- `src/AxCopilot/Services/Agent/PptxTemplateManifestCatalog.cs`
- manifest 엔트리를 `tone`, `density`, `aspectHint`, `fidelityTier`, `supportsMasterClone`, `objectiveKeywords`, `audienceKeywords` 메타데이터를 갖는 클래스로 확장했다.
- `RecommendTemplate(packName, objective, audience)`를 추가해 `packHints + objectiveKeywords + audienceKeywords + tags + fidelityTier` 점수로 가장 적합한 템플릿을 고른다.
- `src/AxCopilot/Assets/ppt/templates.manifest.json`
- 실제 자산 파일을 Unicode escape 기반 JSON으로 정리하고, 위 메타데이터를 모두 반영했다.
- 이 manifest가 이제 단순 파일 매핑이 아니라 내장 템플릿 pack 추천 테이블 역할까지 담당한다.
- 테스트:
- `src/AxCopilot.Tests/Services/PptQualityGatePolicyTests.cs`
- 저품질 + clone failure, asset missing 고득점 케이스, clean deck 통과, retry prompt 분기 검증을 추가했다.
- `src/AxCopilot.Tests/Services/PptxTemplateManifestCatalogTests.cs`
- board/finance 신호에서 `core100`이 추천되는지와 manifest 메타데이터 로드를 검증한다.
- `src/AxCopilot.Tests/Services/PptxSkillTemplatePackTests.cs`
- `Template recommendation: core100`이 실제 출력에 포함되는지 확인한다.
- `src/AxCopilot.Tests/Services/PptxSkillTemplateDiagnosticsTests.cs`
- 손상된 `theme_file` 입력에서 deck 생성은 유지하면서 `master clone failed` 진단을 남기는 회귀를 고정했다.
- 검증:
- `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_ppt_manifest_quality\\ -p:IntermediateOutputPath=obj\\verify_ppt_manifest_quality\\` 경고 0 / 오류 0
- `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "PptQualityGatePolicyTests|PptxTemplateManifestCatalogTests|PptxSkillTemplatePackTests|PptxSkillTemplateDiagnosticsTests|PptxSkillAutoRepairTests|PptxSkillGoldenDeckTests" -p:OutputPath=bin\\verify_ppt_manifest_quality_tests\\ -p:IntermediateOutputPath=obj\\verify_ppt_manifest_quality_tests\\` 통과 15