fix(p1r): 修正 API 覆盖矩阵必填与入口归属

This commit is contained in:
zizi 2026-05-25 23:50:04 +08:00
parent 4084fce699
commit 0d16c21fd9
3 changed files with 75 additions and 81 deletions

View File

@ -1,5 +1,5 @@
{
"generatedAt": "2026-05-25T09:12:54+00:00",
"generatedAt": "2026-05-25T04:07:18+00:00",
"sourceContracts": [
"docs/api-contracts/account/openapi.yaml",
"docs/api-contracts/ai/openapi.yaml",
@ -39,8 +39,7 @@
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-framework/muse-spring-boot-starter-mybatis/src/main/java/cn/iocoder/muse/framework/mybatis/core/muse/MuseContractPersistenceService.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java"
],
"serviceFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/service/address/AddressService.java",
@ -87,8 +86,7 @@
"implementationStatus": "generic_persistence",
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java"
],
"serviceFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/service/address/AddressService.java",
@ -135,8 +133,7 @@
"implementationStatus": "generic_persistence",
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java"
],
"serviceFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/service/address/AddressService.java",
@ -182,8 +179,7 @@
"implementationStatus": "generic_persistence",
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java"
],
"serviceFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/service/address/AddressService.java",
@ -231,8 +227,7 @@
"implementationStatus": "generic_persistence",
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java"
],
"serviceFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/service/address/AddressService.java",
@ -278,8 +273,7 @@
"implementationStatus": "generic_persistence",
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java"
],
"serviceFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/service/address/AddressService.java",
@ -325,8 +319,7 @@
"implementationStatus": "generic_persistence",
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java"
],
"serviceFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/service/address/AddressService.java",
@ -372,8 +365,7 @@
"implementationStatus": "generic_persistence",
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java"
],
"serviceFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/service/address/AddressService.java",
@ -419,8 +411,7 @@
"implementationStatus": "generic_persistence",
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java"
],
"serviceFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/service/address/AddressService.java",
@ -467,8 +458,7 @@
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-framework/muse-spring-boot-starter-mybatis/src/main/java/cn/iocoder/muse/framework/mybatis/core/muse/MuseContractPersistenceService.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java"
],
"serviceFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/service/address/AddressService.java",
@ -514,8 +504,7 @@
"implementationStatus": "generic_persistence",
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java"
],
"serviceFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/service/address/AddressService.java",
@ -562,8 +551,7 @@
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-framework/muse-spring-boot-starter-mybatis/src/main/java/cn/iocoder/muse/framework/mybatis/core/muse/MuseContractPersistenceService.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java"
],
"serviceFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/service/address/AddressService.java",
@ -610,8 +598,7 @@
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-framework/muse-spring-boot-starter-mybatis/src/main/java/cn/iocoder/muse/framework/mybatis/core/muse/MuseContractPersistenceService.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java"
],
"serviceFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/service/address/AddressService.java",
@ -657,7 +644,6 @@
"implementationStatus": "generic_persistence",
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
],
"serviceFiles": [
@ -705,7 +691,6 @@
"implementationStatus": "generic_persistence",
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
],
"serviceFiles": [
@ -752,7 +737,6 @@
"implementationStatus": "generic_persistence",
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
],
"serviceFiles": [
@ -802,7 +786,6 @@
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-framework/muse-spring-boot-starter-mybatis/src/main/java/cn/iocoder/muse/framework/mybatis/core/muse/MuseContractPersistenceService.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
],
"serviceFiles": [
@ -851,7 +834,6 @@
"implementationStatus": "generic_persistence",
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
],
"serviceFiles": [
@ -899,7 +881,6 @@
"implementationStatus": "generic_persistence",
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
],
"serviceFiles": [
@ -948,7 +929,6 @@
"implementationStatus": "generic_persistence",
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
],
"serviceFiles": [
@ -995,7 +975,6 @@
"implementationStatus": "generic_persistence",
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
],
"serviceFiles": [
@ -1043,7 +1022,6 @@
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-framework/muse-spring-boot-starter-mybatis/src/main/java/cn/iocoder/muse/framework/mybatis/core/muse/MuseContractPersistenceService.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
],
"serviceFiles": [
@ -1090,7 +1068,6 @@
"implementationStatus": "generic_persistence",
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
],
"serviceFiles": [
@ -1139,7 +1116,6 @@
"implementationStatus": "generic_persistence",
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
],
"serviceFiles": [
@ -1187,7 +1163,6 @@
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-framework/muse-spring-boot-starter-mybatis/src/main/java/cn/iocoder/muse/framework/mybatis/core/muse/MuseContractPersistenceService.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
],
"serviceFiles": [
@ -1234,7 +1209,6 @@
"implementationStatus": "generic_persistence",
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
],
"serviceFiles": [
@ -1281,7 +1255,6 @@
"implementationStatus": "generic_persistence",
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
],
"serviceFiles": [
@ -1328,7 +1301,6 @@
"implementationStatus": "generic_persistence",
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
],
"serviceFiles": [
@ -1377,7 +1349,6 @@
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-framework/muse-spring-boot-starter-mybatis/src/main/java/cn/iocoder/muse/framework/mybatis/core/muse/MuseContractPersistenceService.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
],
"serviceFiles": [
@ -1424,7 +1395,6 @@
"implementationStatus": "generic_persistence",
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/admin/AdminMuseAccountContractController.java",
"muse-cloud/muse-module-member/muse-module-member-server/src/main/java/cn/iocoder/muse/module/member/controller/app/AppMuseAccountContractController.java"
],
"serviceFiles": [
@ -1769,7 +1739,7 @@
"path": "/admin-api/muse/ai/evaluation-runs",
"operationId": "adminStartEvaluationRun",
"isWrite": true,
"requiresCommandId": true,
"requiresCommandId": false,
"externalDependencies": [
"New-API",
"SSE"
@ -1932,7 +1902,7 @@
"path": "/admin-api/muse/ai/prompts/{promptKey}/versions",
"operationId": "adminCreatePromptVersion",
"isWrite": true,
"requiresCommandId": true,
"requiresCommandId": false,
"externalDependencies": [
"New-API",
"SSE"
@ -2096,7 +2066,7 @@
"path": "/admin-api/muse/ai/quality-policies/{policyKey}/versions",
"operationId": "adminCreateQualityPolicyVersion",
"isWrite": true,
"requiresCommandId": true,
"requiresCommandId": false,
"externalDependencies": [
"New-API",
"SSE"
@ -2160,8 +2130,7 @@
"implementationStatus": "generic_persistence",
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-module-ai/muse-module-ai-contract-server/src/main/java/cn/iocoder/muse/module/ai/controller/admin/AdminMuseAiContractController.java",
"muse-cloud/muse-module-ai/muse-module-ai-contract-server/src/main/java/cn/iocoder/muse/module/ai/controller/app/AppMuseAiContractController.java"
"muse-cloud/muse-module-ai/muse-module-ai-contract-server/src/main/java/cn/iocoder/muse/module/ai/controller/admin/AdminMuseAiContractController.java"
],
"serviceFiles": [
"muse-cloud/muse-module-ai/muse-module-ai-server/src/main/java/cn/iocoder/muse/module/ai/service/chat/AiChatConversationService.java",
@ -2594,8 +2563,7 @@
"implementationStatus": "generic_persistence",
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-module-ai/muse-module-ai-contract-server/src/main/java/cn/iocoder/muse/module/ai/controller/admin/AdminMuseAiContractController.java",
"muse-cloud/muse-module-ai/muse-module-ai-contract-server/src/main/java/cn/iocoder/muse/module/ai/controller/app/AppMuseAiContractController.java"
"muse-cloud/muse-module-ai/muse-module-ai-contract-server/src/main/java/cn/iocoder/muse/module/ai/controller/admin/AdminMuseAiContractController.java"
],
"serviceFiles": [
"muse-cloud/muse-module-ai/muse-module-ai-server/src/main/java/cn/iocoder/muse/module/ai/service/chat/AiChatConversationService.java",
@ -2640,7 +2608,7 @@
"path": "/admin-api/muse/jobs/{jobId}/cancel",
"operationId": "adminCancelJob",
"isWrite": true,
"requiresCommandId": true,
"requiresCommandId": false,
"externalDependencies": [
"New-API",
"SSE"
@ -2650,8 +2618,7 @@
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-framework/muse-spring-boot-starter-mybatis/src/main/java/cn/iocoder/muse/framework/mybatis/core/muse/MuseContractPersistenceService.java",
"muse-cloud/muse-module-ai/muse-module-ai-contract-server/src/main/java/cn/iocoder/muse/module/ai/controller/admin/AdminMuseAiContractController.java",
"muse-cloud/muse-module-ai/muse-module-ai-contract-server/src/main/java/cn/iocoder/muse/module/ai/controller/app/AppMuseAiContractController.java"
"muse-cloud/muse-module-ai/muse-module-ai-contract-server/src/main/java/cn/iocoder/muse/module/ai/controller/admin/AdminMuseAiContractController.java"
],
"serviceFiles": [
"muse-cloud/muse-module-ai/muse-module-ai-server/src/main/java/cn/iocoder/muse/module/ai/service/chat/AiChatConversationService.java",
@ -2696,7 +2663,7 @@
"path": "/admin-api/muse/jobs/{jobId}/retry",
"operationId": "adminRetryJob",
"isWrite": true,
"requiresCommandId": true,
"requiresCommandId": false,
"externalDependencies": [
"New-API",
"SSE"
@ -2859,7 +2826,7 @@
"path": "/admin-api/muse/source-events/{eventId}/retry",
"operationId": "adminRetrySourceEvent",
"isWrite": true,
"requiresCommandId": true,
"requiresCommandId": false,
"externalDependencies": [
"New-API",
"SSE"
@ -2968,7 +2935,7 @@
"path": "/app-api/muse/agents",
"operationId": "createUserAgent",
"isWrite": true,
"requiresCommandId": true,
"requiresCommandId": false,
"externalDependencies": [
"New-API",
"SSE"
@ -3078,7 +3045,7 @@
"path": "/app-api/muse/agents/{agentId}/versions",
"operationId": "createAgentVersion",
"isWrite": true,
"requiresCommandId": true,
"requiresCommandId": false,
"externalDependencies": [
"New-API",
"SSE"
@ -3143,7 +3110,6 @@
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-framework/muse-spring-boot-starter-mybatis/src/main/java/cn/iocoder/muse/framework/mybatis/core/muse/MuseContractPersistenceService.java",
"muse-cloud/muse-module-ai/muse-module-ai-contract-server/src/main/java/cn/iocoder/muse/module/ai/controller/admin/AdminMuseAiContractController.java",
"muse-cloud/muse-module-ai/muse-module-ai-contract-server/src/main/java/cn/iocoder/muse/module/ai/controller/app/AppMuseAiContractController.java"
],
"serviceFiles": [
@ -3306,7 +3272,6 @@
"implementationStatus": "generic_persistence",
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-module-ai/muse-module-ai-contract-server/src/main/java/cn/iocoder/muse/module/ai/controller/admin/AdminMuseAiContractController.java",
"muse-cloud/muse-module-ai/muse-module-ai-contract-server/src/main/java/cn/iocoder/muse/module/ai/controller/app/AppMuseAiContractController.java"
],
"serviceFiles": [
@ -3352,7 +3317,7 @@
"path": "/app-api/muse/jobs/{jobId}/cancel",
"operationId": "cancelUserJob",
"isWrite": true,
"requiresCommandId": true,
"requiresCommandId": false,
"externalDependencies": [
"New-API",
"SSE"
@ -3362,7 +3327,6 @@
"completionStatus": "incomplete",
"controllerFiles": [
"muse-cloud/muse-framework/muse-spring-boot-starter-mybatis/src/main/java/cn/iocoder/muse/framework/mybatis/core/muse/MuseContractPersistenceService.java",
"muse-cloud/muse-module-ai/muse-module-ai-contract-server/src/main/java/cn/iocoder/muse/module/ai/controller/admin/AdminMuseAiContractController.java",
"muse-cloud/muse-module-ai/muse-module-ai-contract-server/src/main/java/cn/iocoder/muse/module/ai/controller/app/AppMuseAiContractController.java"
],
"serviceFiles": [
@ -4815,7 +4779,7 @@
"path": "/app-api/muse/works/{workId}/planning/candidates",
"operationId": "createPlanningCandidate",
"isWrite": true,
"requiresCommandId": true,
"requiresCommandId": false,
"externalDependencies": [],
"targetStage": "P1R-1 Content Real API",
"implementationStatus": "catch_all",

View File

@ -1,6 +1,6 @@
# P1R API Coverage Report
- Generated at: `2026-05-25T09:12:54+00:00`
- Generated at: `2026-05-25T04:07:18+00:00`
- Total operations: `233`
- Needs verification: `15`
- Incomplete: `218`

View File

@ -105,7 +105,7 @@ def collect_operations() -> list[Operation]:
side = detect_side(full_path)
is_write = method.upper() not in {"GET", "HEAD", "OPTIONS"}
requires_command_id = operation_requires_command_id(operation_doc, document)
implementation = classify_implementation(full_path, method.upper(), operation_id, domain, source_index)
implementation = classify_implementation(full_path, side, method.upper(), operation_id, domain, source_index)
operations.append(
Operation(
domain=domain,
@ -162,11 +162,12 @@ def build_source_index() -> dict[str, Any]:
}
def classify_implementation(path: str, method: str, operation_id: str, domain: str, source_index: dict[str, Any]) -> dict[str, Any]:
def classify_implementation(path: str, side: str, method: str, operation_id: str, domain: str, source_index: dict[str, Any]) -> dict[str, Any]:
matching_dedicated = files_containing_route_or_operation(
source_index["dedicatedControllers"],
source_index["allText"],
path,
side,
method,
operation_id,
allow_operation_id_fallback=False,
@ -176,6 +177,7 @@ def classify_implementation(path: str, method: str, operation_id: str, domain: s
source_index["contractSupportFiles"],
source_index["allText"],
path,
side,
method,
operation_id,
allow_operation_id_fallback=False,
@ -184,11 +186,12 @@ def classify_implementation(path: str, method: str, operation_id: str, domain: s
source_index["genericPersistenceFiles"],
source_index["allText"],
path,
side,
method,
operation_id,
allow_operation_id_fallback=True,
)
matching_sse = files_containing_sse_placeholder_route(source_index["ssePlaceholderMappings"], path, method)
matching_sse = files_containing_sse_placeholder_route(source_index["ssePlaceholderMappings"], path, side, method)
if matching_sse:
return status(
@ -239,6 +242,7 @@ def files_containing_route_or_operation(
files: list[str],
text_by_file: dict[str, str],
path: str,
side: str,
method: str,
operation_id: str,
allow_operation_id_fallback: bool,
@ -246,6 +250,8 @@ def files_containing_route_or_operation(
route_variants = route_variants_for(path)
matches: list[str] = []
for file_path in files:
if not file_matches_side(file_path, side):
continue
text = text_by_file[file_path]
route_mappings = extract_route_mappings(text)
route_matched = any(route_mapping_matches(route_mapping, method, route_variants) for route_mapping in route_mappings)
@ -255,15 +261,25 @@ def files_containing_route_or_operation(
return matches
def files_containing_sse_placeholder_route(route_by_file: dict[str, list[RouteMapping]], path: str, method: str) -> list[str]:
def files_containing_sse_placeholder_route(route_by_file: dict[str, list[RouteMapping]], path: str, side: str, method: str) -> list[str]:
route_variants = route_variants_for(path)
matches: list[str] = []
for file_path, route_mappings in route_by_file.items():
if not file_matches_side(file_path, side):
continue
if any(route_mapping_matches(route_mapping, method, route_variants) for route_mapping in route_mappings):
matches.append(file_path)
return matches
def file_matches_side(file_path: str, side: str) -> bool:
if "/controller/admin/" in file_path:
return side == "admin"
if "/controller/app/" in file_path:
return side == "app"
return True
def route_variants_for(path: str) -> list[str]:
variants = {
path,
@ -353,41 +369,55 @@ def detect_side(path: str) -> str:
def operation_requires_command_id(operation_doc: dict[str, Any], document: dict[str, Any]) -> bool:
text = json.dumps(operation_doc, ensure_ascii=False)
if "commandId" in text or "X-Command-Id" in text:
if operation_has_required_command_header(operation_doc, document):
return True
# OpenAPI 操作通常通过 requestBody schema 引用本文件 components这里只解析本文件局部引用避免引入完整解析器
# 只把 schema.required 中的 commandId 视为必填properties 或 description 里的 commandId 不代表请求必须携带
for content_doc in (operation_doc.get("requestBody") or {}).get("content", {}).values():
if not isinstance(content_doc, dict):
continue
schema_doc = content_doc.get("schema")
if isinstance(schema_doc, dict) and local_schema_has_command_id(schema_doc, document, set()):
if isinstance(schema_doc, dict) and local_schema_requires_command_id(schema_doc, document, set()):
return True
return False
def local_schema_has_command_id(schema_doc: dict[str, Any], document: dict[str, Any], seen_refs: set[str]) -> bool:
def operation_has_required_command_header(operation_doc: dict[str, Any], document: dict[str, Any]) -> bool:
for parameter_doc in operation_doc.get("parameters") or []:
if not isinstance(parameter_doc, dict):
continue
resolved = resolve_parameter(parameter_doc, document)
if not isinstance(resolved, dict):
continue
if resolved.get("in") == "header" and resolved.get("name") == "X-Command-Id" and resolved.get("required") is True:
return True
return False
def resolve_parameter(parameter_doc: dict[str, Any], document: dict[str, Any]) -> Any:
ref = parameter_doc.get("$ref")
if isinstance(ref, str) and ref.startswith("#/"):
return resolve_local_ref(document, ref)
return parameter_doc
def local_schema_requires_command_id(schema_doc: dict[str, Any], document: dict[str, Any], seen_refs: set[str]) -> bool:
required_fields = schema_doc.get("required") or []
properties = schema_doc.get("properties") or {}
if "commandId" in required_fields or "commandId" in properties:
if "commandId" in required_fields:
return True
ref = schema_doc.get("$ref")
if isinstance(ref, str) and ref.startswith("#/") and ref not in seen_refs:
seen_refs.add(ref)
resolved = resolve_local_ref(document, ref)
if isinstance(resolved, dict) and local_schema_has_command_id(resolved, document, seen_refs):
if isinstance(resolved, dict) and local_schema_requires_command_id(resolved, document, seen_refs):
return True
# 只递归常见组合和嵌套 schema覆盖 requestBody DTO不处理跨文件响应 schema。
# 只递归 OpenAPI 组合 schema不递归 properties避免把可选 commandId 误判成必填
for key in ("allOf", "anyOf", "oneOf"):
for nested_schema in schema_doc.get(key) or []:
if isinstance(nested_schema, dict) and local_schema_has_command_id(nested_schema, document, seen_refs):
if isinstance(nested_schema, dict) and local_schema_requires_command_id(nested_schema, document, seen_refs):
return True
for nested_schema in properties.values():
if isinstance(nested_schema, dict) and local_schema_has_command_id(nested_schema, document, seen_refs):
return True
return False