create-yss-spec 3.5.6 → 3.5.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/create-yss-spec.js +3 -1
- package/cli-core.lock.json +10 -6
- package/package.json +4 -1
- package/src/api/_sync-service.js +3 -1
- package/src/command-runner.mjs +44 -9
- package/src/content-identity.js +111 -0
- package/src/runtime-store.mjs +650 -0
- package/src/template/asset-runtime.js +4 -1
- package/src/template/instance-runtime.js +23 -7
- package/src/validation/metadata.js +8 -0
- package/template/.agents/skills/.strategic-design-skills-manifest.json +1 -1
- package/template/.agents/skills/alibaba-java-code-style/SKILL.md +30 -36
- package/template/.agents/skills/archify/SKILL.md +2 -2
- package/template/.agents/skills/archify/scripts/yss-safe-deliver.mjs +10 -6
- package/template/.agents/skills/archify/test/yss-safe-deliver.test.mjs +9 -2
- package/template/.agents/skills/code-review/SKILL.md +19 -11
- package/template/.agents/skills/code-review/references/candidate-capture.md +1 -1
- package/template/.agents/skills/code-review/references/legacy-convergence.md +3 -1
- package/template/.agents/skills/code-review/references/review-axis-checklists.md +2 -0
- package/template/.agents/skills/code-review/references/yss-review-standards.md +4 -2
- package/template/.agents/skills/competitive-intelligence/SKILL.md +32 -74
- package/template/.agents/skills/file-export-download/SKILL.md +4 -73
- package/template/.agents/skills/file-export-download/references/binary-contract-example.md +26 -0
- package/template/.agents/skills/file-export-download/references/download-call-example.md +45 -0
- package/template/.agents/skills/formily-foundation/SKILL.md +6 -105
- package/template/.agents/skills/formily-foundation/references/async-save-example.md +57 -0
- package/template/.agents/skills/formily-foundation/references/query-layout.md +50 -0
- package/template/.agents/skills/formily-linkage-effects/SKILL.md +3 -116
- package/template/.agents/skills/formily-linkage-effects/references/linkage-example.md +116 -0
- package/template/.agents/skills/formily-mode-slot-detail/SKILL.md +3 -81
- package/template/.agents/skills/formily-mode-slot-detail/references/mode-slot-example.md +81 -0
- package/template/.agents/skills/formily-step-flow/SKILL.md +3 -143
- package/template/.agents/skills/formily-step-flow/references/step-flow-example.md +143 -0
- package/template/.agents/skills/handoff/SKILL.md +3 -1
- package/template/.agents/skills/i-have-adhd/SKILL.md +2 -2
- package/template/.agents/skills/i-have-adhd/references/yss-adaptation.md +2 -2
- package/template/.agents/skills/i-have-adhd/tests/verify-integration.mjs +7 -2
- package/template/.agents/skills/implement/SKILL.md +2 -2
- package/template/.agents/skills/llm-wiki/references/transactions.md +2 -2
- package/template/.agents/skills/llm-wiki/scripts/core.mjs +40 -2
- package/template/.agents/skills/llm-wiki/scripts/transaction.mjs +30 -27
- package/template/.agents/skills/llm-wiki/scripts/v2.test.mjs +38 -2
- package/template/.agents/skills/lombok/SKILL.md +2 -0
- package/template/.agents/skills/mapstruct/SKILL.md +2 -0
- package/template/.agents/skills/tdd/SKILL.md +2 -2
- package/template/.agents/skills/theme-token-usage/SKILL.md +6 -5
- package/template/.agents/skills/wayfinder/references/chart-map.md +2 -2
- package/template/.agents/skills/wayfinder/references/ticket-types.md +1 -1
- package/template/.agents/skills/yss-api-integration/SKILL.md +13 -50
- package/template/.agents/skills/yss-api-integration/references/orval-list-example.md +38 -0
- package/template/.agents/skills/yss-application/SKILL.md +11 -5
- package/template/.agents/skills/yss-audit-log/SKILL.md +8 -6
- package/template/.agents/skills/yss-audit-log/references/README.md +5 -5
- package/template/.agents/skills/yss-cache/SKILL.md +4 -4
- package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +7 -8
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +13 -6
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/command-examples.md +2 -0
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +28 -1
- package/template/.agents/skills/yss-design-system/SKILL.md +2 -2
- package/template/.agents/skills/yss-distributed-id/SKILL.md +4 -4
- package/template/.agents/skills/yss-dto/SKILL.md +9 -9
- package/template/.agents/skills/yss-dto/references/README.md +4 -4
- package/template/.agents/skills/yss-dto/references/wire-validation-checklist.md +4 -4
- package/template/.agents/skills/yss-excel-mvc/SKILL.md +4 -4
- package/template/.agents/skills/yss-exception/SKILL.md +42 -48
- package/template/.agents/skills/yss-formily-schema-generator/SKILL.md +26 -170
- package/template/.agents/skills/yss-formily-schema-generator/references/workflow.md +49 -193
- package/template/.agents/skills/yss-frontend-scaffold-generator/SKILL.md +14 -10
- package/template/.agents/skills/yss-implementation-contract-compiler/SKILL.md +2 -6
- package/template/.agents/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +15 -1
- package/template/.agents/skills/yss-layered-mvc-scaffold-generator/SKILL.md +1 -1
- package/template/.agents/skills/yss-mybatis/SKILL.md +4 -4
- package/template/.agents/skills/yss-openapi-draft-review/SKILL.md +6 -4
- package/template/.agents/skills/yss-openapi-draft-review/references/review-output.md +2 -0
- package/template/.agents/skills/yss-openapi-draft-review/references/semantic-review.md +3 -3
- package/template/.agents/skills/yss-openapi-governance/SKILL.md +5 -7
- package/template/.agents/skills/yss-openapi-governance/references/governance-output.md +2 -0
- package/template/.agents/skills/yss-openapi-governance/references/governance-workflow.md +3 -3
- package/template/.agents/skills/yss-product-lifecycle/SKILL.md +23 -21
- package/template/.agents/skills/yss-product-lifecycle/references/artifact-dependencies.md +1 -1
- package/template/.agents/skills/yss-product-lifecycle/references/matt-yss-adapter.md +25 -5
- package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +100 -4
- package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +35 -12
- package/template/.agents/skills/yss-product-lifecycle/references/state-model.md +3 -1
- package/template/.agents/skills/yss-product-lifecycle/references/user-decisions.md +3 -3
- package/template/.agents/skills/yss-prototype-stage/SKILL.md +1 -5
- package/template/.agents/skills/yss-repository/SKILL.md +2 -2
- package/template/.agents/skills/yss-research/SKILL.md +39 -48
- package/template/.agents/skills/yss-research/assets/competitive-evidence-template.yaml +146 -0
- package/template/.agents/skills/yss-research/references/competitive-analysis.md +76 -0
- package/template/.agents/skills/yss-research/references/competitive-analysis.schema.json +324 -0
- package/template/.agents/skills/yss-research/references/evidence-contract.md +8 -0
- package/template/.agents/skills/yss-research/scripts/lib/competitive-analysis.mjs +185 -0
- package/template/.agents/skills/yss-research/scripts/render-competitive-outputs.mjs +16 -0
- package/template/.agents/skills/yss-research/scripts/validate-research-package.mjs +6 -2
- package/template/.agents/skills/yss-research/tests/competitive-scenarios.test.mjs +270 -0
- package/template/.agents/skills/yss-resilience4j/SKILL.md +25 -31
- package/template/.agents/skills/yss-security-algorithm/SKILL.md +37 -43
- package/template/.agents/skills/yss-skill-source-index-refresh/SKILL.md +29 -36
- package/template/.agents/skills/yss-skill-source-index-refresh/references/backend-component-platform-compatibility.md +1 -1
- package/template/.agents/skills/yss-stage-decision/SKILL.md +2 -5
- package/template/.agents/skills/yss-tactical-design/SKILL.md +1 -1
- package/template/.agents/skills/yss-tactical-design/references/output-template.md +3 -3
- package/template/.agents/skills/yss-tactical-design/references/tactical-design-contract.md +1 -1
- package/template/.agents/skills/yss-technical-design/SKILL.md +6 -5
- package/template/.agents/skills/yss-ui/SKILL.md +7 -1
- package/template/.agents/skills/yss-ui/assets/docs/guide/gitlab-ci-integration.md +2 -2
- package/template/.agents/skills/yss-ui/references/checklist.md +38 -96
- package/template/.agents/skills/yss-ui/references/component-routing.md +3 -1
- package/template/.agents/skills/yss-ui/references/quick-recipes.md +17 -272
- package/template/.agents/skills/yss-ui/references/specialized-components.md +3 -3
- package/template/.agents/skills/yss-ui-business-page-generation/SKILL.md +1 -1
- package/template/.agents/skills/yss-up-springboot3/SKILL.md +19 -21
- package/template/.agents/skills/yss-userinfo/SKILL.md +27 -33
- package/template/.agents/skills/yss-validation/SKILL.md +26 -32
- package/template/.agents/skills/yss-web-controller/SKILL.md +11 -44
- package/template/.agents/skills/yss-web-controller/references/crud-generation.md +38 -0
- package/template/.agents/skills/ytable-usage/SKILL.md +2 -2
- package/template/.agents/skills/ytree-usage/SKILL.md +2 -80
- package/template/.agents/skills/ytree-usage/references/tree-and-confirmation-example.md +81 -0
- package/template/.codex/skills/alibaba-java-code-style/SKILL.md +30 -36
- package/template/.codex/skills/archify/SKILL.md +2 -2
- package/template/.codex/skills/archify/scripts/yss-safe-deliver.mjs +10 -6
- package/template/.codex/skills/archify/test/yss-safe-deliver.test.mjs +9 -2
- package/template/.codex/skills/code-review/SKILL.md +19 -11
- package/template/.codex/skills/code-review/references/candidate-capture.md +1 -1
- package/template/.codex/skills/code-review/references/legacy-convergence.md +3 -1
- package/template/.codex/skills/code-review/references/review-axis-checklists.md +2 -0
- package/template/.codex/skills/code-review/references/yss-review-standards.md +4 -2
- package/template/.codex/skills/competitive-intelligence/SKILL.md +32 -74
- package/template/.codex/skills/file-export-download/SKILL.md +4 -73
- package/template/.codex/skills/file-export-download/references/binary-contract-example.md +26 -0
- package/template/.codex/skills/file-export-download/references/download-call-example.md +45 -0
- package/template/.codex/skills/formily-foundation/SKILL.md +6 -105
- package/template/.codex/skills/formily-foundation/references/async-save-example.md +57 -0
- package/template/.codex/skills/formily-foundation/references/query-layout.md +50 -0
- package/template/.codex/skills/formily-linkage-effects/SKILL.md +3 -116
- package/template/.codex/skills/formily-linkage-effects/references/linkage-example.md +116 -0
- package/template/.codex/skills/formily-mode-slot-detail/SKILL.md +3 -81
- package/template/.codex/skills/formily-mode-slot-detail/references/mode-slot-example.md +81 -0
- package/template/.codex/skills/formily-step-flow/SKILL.md +3 -143
- package/template/.codex/skills/formily-step-flow/references/step-flow-example.md +143 -0
- package/template/.codex/skills/handoff/SKILL.md +3 -1
- package/template/.codex/skills/i-have-adhd/SKILL.md +2 -2
- package/template/.codex/skills/i-have-adhd/references/yss-adaptation.md +2 -2
- package/template/.codex/skills/i-have-adhd/tests/verify-integration.mjs +7 -2
- package/template/.codex/skills/implement/SKILL.md +2 -2
- package/template/.codex/skills/llm-wiki/references/transactions.md +2 -2
- package/template/.codex/skills/llm-wiki/scripts/core.mjs +40 -2
- package/template/.codex/skills/llm-wiki/scripts/transaction.mjs +30 -27
- package/template/.codex/skills/llm-wiki/scripts/v2.test.mjs +38 -2
- package/template/.codex/skills/lombok/SKILL.md +2 -0
- package/template/.codex/skills/mapstruct/SKILL.md +2 -0
- package/template/.codex/skills/product-design/references/communication-protocol.md +3 -3
- package/template/.codex/skills/product-design/references/critical-overrides.md +4 -5
- package/template/.codex/skills/product-design/skills/audit/SKILL.md +2 -4
- package/template/.codex/skills/product-design/skills/get-context/SKILL.md +6 -8
- package/template/.codex/skills/product-design/skills/ideate/SKILL.md +3 -3
- package/template/.codex/skills/product-design/skills/image-to-code/SKILL.md +3 -5
- package/template/.codex/skills/product-design/skills/index/SKILL.md +1 -1
- package/template/.codex/skills/product-design/skills/prototype/SKILL.md +2 -4
- package/template/.codex/skills/product-design/skills/research/SKILL.md +4 -6
- package/template/.codex/skills/product-design/skills/research/assets/research-brief-template.md +3 -3
- package/template/.codex/skills/product-design/skills/share/SKILL.md +2 -4
- package/template/.codex/skills/product-design/skills/url-to-code/SKILL.md +2 -4
- package/template/.codex/skills/product-design/skills/user-context/SKILL.md +1 -1
- package/template/.codex/skills/tdd/SKILL.md +2 -2
- package/template/.codex/skills/theme-token-usage/SKILL.md +6 -5
- package/template/.codex/skills/wayfinder/references/chart-map.md +2 -2
- package/template/.codex/skills/wayfinder/references/ticket-types.md +1 -1
- package/template/.codex/skills/yss-api-integration/SKILL.md +13 -50
- package/template/.codex/skills/yss-api-integration/references/orval-list-example.md +38 -0
- package/template/.codex/skills/yss-application/SKILL.md +11 -5
- package/template/.codex/skills/yss-audit-log/SKILL.md +8 -6
- package/template/.codex/skills/yss-audit-log/references/README.md +5 -5
- package/template/.codex/skills/yss-cache/SKILL.md +4 -4
- package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +7 -8
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +13 -6
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/command-examples.md +2 -0
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +28 -1
- package/template/.codex/skills/yss-design-system/SKILL.md +2 -2
- package/template/.codex/skills/yss-distributed-id/SKILL.md +4 -4
- package/template/.codex/skills/yss-dto/SKILL.md +9 -9
- package/template/.codex/skills/yss-dto/references/README.md +4 -4
- package/template/.codex/skills/yss-dto/references/wire-validation-checklist.md +4 -4
- package/template/.codex/skills/yss-excel-mvc/SKILL.md +4 -4
- package/template/.codex/skills/yss-exception/SKILL.md +42 -48
- package/template/.codex/skills/yss-formily-schema-generator/SKILL.md +26 -170
- package/template/.codex/skills/yss-formily-schema-generator/references/workflow.md +49 -193
- package/template/.codex/skills/yss-frontend-scaffold-generator/SKILL.md +14 -10
- package/template/.codex/skills/yss-implementation-contract-compiler/SKILL.md +2 -6
- package/template/.codex/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +15 -1
- package/template/.codex/skills/yss-layered-mvc-scaffold-generator/SKILL.md +1 -1
- package/template/.codex/skills/yss-mybatis/SKILL.md +4 -4
- package/template/.codex/skills/yss-openapi-draft-review/SKILL.md +6 -4
- package/template/.codex/skills/yss-openapi-draft-review/references/review-output.md +2 -0
- package/template/.codex/skills/yss-openapi-draft-review/references/semantic-review.md +3 -3
- package/template/.codex/skills/yss-openapi-governance/SKILL.md +5 -7
- package/template/.codex/skills/yss-openapi-governance/references/governance-output.md +2 -0
- package/template/.codex/skills/yss-openapi-governance/references/governance-workflow.md +3 -3
- package/template/.codex/skills/yss-product-lifecycle/SKILL.md +23 -21
- package/template/.codex/skills/yss-product-lifecycle/references/artifact-dependencies.md +1 -1
- package/template/.codex/skills/yss-product-lifecycle/references/matt-yss-adapter.md +25 -5
- package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +100 -4
- package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +35 -12
- package/template/.codex/skills/yss-product-lifecycle/references/state-model.md +3 -1
- package/template/.codex/skills/yss-product-lifecycle/references/user-decisions.md +3 -3
- package/template/.codex/skills/yss-prototype-stage/SKILL.md +1 -5
- package/template/.codex/skills/yss-repository/SKILL.md +2 -2
- package/template/.codex/skills/yss-research/SKILL.md +39 -48
- package/template/.codex/skills/yss-research/assets/competitive-evidence-template.yaml +146 -0
- package/template/.codex/skills/yss-research/references/competitive-analysis.md +76 -0
- package/template/.codex/skills/yss-research/references/competitive-analysis.schema.json +324 -0
- package/template/.codex/skills/yss-research/references/evidence-contract.md +8 -0
- package/template/.codex/skills/yss-research/scripts/lib/competitive-analysis.mjs +185 -0
- package/template/.codex/skills/yss-research/scripts/render-competitive-outputs.mjs +16 -0
- package/template/.codex/skills/yss-research/scripts/validate-research-package.mjs +6 -2
- package/template/.codex/skills/yss-research/tests/competitive-scenarios.test.mjs +270 -0
- package/template/.codex/skills/yss-resilience4j/SKILL.md +25 -31
- package/template/.codex/skills/yss-security-algorithm/SKILL.md +37 -43
- package/template/.codex/skills/yss-skill-source-index-refresh/SKILL.md +29 -36
- package/template/.codex/skills/yss-skill-source-index-refresh/references/backend-component-platform-compatibility.md +1 -1
- package/template/.codex/skills/yss-stage-decision/SKILL.md +2 -5
- package/template/.codex/skills/yss-tactical-design/SKILL.md +1 -1
- package/template/.codex/skills/yss-tactical-design/references/output-template.md +3 -3
- package/template/.codex/skills/yss-tactical-design/references/tactical-design-contract.md +1 -1
- package/template/.codex/skills/yss-technical-design/SKILL.md +6 -5
- package/template/.codex/skills/yss-ui/SKILL.md +7 -1
- package/template/.codex/skills/yss-ui/assets/docs/guide/gitlab-ci-integration.md +2 -2
- package/template/.codex/skills/yss-ui/references/checklist.md +38 -96
- package/template/.codex/skills/yss-ui/references/component-routing.md +3 -1
- package/template/.codex/skills/yss-ui/references/quick-recipes.md +17 -272
- package/template/.codex/skills/yss-ui/references/specialized-components.md +3 -3
- package/template/.codex/skills/yss-ui-business-page-generation/SKILL.md +1 -1
- package/template/.codex/skills/yss-up-springboot3/SKILL.md +19 -21
- package/template/.codex/skills/yss-userinfo/SKILL.md +27 -33
- package/template/.codex/skills/yss-validation/SKILL.md +26 -32
- package/template/.codex/skills/yss-web-controller/SKILL.md +11 -44
- package/template/.codex/skills/yss-web-controller/references/crud-generation.md +38 -0
- package/template/.codex/skills/ytable-usage/SKILL.md +2 -2
- package/template/.codex/skills/ytree-usage/SKILL.md +2 -80
- package/template/.codex/skills/ytree-usage/references/tree-and-confirmation-example.md +81 -0
- package/template/.cursor/skills/alibaba-java-code-style/SKILL.md +30 -36
- package/template/.cursor/skills/archify/SKILL.md +2 -2
- package/template/.cursor/skills/archify/scripts/yss-safe-deliver.mjs +10 -6
- package/template/.cursor/skills/archify/test/yss-safe-deliver.test.mjs +9 -2
- package/template/.cursor/skills/code-review/SKILL.md +19 -11
- package/template/.cursor/skills/code-review/references/candidate-capture.md +1 -1
- package/template/.cursor/skills/code-review/references/legacy-convergence.md +3 -1
- package/template/.cursor/skills/code-review/references/review-axis-checklists.md +2 -0
- package/template/.cursor/skills/code-review/references/yss-review-standards.md +4 -2
- package/template/.cursor/skills/competitive-intelligence/SKILL.md +32 -74
- package/template/.cursor/skills/file-export-download/SKILL.md +4 -73
- package/template/.cursor/skills/file-export-download/references/binary-contract-example.md +26 -0
- package/template/.cursor/skills/file-export-download/references/download-call-example.md +45 -0
- package/template/.cursor/skills/formily-foundation/SKILL.md +6 -105
- package/template/.cursor/skills/formily-foundation/references/async-save-example.md +57 -0
- package/template/.cursor/skills/formily-foundation/references/query-layout.md +50 -0
- package/template/.cursor/skills/formily-linkage-effects/SKILL.md +3 -116
- package/template/.cursor/skills/formily-linkage-effects/references/linkage-example.md +116 -0
- package/template/.cursor/skills/formily-mode-slot-detail/SKILL.md +3 -81
- package/template/.cursor/skills/formily-mode-slot-detail/references/mode-slot-example.md +81 -0
- package/template/.cursor/skills/formily-step-flow/SKILL.md +3 -143
- package/template/.cursor/skills/formily-step-flow/references/step-flow-example.md +143 -0
- package/template/.cursor/skills/handoff/SKILL.md +3 -1
- package/template/.cursor/skills/i-have-adhd/SKILL.md +2 -2
- package/template/.cursor/skills/i-have-adhd/references/yss-adaptation.md +2 -2
- package/template/.cursor/skills/i-have-adhd/tests/verify-integration.mjs +7 -2
- package/template/.cursor/skills/implement/SKILL.md +2 -2
- package/template/.cursor/skills/llm-wiki/references/transactions.md +2 -2
- package/template/.cursor/skills/llm-wiki/scripts/core.mjs +40 -2
- package/template/.cursor/skills/llm-wiki/scripts/transaction.mjs +30 -27
- package/template/.cursor/skills/llm-wiki/scripts/v2.test.mjs +38 -2
- package/template/.cursor/skills/lombok/SKILL.md +2 -0
- package/template/.cursor/skills/mapstruct/SKILL.md +2 -0
- package/template/.cursor/skills/tdd/SKILL.md +2 -2
- package/template/.cursor/skills/theme-token-usage/SKILL.md +6 -5
- package/template/.cursor/skills/wayfinder/references/chart-map.md +2 -2
- package/template/.cursor/skills/wayfinder/references/ticket-types.md +1 -1
- package/template/.cursor/skills/yss-api-integration/SKILL.md +13 -50
- package/template/.cursor/skills/yss-api-integration/references/orval-list-example.md +38 -0
- package/template/.cursor/skills/yss-application/SKILL.md +11 -5
- package/template/.cursor/skills/yss-audit-log/SKILL.md +8 -6
- package/template/.cursor/skills/yss-audit-log/references/README.md +5 -5
- package/template/.cursor/skills/yss-cache/SKILL.md +4 -4
- package/template/.cursor/skills/yss-ddd-scaffold-generator/SKILL.md +7 -8
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +13 -6
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/command-examples.md +2 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +28 -1
- package/template/.cursor/skills/yss-design-system/SKILL.md +2 -2
- package/template/.cursor/skills/yss-distributed-id/SKILL.md +4 -4
- package/template/.cursor/skills/yss-dto/SKILL.md +9 -9
- package/template/.cursor/skills/yss-dto/references/README.md +4 -4
- package/template/.cursor/skills/yss-dto/references/wire-validation-checklist.md +4 -4
- package/template/.cursor/skills/yss-excel-mvc/SKILL.md +4 -4
- package/template/.cursor/skills/yss-exception/SKILL.md +42 -48
- package/template/.cursor/skills/yss-formily-schema-generator/SKILL.md +26 -170
- package/template/.cursor/skills/yss-formily-schema-generator/references/workflow.md +49 -193
- package/template/.cursor/skills/yss-frontend-scaffold-generator/SKILL.md +14 -10
- package/template/.cursor/skills/yss-implementation-contract-compiler/SKILL.md +2 -6
- package/template/.cursor/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +15 -1
- package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/SKILL.md +1 -1
- package/template/.cursor/skills/yss-mybatis/SKILL.md +4 -4
- package/template/.cursor/skills/yss-openapi-draft-review/SKILL.md +6 -4
- package/template/.cursor/skills/yss-openapi-draft-review/references/review-output.md +2 -0
- package/template/.cursor/skills/yss-openapi-draft-review/references/semantic-review.md +3 -3
- package/template/.cursor/skills/yss-openapi-governance/SKILL.md +5 -7
- package/template/.cursor/skills/yss-openapi-governance/references/governance-output.md +2 -0
- package/template/.cursor/skills/yss-openapi-governance/references/governance-workflow.md +3 -3
- package/template/.cursor/skills/yss-product-lifecycle/SKILL.md +23 -21
- package/template/.cursor/skills/yss-product-lifecycle/references/artifact-dependencies.md +1 -1
- package/template/.cursor/skills/yss-product-lifecycle/references/matt-yss-adapter.md +25 -5
- package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +100 -4
- package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +35 -12
- package/template/.cursor/skills/yss-product-lifecycle/references/state-model.md +3 -1
- package/template/.cursor/skills/yss-product-lifecycle/references/user-decisions.md +3 -3
- package/template/.cursor/skills/yss-prototype-stage/SKILL.md +1 -5
- package/template/.cursor/skills/yss-repository/SKILL.md +2 -2
- package/template/.cursor/skills/yss-research/SKILL.md +39 -48
- package/template/.cursor/skills/yss-research/assets/competitive-evidence-template.yaml +146 -0
- package/template/.cursor/skills/yss-research/references/competitive-analysis.md +76 -0
- package/template/.cursor/skills/yss-research/references/competitive-analysis.schema.json +324 -0
- package/template/.cursor/skills/yss-research/references/evidence-contract.md +8 -0
- package/template/.cursor/skills/yss-research/scripts/lib/competitive-analysis.mjs +185 -0
- package/template/.cursor/skills/yss-research/scripts/render-competitive-outputs.mjs +16 -0
- package/template/.cursor/skills/yss-research/scripts/validate-research-package.mjs +6 -2
- package/template/.cursor/skills/yss-research/tests/competitive-scenarios.test.mjs +270 -0
- package/template/.cursor/skills/yss-resilience4j/SKILL.md +25 -31
- package/template/.cursor/skills/yss-security-algorithm/SKILL.md +37 -43
- package/template/.cursor/skills/yss-skill-source-index-refresh/SKILL.md +29 -36
- package/template/.cursor/skills/yss-skill-source-index-refresh/references/backend-component-platform-compatibility.md +1 -1
- package/template/.cursor/skills/yss-stage-decision/SKILL.md +2 -5
- package/template/.cursor/skills/yss-tactical-design/SKILL.md +1 -1
- package/template/.cursor/skills/yss-tactical-design/references/output-template.md +3 -3
- package/template/.cursor/skills/yss-tactical-design/references/tactical-design-contract.md +1 -1
- package/template/.cursor/skills/yss-technical-design/SKILL.md +6 -5
- package/template/.cursor/skills/yss-ui/SKILL.md +7 -1
- package/template/.cursor/skills/yss-ui/assets/docs/guide/gitlab-ci-integration.md +2 -2
- package/template/.cursor/skills/yss-ui/references/checklist.md +38 -96
- package/template/.cursor/skills/yss-ui/references/component-routing.md +3 -1
- package/template/.cursor/skills/yss-ui/references/quick-recipes.md +17 -272
- package/template/.cursor/skills/yss-ui/references/specialized-components.md +3 -3
- package/template/.cursor/skills/yss-ui-business-page-generation/SKILL.md +1 -1
- package/template/.cursor/skills/yss-up-springboot3/SKILL.md +19 -21
- package/template/.cursor/skills/yss-userinfo/SKILL.md +27 -33
- package/template/.cursor/skills/yss-validation/SKILL.md +26 -32
- package/template/.cursor/skills/yss-web-controller/SKILL.md +11 -44
- package/template/.cursor/skills/yss-web-controller/references/crud-generation.md +38 -0
- package/template/.cursor/skills/ytable-usage/SKILL.md +2 -2
- package/template/.cursor/skills/ytree-usage/SKILL.md +2 -80
- package/template/.cursor/skills/ytree-usage/references/tree-and-confirmation-example.md +81 -0
- package/template/.pi/skills/alibaba-java-code-style/SKILL.md +30 -36
- package/template/.pi/skills/archify/SKILL.md +2 -2
- package/template/.pi/skills/archify/scripts/yss-safe-deliver.mjs +10 -6
- package/template/.pi/skills/archify/test/yss-safe-deliver.test.mjs +9 -2
- package/template/.pi/skills/code-review/SKILL.md +19 -11
- package/template/.pi/skills/code-review/references/candidate-capture.md +1 -1
- package/template/.pi/skills/code-review/references/legacy-convergence.md +3 -1
- package/template/.pi/skills/code-review/references/review-axis-checklists.md +2 -0
- package/template/.pi/skills/code-review/references/yss-review-standards.md +4 -2
- package/template/.pi/skills/competitive-intelligence/SKILL.md +32 -74
- package/template/.pi/skills/file-export-download/SKILL.md +4 -73
- package/template/.pi/skills/file-export-download/references/binary-contract-example.md +26 -0
- package/template/.pi/skills/file-export-download/references/download-call-example.md +45 -0
- package/template/.pi/skills/formily-foundation/SKILL.md +6 -105
- package/template/.pi/skills/formily-foundation/references/async-save-example.md +57 -0
- package/template/.pi/skills/formily-foundation/references/query-layout.md +50 -0
- package/template/.pi/skills/formily-linkage-effects/SKILL.md +3 -116
- package/template/.pi/skills/formily-linkage-effects/references/linkage-example.md +116 -0
- package/template/.pi/skills/formily-mode-slot-detail/SKILL.md +3 -81
- package/template/.pi/skills/formily-mode-slot-detail/references/mode-slot-example.md +81 -0
- package/template/.pi/skills/formily-step-flow/SKILL.md +3 -143
- package/template/.pi/skills/formily-step-flow/references/step-flow-example.md +143 -0
- package/template/.pi/skills/handoff/SKILL.md +3 -1
- package/template/.pi/skills/i-have-adhd/SKILL.md +2 -2
- package/template/.pi/skills/i-have-adhd/references/yss-adaptation.md +2 -2
- package/template/.pi/skills/i-have-adhd/tests/verify-integration.mjs +7 -2
- package/template/.pi/skills/implement/SKILL.md +2 -2
- package/template/.pi/skills/llm-wiki/references/transactions.md +2 -2
- package/template/.pi/skills/llm-wiki/scripts/core.mjs +40 -2
- package/template/.pi/skills/llm-wiki/scripts/transaction.mjs +30 -27
- package/template/.pi/skills/llm-wiki/scripts/v2.test.mjs +38 -2
- package/template/.pi/skills/lombok/SKILL.md +2 -0
- package/template/.pi/skills/mapstruct/SKILL.md +2 -0
- package/template/.pi/skills/tdd/SKILL.md +2 -2
- package/template/.pi/skills/theme-token-usage/SKILL.md +6 -5
- package/template/.pi/skills/wayfinder/references/chart-map.md +2 -2
- package/template/.pi/skills/wayfinder/references/ticket-types.md +1 -1
- package/template/.pi/skills/yss-api-integration/SKILL.md +13 -50
- package/template/.pi/skills/yss-api-integration/references/orval-list-example.md +38 -0
- package/template/.pi/skills/yss-application/SKILL.md +11 -5
- package/template/.pi/skills/yss-audit-log/SKILL.md +8 -6
- package/template/.pi/skills/yss-audit-log/references/README.md +5 -5
- package/template/.pi/skills/yss-cache/SKILL.md +4 -4
- package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +7 -8
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +13 -6
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/command-examples.md +2 -0
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +28 -1
- package/template/.pi/skills/yss-design-system/SKILL.md +2 -2
- package/template/.pi/skills/yss-distributed-id/SKILL.md +4 -4
- package/template/.pi/skills/yss-dto/SKILL.md +9 -9
- package/template/.pi/skills/yss-dto/references/README.md +4 -4
- package/template/.pi/skills/yss-dto/references/wire-validation-checklist.md +4 -4
- package/template/.pi/skills/yss-excel-mvc/SKILL.md +4 -4
- package/template/.pi/skills/yss-exception/SKILL.md +42 -48
- package/template/.pi/skills/yss-formily-schema-generator/SKILL.md +26 -170
- package/template/.pi/skills/yss-formily-schema-generator/references/workflow.md +49 -193
- package/template/.pi/skills/yss-frontend-scaffold-generator/SKILL.md +14 -10
- package/template/.pi/skills/yss-implementation-contract-compiler/SKILL.md +2 -6
- package/template/.pi/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +15 -1
- package/template/.pi/skills/yss-layered-mvc-scaffold-generator/SKILL.md +1 -1
- package/template/.pi/skills/yss-mybatis/SKILL.md +4 -4
- package/template/.pi/skills/yss-openapi-draft-review/SKILL.md +6 -4
- package/template/.pi/skills/yss-openapi-draft-review/references/review-output.md +2 -0
- package/template/.pi/skills/yss-openapi-draft-review/references/semantic-review.md +3 -3
- package/template/.pi/skills/yss-openapi-governance/SKILL.md +5 -7
- package/template/.pi/skills/yss-openapi-governance/references/governance-output.md +2 -0
- package/template/.pi/skills/yss-openapi-governance/references/governance-workflow.md +3 -3
- package/template/.pi/skills/yss-product-lifecycle/SKILL.md +23 -21
- package/template/.pi/skills/yss-product-lifecycle/references/artifact-dependencies.md +1 -1
- package/template/.pi/skills/yss-product-lifecycle/references/matt-yss-adapter.md +25 -5
- package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +100 -4
- package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +35 -12
- package/template/.pi/skills/yss-product-lifecycle/references/state-model.md +3 -1
- package/template/.pi/skills/yss-product-lifecycle/references/user-decisions.md +3 -3
- package/template/.pi/skills/yss-prototype-stage/SKILL.md +1 -5
- package/template/.pi/skills/yss-repository/SKILL.md +2 -2
- package/template/.pi/skills/yss-research/SKILL.md +39 -48
- package/template/.pi/skills/yss-research/assets/competitive-evidence-template.yaml +146 -0
- package/template/.pi/skills/yss-research/references/competitive-analysis.md +76 -0
- package/template/.pi/skills/yss-research/references/competitive-analysis.schema.json +324 -0
- package/template/.pi/skills/yss-research/references/evidence-contract.md +8 -0
- package/template/.pi/skills/yss-research/scripts/lib/competitive-analysis.mjs +185 -0
- package/template/.pi/skills/yss-research/scripts/render-competitive-outputs.mjs +16 -0
- package/template/.pi/skills/yss-research/scripts/validate-research-package.mjs +6 -2
- package/template/.pi/skills/yss-research/tests/competitive-scenarios.test.mjs +270 -0
- package/template/.pi/skills/yss-resilience4j/SKILL.md +25 -31
- package/template/.pi/skills/yss-security-algorithm/SKILL.md +37 -43
- package/template/.pi/skills/yss-skill-source-index-refresh/SKILL.md +29 -36
- package/template/.pi/skills/yss-skill-source-index-refresh/references/backend-component-platform-compatibility.md +1 -1
- package/template/.pi/skills/yss-stage-decision/SKILL.md +2 -5
- package/template/.pi/skills/yss-tactical-design/SKILL.md +1 -1
- package/template/.pi/skills/yss-tactical-design/references/output-template.md +3 -3
- package/template/.pi/skills/yss-tactical-design/references/tactical-design-contract.md +1 -1
- package/template/.pi/skills/yss-technical-design/SKILL.md +6 -5
- package/template/.pi/skills/yss-ui/SKILL.md +7 -1
- package/template/.pi/skills/yss-ui/assets/docs/guide/gitlab-ci-integration.md +2 -2
- package/template/.pi/skills/yss-ui/references/checklist.md +38 -96
- package/template/.pi/skills/yss-ui/references/component-routing.md +3 -1
- package/template/.pi/skills/yss-ui/references/quick-recipes.md +17 -272
- package/template/.pi/skills/yss-ui/references/specialized-components.md +3 -3
- package/template/.pi/skills/yss-ui-business-page-generation/SKILL.md +1 -1
- package/template/.pi/skills/yss-up-springboot3/SKILL.md +19 -21
- package/template/.pi/skills/yss-userinfo/SKILL.md +27 -33
- package/template/.pi/skills/yss-validation/SKILL.md +26 -32
- package/template/.pi/skills/yss-web-controller/SKILL.md +11 -44
- package/template/.pi/skills/yss-web-controller/references/crud-generation.md +38 -0
- package/template/.pi/skills/ytable-usage/SKILL.md +2 -2
- package/template/.pi/skills/ytree-usage/SKILL.md +2 -80
- package/template/.pi/skills/ytree-usage/references/tree-and-confirmation-example.md +81 -0
- package/template/.template-spec/agents/backend-architecture-profiles.md +1 -1
- package/template/.template-spec/agents/digital-human-roles.md +5 -1
- package/template/.template-spec/agents/digital-human-roles.yaml +49 -1
- package/template/.template-spec/engineering/backend-platforms.json +1 -1
- package/template/.template-spec/plan/templates/competitive-analysis-template.md +38 -36
- package/template/.template-spec/plan/templates/competitive-matrix-template.md +37 -17
- package/template/.template-spec/process/document-writing.md +22 -3
- package/template/.template-spec/process/harness-process-tailoring.md +5 -1
- package/template/.template-spec/process/implementation-repo-integration.md +26 -8
- package/template/.template-spec/process/research-completion.md +2 -0
- package/template/.template-spec/process/runtime-storage.md +78 -0
- package/template/.template-spec/process/schemas/approval-context.schema.json +67 -0
- package/template/.template-spec/process/schemas/approval-record.schema.json +179 -16
- package/template/.template-spec/process/schemas/backend-delivery.schema.json +16 -0
- package/template/.template-spec/process/schemas/delivery-preflight-input.schema.json +4 -0
- package/template/.template-spec/process/schemas/digital-human-task-package.schema.json +236 -1
- package/template/.template-spec/process/schemas/implementation-repository-preparation-result.schema.json +335 -52
- package/template/.template-spec/process/schemas/lifecycle-checkpoint.schema.json +11 -0
- package/template/.template-spec/process/schemas/project-scaffold-contract.schema.json +3 -0
- package/template/.template-spec/process/schemas/review-bundle.schema.json +347 -35
- package/template/.template-spec/process/schemas/strategic-design-handoff-v3.schema.json +504 -0
- package/template/.template-spec/process/schemas/strategic-design-handoff-v4.schema.json +544 -8
- package/template/.template-spec/process/schemas/strategic-design-handoff-v5.schema.json +616 -0
- package/template/.template-spec/process/schemas/strategic-design-handoff.schema.json +616 -0
- package/template/.template-spec/process/schemas/strategic-handoff-domain-strategy-v3.schema.json +712 -109
- package/template/.template-spec/process/schemas/strategic-handoff-domain-strategy.schema.json +595 -90
- package/template/.template-spec/process/schemas/strategic-handoff-export-v2.schema.json +448 -0
- package/template/.template-spec/process/schemas/strategic-handoff-export.schema.json +392 -0
- package/template/.template-spec/process/schemas/strategic-handoff-stage-decision-package-v3.schema.json +556 -83
- package/template/.template-spec/process/schemas/strategic-handoff-stage-decision-package.schema.json +418 -57
- package/template/.template-spec/process/subagent-collaboration.md +7 -1
- package/template/.template-spec/templates/approval-record-template.json +7 -3
- package/template/.template-spec/templates/approval-record-template.yaml +8 -2
- package/template/.template-spec/templates/examples/lifecycle-writing-examples.md +92 -2
- package/template/.template-spec/templates/retro-report-template.md +10 -3
- package/template/.template-spec/templates/review-bundle-template.yaml +19 -10
- package/template/AGENTS.md +4 -3
- package/template/CONTEXT.md +2 -2
- package/template/README.md +2 -2
- package/template/scripts/advance-maintenance-iteration +51 -0
- package/template/scripts/lib/approval-checkpoint-discovery.mjs +26 -0
- package/template/scripts/lib/approval-consumption.mjs +35 -0
- package/template/scripts/lib/approval-current.mjs +111 -0
- package/template/scripts/lib/approval-record-io.mjs +56 -0
- package/template/scripts/lib/approval-record.mjs +79 -184
- package/template/scripts/lib/approved-execution-context.mjs +8 -6
- package/template/scripts/lib/asset-transactions.mjs +5 -1
- package/template/scripts/lib/backend-delivery.mjs +1 -1
- package/template/scripts/lib/backend-review.mjs +2 -1
- package/template/scripts/lib/backend-scaffold-prerequisites.mjs +3 -2
- package/template/scripts/lib/business-ticket-lifecycle.mjs +2 -1
- package/template/scripts/lib/checkpoint-commit.mjs +50 -0
- package/template/scripts/lib/command-runner.mjs +44 -9
- package/template/scripts/lib/content-identity.mjs +273 -0
- package/template/scripts/lib/delivery-preflight.mjs +2 -1
- package/template/scripts/lib/digital-human-roles.mjs +12 -5
- package/template/scripts/lib/drift-report.mjs +110 -0
- package/template/scripts/lib/existing-backend-architecture.mjs +4 -1
- package/template/scripts/lib/lifecycle-context-query.mjs +172 -11
- package/template/scripts/lib/lifecycle-controls.mjs +9 -19
- package/template/scripts/lib/lifecycle-presentation.mjs +5 -0
- package/template/scripts/lib/lifecycle-status.mjs +63 -12
- package/template/scripts/lib/lifecycle-transition.mjs +2 -1
- package/template/scripts/lib/maintenance-candidate.mjs +24 -30
- package/template/scripts/lib/maintenance-research.mjs +52 -8
- package/template/scripts/lib/maintenance-storage.mjs +81 -0
- package/template/scripts/lib/plan-spec-entry.mjs +2 -1
- package/template/scripts/lib/project-governance.mjs +2 -1
- package/template/scripts/lib/read-only-intake.mjs +44 -9
- package/template/scripts/lib/review-capabilities.mjs +234 -0
- package/template/scripts/lib/review-package.mjs +100 -0
- package/template/scripts/lib/runtime-store.mjs +650 -0
- package/template/scripts/lib/skill-registry.mjs +4 -4
- package/template/scripts/lib/strategic-handoff.mjs +22 -9
- package/template/scripts/lib/task-package.mjs +47 -16
- package/template/scripts/lifecycle-status +26 -1
- package/template/scripts/maintenance-path +11 -0
- package/template/scripts/prepare-review-package +8 -0
- package/template/scripts/project-ci +13 -3
- package/template/scripts/query-lifecycle-context +8 -1
- package/template/scripts/run-read-only-intake +2 -2
- package/template/scripts/runtime-store +40 -0
- package/template/scripts/verify-approval-record +21 -13
- package/template/scripts/verify-lifecycle-checkpoint +7 -3
- package/template/scripts/verify-project-instance +21 -1
- package/template/skills-lock.json +62 -61
- package/template.snapshot.json +4 -4
- package/vendor/cli-core/cli.mjs +2 -0
- package/vendor/cli-core/command-runner.mjs +44 -9
- package/vendor/cli-core/package.json +1 -1
- package/vendor/cli-core/runtime-store.mjs +650 -0
- package/vendor/cli-core/scaffold.mjs +4 -2
|
@@ -5,52 +5,46 @@ description: "接入或排查 YSS CurrentUserProvider、已认证 SecurityContex
|
|
|
5
5
|
|
|
6
6
|
# yss-userinfo
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
处理已认证当前用户、受信网关适配、自定义 `CurrentUserProvider` 和后台空上下文;身份来源须符合当前平台契约。
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
## 平台与源码门禁
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
接入、修改、代码生成或提供精确类名/配置前,必须读取并执行 [共享平台与源码门禁](../yss-skill-source-index-refresh/references/backend-component-platform-compatibility.md),以 `--skill yss-userinfo` 校验批准的平台线及匹配源码根。缺失、错配或漂移返回 `blocked`;不跨代回退,不在业务实现中升级、降级或替换组件。只读分诊可继续,但须标注未完成源码核验,不能据此宣称跨 Boot/JDK 兼容。
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
- Generated index: `references/source-index.md`
|
|
16
|
-
- Component path hints: `yss-microservice-components/yss-component-userinfo-starter`
|
|
14
|
+
## 源码定位
|
|
17
15
|
|
|
18
|
-
|
|
16
|
+
按 [源码定位策略](../yss-skill-source-index-refresh/references/source-location.md) 确认真实位置,再从 [平台索引](references/source-index.md) 定位当前任务需要的源码。`yss-microservice-components/yss-component-userinfo-starter` 仅是模块路径提示。
|
|
19
17
|
|
|
20
|
-
##
|
|
18
|
+
## 工作流
|
|
21
19
|
|
|
22
20
|
1. 先按已批准平台线读取对应索引;以下当前行为针对 `boot3-java17`,Boot 2 旧工程只按其独立索引做只读分诊和迁移。
|
|
23
|
-
2.
|
|
24
|
-
3.
|
|
21
|
+
2. 区分已认证当前用户、显式受信网关、自定义 `CurrentUserProvider` 与非 REST/后台 fallback。
|
|
22
|
+
3. 按所选任务核验 `CurrentUserProvider`、对应 provider、兼容 facade `AuthUserInfoUtil` 及 `DmUser` / `DmUserDetails`,不无条件读取所有实现。
|
|
25
23
|
4. 默认使用 `SecurityContextCurrentUserProvider`,只消费 Spring Security 已认证且非 anonymous 的 `Authentication`。JWT 的 signature、issuer、audience、expiry 与算法校验必须在资源服务器认证链完成。
|
|
26
24
|
5. `AuthUserInfoUtil` 是由 `CurrentUserProvider` 驱动的兼容 facade;业务代码可继续调用 `userInfo()`、`userName()`、`userCode()` 或 `currentUserJson()`,但不得自行解析 Header、JWT payload 或 Redis 身份缓存。
|
|
27
25
|
6. 只有显式启用 `yss.userinfo.trusted-gateway.enabled` 且配置非空 `trusted-proxies` 时,才启用 `TrustedGatewayHeaderCurrentUserProvider`;它只接受 remote address 在 allow-list 中的请求,并且 SecurityContext 结果优先。
|
|
28
|
-
7.
|
|
29
|
-
|
|
30
|
-
## Source-Backed Notes
|
|
26
|
+
7. 定时/后台任务的 provider 为空时,兼容 facade 返回独立的 `system` fallback;它不是已认证 system principal。
|
|
31
27
|
|
|
32
|
-
|
|
33
|
-
- Trusted gateway header names are `X-Username`, `X-Usercode`, and `X-LoginDisplayName`; the adapter requires a trusted proxy allow-list and a nonblank username.
|
|
34
|
-
- `UserInfoAutoConfiguration` installs SecurityContext as the default and composes the optional gateway provider behind it. A project-supplied `CurrentUserProvider` remains the explicit extension seam.
|
|
35
|
-
- The Boot 3 component does not parse an unverified Bearer payload and does not use Redis as an authentication fallback. Cache behavior is outside this identity provider contract.
|
|
28
|
+
## 平台行为核验
|
|
36
29
|
|
|
37
|
-
|
|
30
|
+
- `SecurityContextCurrentUserProvider` 支持 `UserInfo` principal 与已认证的 `OAuth2AuthenticatedPrincipal`;claim 映射在认证后进行。
|
|
31
|
+
- 受信网关 Header 为 `X-Username`、`X-Usercode` 和 `X-LoginDisplayName`;适配器要求可信代理 allow-list 与非空 username。
|
|
32
|
+
- `UserInfoAutoConfiguration` 默认使用 SecurityContext,再组合可选网关 provider;工程自定义 `CurrentUserProvider` 是显式扩展 seam。
|
|
33
|
+
- Boot 3 不解析未验证 Bearer payload,不以 Redis 作为认证 fallback;缓存行为不属于此身份 provider 合同。
|
|
38
34
|
|
|
39
|
-
|
|
40
|
-
- Request context exists before relying on servlet headers.
|
|
41
|
-
- Spring Security has authenticated the request before the provider reads the principal.
|
|
42
|
-
- When trusted gateway mode is enabled, at least one proxy address is allow-listed and untrusted remote addresses are rejected.
|
|
43
|
-
- Business code does not duplicate JWT or header parsing logic.
|
|
44
|
-
- SecurityContext/gateway/background precedence and empty-result behavior are covered by tests; `system` fallback is distinguished from an authenticated system user.
|
|
45
|
-
- User info propagation is tested for REST calls and async/background execution separately.
|
|
35
|
+
## 验收
|
|
46
36
|
|
|
47
|
-
|
|
37
|
+
- 核验所需依赖或 starter 已进入实际工程。
|
|
38
|
+
- 使用 Servlet Header 前核验 request context 存在。
|
|
39
|
+
- Provider 读取 principal 前,Spring Security 已完成请求认证。
|
|
40
|
+
- 受信网关启用时,至少一个代理地址进入 allow-list,且拒绝不可信 remote address。
|
|
41
|
+
- 业务代码不重复 JWT 或 Header 解析。
|
|
42
|
+
- 测试覆盖 SecurityContext/网关/后台的优先级与空结果,区分 `system` fallback 和已认证 system 用户。
|
|
43
|
+
- REST 与异步/后台执行分别验证用户信息传播。
|
|
48
44
|
|
|
49
|
-
|
|
50
|
-
- Do not replace component extension points with business-local framework code.
|
|
51
|
-
- Do not treat raw `Authorization` payloads or gateway headers as authenticated identity.
|
|
52
|
-
- Do not broaden the task into unrelated YSS components unless the user asks.
|
|
53
|
-
|
|
54
|
-
## 平台与源码门禁
|
|
45
|
+
## 修改边界
|
|
55
46
|
|
|
56
|
-
|
|
47
|
+
- 类名和配置 key 先核验当前索引与源码,不凭记忆补造。
|
|
48
|
+
- 使用组件已有扩展 seam,不以业务本地框架代码替换。
|
|
49
|
+
- 原始 `Authorization` payload 与网关 Header 不能直接作为已认证身份。
|
|
50
|
+
- 保持当前组件任务范围;扩展到其他组件须有用户要求或重新路由依据。
|
|
@@ -5,52 +5,46 @@ description: "接入或排查 YSS Bean Validation、校验消息与校验错误
|
|
|
5
5
|
|
|
6
6
|
# yss-validation
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
处理 YSS Bean Validation 注解、消息资源和校验失败映射;先区分 DTO 校验与当前不可用的历史 EL/parser 请求。
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
## 平台与源码门禁
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
接入、修改、代码生成或提供精确类名/配置前,必须读取并执行 [共享平台与源码门禁](../yss-skill-source-index-refresh/references/backend-component-platform-compatibility.md),以 `--skill yss-validation` 校验批准的平台线及匹配源码根。缺失、错配或漂移返回 `blocked`;不跨代回退,不在业务实现中升级、降级或替换组件。只读分诊可继续,但须标注未完成源码核验,不能据此宣称跨 Boot/JDK 兼容。
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
- Generated index: `references/source-index.md`
|
|
16
|
-
- Component path hints: `yss-microservice-components/yss-component-validation-jsr303`
|
|
14
|
+
## 源码定位
|
|
17
15
|
|
|
18
|
-
|
|
16
|
+
按 [源码定位策略](../yss-skill-source-index-refresh/references/source-location.md) 确认真实位置,再从 [平台索引](references/source-index.md) 定位当前任务需要的源码。`yss-microservice-components/yss-component-validation-jsr303` 仅是模块路径提示。
|
|
19
17
|
|
|
20
|
-
##
|
|
18
|
+
## 工作流
|
|
21
19
|
|
|
22
|
-
1.
|
|
23
|
-
2.
|
|
20
|
+
1. 区分 JSR-303 注解校验与表达式/EL parser 请求。
|
|
21
|
+
2. 从批准平台索引核验实际 POM、校验消息资源、消费 Controller 注解及匹配的异常 Advice。当前模块 README 为空,不作为前置证据。
|
|
24
22
|
3. 当前组件仓不存在历史 `yss-component-validation-engine-parent`;表达式、LiteFlow EL 或 `ExpressParserFactory` 请求返回 `blocked`,先确认真实组件来源和生命周期影响,不以旧索引或通用知识生成实现。
|
|
25
|
-
4.
|
|
23
|
+
4. 校验失败映射保持当前工程的 service/API 错误合同。
|
|
26
24
|
5. 消费工程基线选择 javax/jakarta,不自行升级 Java/Boot。MVC 输入校验放在 server/client,业务不变量由 service/core 验证;不生成 DDD Domain。HTTP 失败形态由 server 的合同测试验证。
|
|
27
25
|
|
|
28
|
-
##
|
|
26
|
+
## 能力边界
|
|
29
27
|
|
|
30
|
-
- `validation-jsr303
|
|
28
|
+
- `validation-jsr303` 当前聚合依赖与消息资源,没有本地 Validator、Advice 或自动配置 Java 实现。
|
|
31
29
|
- 历史 `validation-el-parser` / `ExpressParserFactory`:当前源码根不存在,状态为 `blocked`,不得作为可用 capability。
|
|
32
30
|
|
|
33
|
-
##
|
|
34
|
-
|
|
35
|
-
- If an EL/parser capability is requested, stop and resolve its actual repository/module instead of assuming the removed path.
|
|
36
|
-
- If validation annotations do not fire, check controller/service validation annotations and Spring validation starter wiring before editing parser code.
|
|
37
|
-
- The component README is empty; use the POM, message resources, Controller annotations, and `GlobalExceptionAdvice` as current evidence.
|
|
38
|
-
- If behavior differs between expression validation and DTO validation, route the problem to the correct submodule first.
|
|
31
|
+
## 排障
|
|
39
32
|
|
|
40
|
-
|
|
33
|
+
- EL/parser 请求停止实施并确认真实仓库/模块,不假设已移除路径仍存在。
|
|
34
|
+
- 注解未生效时先检查 Controller/service 校验注解和 Spring validation starter 装配,不先改 parser 代码。
|
|
35
|
+
- 当前证据使用 POM、消息资源、Controller 注解和 `GlobalExceptionAdvice`。
|
|
36
|
+
- 表达式校验与 DTO 校验行为不一致时先确认对应模块,再路由问题。
|
|
41
37
|
|
|
42
|
-
|
|
43
|
-
- JSR-303 and unavailable expression-validation requests are not mixed in the same fix.
|
|
44
|
-
- No class, parser or configuration is attributed to the absent historical module.
|
|
45
|
-
- Validation errors preserve readable messages for Chinese business users.
|
|
46
|
-
- Existing project conventions are reused before adding new wrappers.
|
|
38
|
+
## 验收
|
|
47
39
|
|
|
48
|
-
|
|
40
|
+
- 核验所需依赖或 starter 已进入实际工程。
|
|
41
|
+
- JSR-303 与不可用的表达式校验不混入同一整改。
|
|
42
|
+
- 不将类、parser 或配置归给不存在的历史模块。
|
|
43
|
+
- 校验错误保留中文业务用户可理解的消息。
|
|
44
|
+
- 新增包装前先复用工程既有约定。
|
|
49
45
|
|
|
50
|
-
|
|
51
|
-
- Do not replace component extension points with business-local framework code.
|
|
52
|
-
- Do not broaden the task into unrelated YSS components unless the user asks.
|
|
53
|
-
|
|
54
|
-
## 平台与源码门禁
|
|
46
|
+
## 修改边界
|
|
55
47
|
|
|
56
|
-
|
|
48
|
+
- 类名和配置 key 先核验当前索引与源码,不凭记忆补造。
|
|
49
|
+
- 使用组件已有扩展 seam,不以业务本地框架代码替换。
|
|
50
|
+
- 保持当前组件任务范围;扩展到其他组件须有用户要求或重新路由依据。
|
|
@@ -5,13 +5,17 @@ description: "按冻结合同与稳定 Application 接口生成或重构 YSS Con
|
|
|
5
5
|
|
|
6
6
|
# yss-web-controller
|
|
7
7
|
|
|
8
|
-
##
|
|
8
|
+
## 任务分流
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
- 只读审计读取实际入口和现有契约,缺用例 seam、契约或批准证据时记录缺口;不要求先补 Slice、生成 Manifest 或 metadata。
|
|
11
|
+
- 既有整改消费批准且当前的 Slice、冻结 API/no-impact 与稳定用例 seam;缺必要输入回实现合同编译器补齐。
|
|
12
|
+
- 仅新建 CRUD 要求 Web generation contract、metadata 并调用 initialize-only 生成器。认证、回调、Cookie、下载或流式接口可手工适配,不强制 CRUD 脚本或 metadata。
|
|
11
13
|
|
|
12
|
-
|
|
14
|
+
## 架构分流
|
|
15
|
+
|
|
16
|
+
将 `architecture_identity` 与当前工程基线和仓库登记核对;仅生成式来源核对脚手架 Manifest,既有来源使用登记及独立工程观测。再且只读取 `references/profiles/<architecture_profile>.md`。生成式分支为 target-domain-model、layered-mvc-service、mvc-data-analysis-v1;既有分支为 existing-domain-driven-maven、existing-layered-mvc-maven。成熟度以注册表为准,不能把 draft 称为受支持。MVC 不执行下文 DDD 专属规则,也不加载其分层 guide;组件、安全、批准合同、允许路径及执行证据规则共用。
|
|
13
17
|
|
|
14
|
-
|
|
18
|
+
以下 Application / Domain Gateway / Infrastructure / Web module 叙述仅适用于 target-domain-model;MVC 的 service/core/repository/server/client 所有权由所选 Profile 引用定义。
|
|
15
19
|
|
|
16
20
|
## 何时使用
|
|
17
21
|
|
|
@@ -19,46 +23,9 @@ description: "按冻结合同与稳定 Application 接口生成或重构 YSS Con
|
|
|
19
23
|
- 用户要根据冻结 OpenAPI 字段合同、metadata 和稳定 Application 接口生成 Request / Response / Controller / WebConvertor。
|
|
20
24
|
- 用户要求统一 Web Adapter 风格、返回值和接口路径。
|
|
21
25
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
- 只读审计可以记录用例 seam 或契约缺失。既有整改缺少批准 Slice、稳定用例 seam 或接口契约时,回实现合同编译器补齐;仅新建 CRUD 生成要求 metadata,不因缺 metadata 拒绝既有代码审计或手工接口整改。
|
|
27
|
-
|
|
28
|
-
## 新建 CRUD 生成流程
|
|
29
|
-
|
|
30
|
-
1. 先确认冻结 OpenAPI、批准且版本当前的 Web generation contract schema v2、Application Service 接口、metadata、基础包、模块名、领域 segment 和 web 落盘目录;合同必须绑定 Slice `contract_id` / `contract_version` / `slice_id`、`yss-dto` wire profile 引用与 digest、允许写路径、证据与验证命令。
|
|
31
|
-
2. 加载并遵守 `yss-dto` 与 `yss-validation`;错误映射影响命中时再加载 `yss-exception`。
|
|
32
|
-
3. 涉及 DTO / VO / CMD / Query POJO 样板代码时,加载并遵守 `lombok`。
|
|
33
|
-
4. 涉及 Domain / Application Result 到 VO / DTO 或 CMD / Query 到输入模型的转换时,加载并遵守 `mapstruct`。
|
|
34
|
-
5. 运行 `node scripts/generate_controller.mjs`。
|
|
35
|
-
6. 生成后检查路径、命名、返回值包装、Application Service 引用、`@Valid`、Lombok 注解和 MapStruct WebConvertor 是否对齐项目。
|
|
36
|
-
7. 对复杂接口做少量手工修正,不在 skill 中承诺自动覆盖全部业务逻辑。
|
|
37
|
-
|
|
38
|
-
## 推荐命令
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
node scripts/generate_controller.mjs \
|
|
42
|
-
--metadata-file /path/metadata.json \
|
|
43
|
-
--contract-file /path/approved-web-generation-contract.json \
|
|
44
|
-
--dto-wire-profile-file /path/to/yss-dto/references/openapi-wire-profile.yaml \
|
|
45
|
-
--scaffold-manifest-file /path/service/.yss/scaffold-generation.json \
|
|
46
|
-
--base-package com.yss.demo \
|
|
47
|
-
--module-name demo \
|
|
48
|
-
--domain-segment example \
|
|
49
|
-
--web-project-dir /path/demo-adapter/demo-web \
|
|
50
|
-
--application-service-package com.yss.demo.application.service \
|
|
51
|
-
--validation-namespace <resolved-platform-namespace>
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
## 输出预期
|
|
55
|
-
|
|
56
|
-
- `rest/dto/request/*CreateRequest.java`
|
|
57
|
-
- `rest/dto/request/*UpdateRequest.java`
|
|
58
|
-
- `rest/dto/request/*PageRequest.java`
|
|
59
|
-
- `rest/dto/response/*Response.java`
|
|
60
|
-
- `rest/*Controller.java`
|
|
61
|
-
- `rest/convertor/*WebConvertor.java`
|
|
26
|
+
## 新建 CRUD 生成
|
|
27
|
+
|
|
28
|
+
仅新建 CRUD 在输入齐备后必须读取 [生成流程与命令](references/crud-generation.md),核验 schema v2 Web generation contract、metadata、绑定的 wire profile 与允许路径,再运行 initialize-only 生成器并检查完整输出。复杂接口仍按批准合同补足实现,不以生成成功替代行为验证。
|
|
62
29
|
|
|
63
30
|
## 约束
|
|
64
31
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# 新建 CRUD 生成与核验
|
|
2
|
+
|
|
3
|
+
仅在新建 CRUD 且入口的批准合同、冻结 API 与稳定用例 seam 已齐备时读取。只读审计、既有整改和手工协议适配不运行初始化生成器。以下命令从 Skill 根目录执行;参数消费当前合同与工程平台解析值,示例不授予写入或覆盖权限。
|
|
4
|
+
|
|
5
|
+
## 新建 CRUD 生成流程
|
|
6
|
+
|
|
7
|
+
1. 先确认冻结 OpenAPI、批准且版本当前的 Web generation contract schema v2、Application Service 接口、metadata、基础包、模块名、领域 segment 和 web 落盘目录;合同必须绑定 Slice `contract_id` / `contract_version` / `slice_id`、`yss-dto` wire profile 引用与 digest、允许写路径、证据与验证命令。
|
|
8
|
+
2. 加载并遵守 `yss-dto` 与 `yss-validation`;错误映射影响命中时再加载 `yss-exception`。
|
|
9
|
+
3. 涉及 DTO / VO / CMD / Query POJO 样板代码时,加载并遵守 `lombok`。
|
|
10
|
+
4. 涉及 Domain / Application Result 到 VO / DTO 或 CMD / Query 到输入模型的转换时,加载并遵守 `mapstruct`。
|
|
11
|
+
5. 运行 `node scripts/generate_controller.mjs`。
|
|
12
|
+
6. 生成后检查路径、命名、返回值包装、Application Service 引用、`@Valid`、Lombok 注解和 MapStruct WebConvertor 是否对齐项目。
|
|
13
|
+
7. 对复杂接口做少量手工修正,不在 skill 中承诺自动覆盖全部业务逻辑。
|
|
14
|
+
|
|
15
|
+
## 推荐命令
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
node scripts/generate_controller.mjs \
|
|
19
|
+
--metadata-file /path/metadata.json \
|
|
20
|
+
--contract-file /path/approved-web-generation-contract.json \
|
|
21
|
+
--dto-wire-profile-file /path/to/yss-dto/references/openapi-wire-profile.yaml \
|
|
22
|
+
--scaffold-manifest-file /path/service/.yss/scaffold-generation.json \
|
|
23
|
+
--base-package com.yss.demo \
|
|
24
|
+
--module-name demo \
|
|
25
|
+
--domain-segment example \
|
|
26
|
+
--web-project-dir /path/demo-adapter/demo-web \
|
|
27
|
+
--application-service-package com.yss.demo.application.service \
|
|
28
|
+
--validation-namespace <resolved-platform-namespace>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## 输出预期
|
|
32
|
+
|
|
33
|
+
- `rest/dto/request/*CreateRequest.java`
|
|
34
|
+
- `rest/dto/request/*UpdateRequest.java`
|
|
35
|
+
- `rest/dto/request/*PageRequest.java`
|
|
36
|
+
- `rest/dto/response/*Response.java`
|
|
37
|
+
- `rest/*Controller.java`
|
|
38
|
+
- `rest/convertor/*WebConvertor.java`
|
|
@@ -33,7 +33,7 @@ description: "配置或修复 YSS UI YTable 的列表查询、列、分页、行
|
|
|
33
33
|
- 行键使用 `:row-config="{ keyField: 'id', useKey: true }"`,不臆造 `row-key` Prop。
|
|
34
34
|
- 新增、导入、批量操作等主按钮直接放入 `#toolbar-right` 或 `#toolbar-left` 插槽即可自动渲染工具栏;**无需配置 `:toolbar-config="{ custom: true }"`**,避免无端展示列设置图标;**仅在业务明确需要列设置时才传入 `:toolbar-config="{ custom: true }"`**。
|
|
35
35
|
- 删除、启停、发布等危险操作使用 `actionConfig.buttons[].isConfirm = true`,不默认使用 `Modal.confirm`。
|
|
36
|
-
-
|
|
36
|
+
- 纯列配置集中到 `constant.ts`;需要调用组件 Hook 的操作配置使用工厂函数注入回调,禁止在 `constant.ts` 直接引用组件局部的 `openEdit/deleteItem`。按职责和依赖拆分,不用配置行数决定拆分。
|
|
37
37
|
- 远程筛选必须提供稳定 `filters`,设置 `filterMethod: () => true` 禁用本地二次过滤,并监听 `filter-change`。
|
|
38
38
|
- 自适应滚动列表绑定 `:height="tableHeight"`;`pageable`、工具栏分别对应 `withPagination: true`、`withToolbar: true`。纯短表不强制引入高度 Hook。
|
|
39
39
|
- `mutator.ts` 已对网络错误和 `success === false` 统一 `message.error` 并 reject。API Hook 不再检查 `success === false`,不在 `else/catch` 重复 `message.error`;用 `finally` 恢复 loading,让异常继续中断流程。
|
|
@@ -55,7 +55,7 @@ description: "配置或修复 YSS UI YTable 的列表查询、列、分页、行
|
|
|
55
55
|
## 交付检查清单
|
|
56
56
|
|
|
57
57
|
- [ ] 分页状态和 `page-change` 参数均使用 `current/pageSize`,未使用 `currentPage`;`filter-change` 与 YTable 真实 API 一致。
|
|
58
|
-
- [ ]
|
|
58
|
+
- [ ] 启用多选时,列已配置 `type: 'checkbox'`,已设置 `:row-config="{ keyField: 'xxx', useKey: true }"`,批量按钮绑定了 `selectedRowKeys.length === 0` 禁用。
|
|
59
59
|
- [ ] 批量成功后,所有实际受控选择字段与表格可见勾选均已清空;内部缓存存在时已通过 `clearSelection()` 清除。
|
|
60
60
|
- [ ] 未使用虚构 `request/searchParams/row-key` Props,也未把 `refresh()` 当成远程请求。
|
|
61
61
|
- [ ] 工具栏、字典翻译、操作确认与高度偏移均与实际开关一致。
|
|
@@ -36,87 +36,9 @@ description: "配置或修复 YSS UI YTree 的字段映射、搜索、选中与
|
|
|
36
36
|
- 左树右表优先组合 `YSplitPane + YCard + YTree + YTable`;切换节点时同步查询条件并把右表分页重置为第 1 页。
|
|
37
37
|
- 节点删除 API 的错误由 `mutator.ts` 统一提示并 reject;不在 `else/catch` 重复 `message.error`。
|
|
38
38
|
|
|
39
|
-
##
|
|
39
|
+
## 按需示例
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
<script setup lang="ts">
|
|
43
|
-
import { ref } from 'vue';
|
|
44
|
-
import { YTree, type YTreeActionItem } from '@yss-ui/components';
|
|
45
|
-
import { useTreeHeight, YTREE_SEARCH_HEIGHT } from '@yss-ui/hooks';
|
|
46
|
-
|
|
47
|
-
/** 树节点数据。 */
|
|
48
|
-
interface TreeNode {
|
|
49
|
-
id: string;
|
|
50
|
-
name: string;
|
|
51
|
-
children?: TreeNode[];
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
const emit = defineEmits<{
|
|
55
|
-
create: [node: TreeNode];
|
|
56
|
-
edit: [node: TreeNode];
|
|
57
|
-
}>();
|
|
58
|
-
const treeAreaRef = ref<HTMLDivElement>();
|
|
59
|
-
const treeData = ref<TreeNode[]>([]);
|
|
60
|
-
const searchValue = ref('');
|
|
61
|
-
const selectedKeys = ref<Array<string | number>>([]);
|
|
62
|
-
const { treeHeight } = useTreeHeight(treeAreaRef, {
|
|
63
|
-
extraOffset: YTREE_SEARCH_HEIGHT,
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
/** 生成当前节点的非危险操作。 */
|
|
67
|
-
const getNodeActions = (): YTreeActionItem[] => [
|
|
68
|
-
{ key: 'add', label: '新增子节点' },
|
|
69
|
-
{ key: 'edit', label: '编辑' },
|
|
70
|
-
];
|
|
71
|
-
|
|
72
|
-
/** 处理 YTree 动作事件。 */
|
|
73
|
-
const handleTreeAction = ({ key, node }: { key: string; node: TreeNode }) => {
|
|
74
|
-
if (key === 'add') emit('create', node);
|
|
75
|
-
if (key === 'edit') emit('edit', node);
|
|
76
|
-
};
|
|
77
|
-
</script>
|
|
78
|
-
|
|
79
|
-
<template>
|
|
80
|
-
<div ref="treeAreaRef" class="tree-area">
|
|
81
|
-
<YTree
|
|
82
|
-
:height="treeHeight"
|
|
83
|
-
:tree-data="treeData"
|
|
84
|
-
:field-names="{ title: 'name', key: 'id', children: 'children' }"
|
|
85
|
-
filterable
|
|
86
|
-
show-actions
|
|
87
|
-
v-model:searchValue="searchValue"
|
|
88
|
-
v-model:selectedKeys="selectedKeys"
|
|
89
|
-
:get-node-actions="getNodeActions"
|
|
90
|
-
@action="handleTreeAction"
|
|
91
|
-
/>
|
|
92
|
-
</div>
|
|
93
|
-
</template>
|
|
94
|
-
|
|
95
|
-
<style scoped lang="less">
|
|
96
|
-
@import './style.less';
|
|
97
|
-
</style>
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
```less
|
|
101
|
-
/* style.less */
|
|
102
|
-
.tree-area {
|
|
103
|
-
flex: 1;
|
|
104
|
-
min-height: 0;
|
|
105
|
-
overflow: hidden;
|
|
106
|
-
}
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
## 删除确认边界
|
|
110
|
-
|
|
111
|
-
```vue
|
|
112
|
-
<template #node-suffix="{ node }">
|
|
113
|
-
<Popconfirm title="确认删除该节点吗?" ok-text="确定" cancel-text="取消" @confirm="handleDelete(node)">
|
|
114
|
-
<YButton type="link" @click.stop>删除</YButton>
|
|
115
|
-
</Popconfirm>
|
|
116
|
-
</template>
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
`Popconfirm` 从 `ant-design-vue` 导入,`YButton` 从 `@yss-ui/components` 导入。如果每个节点都展示删除会过密,把同样的 `Popconfirm` 放到选中节点的页面工具栏。
|
|
41
|
+
首次组合受控树、高度与节点动作,或实现删除确认时,读取 [树与删除确认示例](references/tree-and-confirmation-example.md)。简单字段映射修改无需加载整段示例。
|
|
120
42
|
|
|
121
43
|
## 交付检查清单
|
|
122
44
|
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
## 标准代码骨架
|
|
2
|
+
|
|
3
|
+
```vue
|
|
4
|
+
<script setup lang="ts">
|
|
5
|
+
import { ref } from 'vue';
|
|
6
|
+
import { YTree, type YTreeActionItem } from '@yss-ui/components';
|
|
7
|
+
import { useTreeHeight, YTREE_SEARCH_HEIGHT } from '@yss-ui/hooks';
|
|
8
|
+
|
|
9
|
+
/** 树节点数据。 */
|
|
10
|
+
interface TreeNode {
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
children?: TreeNode[];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const emit = defineEmits<{
|
|
17
|
+
create: [node: TreeNode];
|
|
18
|
+
edit: [node: TreeNode];
|
|
19
|
+
}>();
|
|
20
|
+
const treeAreaRef = ref<HTMLDivElement>();
|
|
21
|
+
const treeData = ref<TreeNode[]>([]);
|
|
22
|
+
const searchValue = ref('');
|
|
23
|
+
const selectedKeys = ref<Array<string | number>>([]);
|
|
24
|
+
const { treeHeight } = useTreeHeight(treeAreaRef, {
|
|
25
|
+
extraOffset: YTREE_SEARCH_HEIGHT,
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
/** 生成当前节点的非危险操作。 */
|
|
29
|
+
const getNodeActions = (): YTreeActionItem[] => [
|
|
30
|
+
{ key: 'add', label: '新增子节点' },
|
|
31
|
+
{ key: 'edit', label: '编辑' },
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
/** 处理 YTree 动作事件。 */
|
|
35
|
+
const handleTreeAction = ({ key, node }: { key: string; node: TreeNode }) => {
|
|
36
|
+
if (key === 'add') emit('create', node);
|
|
37
|
+
if (key === 'edit') emit('edit', node);
|
|
38
|
+
};
|
|
39
|
+
</script>
|
|
40
|
+
|
|
41
|
+
<template>
|
|
42
|
+
<div ref="treeAreaRef" class="tree-area">
|
|
43
|
+
<YTree
|
|
44
|
+
:height="treeHeight"
|
|
45
|
+
:tree-data="treeData"
|
|
46
|
+
:field-names="{ title: 'name', key: 'id', children: 'children' }"
|
|
47
|
+
filterable
|
|
48
|
+
show-actions
|
|
49
|
+
v-model:searchValue="searchValue"
|
|
50
|
+
v-model:selectedKeys="selectedKeys"
|
|
51
|
+
:get-node-actions="getNodeActions"
|
|
52
|
+
@action="handleTreeAction"
|
|
53
|
+
/>
|
|
54
|
+
</div>
|
|
55
|
+
</template>
|
|
56
|
+
|
|
57
|
+
<style scoped lang="less">
|
|
58
|
+
@import './style.less';
|
|
59
|
+
</style>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
```less
|
|
63
|
+
/* style.less */
|
|
64
|
+
.tree-area {
|
|
65
|
+
flex: 1;
|
|
66
|
+
min-height: 0;
|
|
67
|
+
overflow: hidden;
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## 删除确认边界
|
|
72
|
+
|
|
73
|
+
```vue
|
|
74
|
+
<template #node-suffix="{ node }">
|
|
75
|
+
<Popconfirm title="确认删除该节点吗?" ok-text="确定" cancel-text="取消" @confirm="handleDelete(node)">
|
|
76
|
+
<YButton type="link" @click.stop>删除</YButton>
|
|
77
|
+
</Popconfirm>
|
|
78
|
+
</template>
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
`Popconfirm` 从 `ant-design-vue` 导入,`YButton` 从 `@yss-ui/components` 导入。如果每个节点都展示删除会过密,把同样的 `Popconfirm` 放到选中节点的页面工具栏。
|
|
@@ -6,7 +6,7 @@ Profile、模块闭包、生成器、成熟度和 Recipe 的权威映射见 `yss
|
|
|
6
6
|
|
|
7
7
|
## 既有工程适配
|
|
8
8
|
|
|
9
|
-
`existing_project_profiles` 与下述生成器 Profile 独立维护。首版两个 Maven 适配器通过真实 Git/POM 三方核验、对应架构的成功/失败行为测试与 Maven test/package 后标记 supported
|
|
9
|
+
`existing_project_profiles` 与下述生成器 Profile 独立维护。首版两个 Maven 适配器通过真实 Git/POM 三方核验、对应架构的成功/失败行为测试与 Maven test/package 后标记 supported;当前适配行为由 `scripts/verify-existing-backend-architecture-scenarios` 和对应独立 fixture 核验。这是适配协议支持证据,不是实际产品批准、数据库兼容或真实跨仓 S0 结论。每个工程仍须自己的固定来源、架构边界审查和执行证据,详见 `.template-spec/process/existing-backend-architecture.md`。生成器原有 draft 和首切片要求保持。
|
|
10
10
|
|
|
11
11
|
## MVC 分层
|
|
12
12
|
|
|
@@ -22,12 +22,16 @@
|
|
|
22
22
|
|
|
23
23
|
正式门禁的会签由 `gate_policy.digital_human_review` / `dual_digital_human` / `biological_human` 定义;内部专业审查由 `check_reviews` 定义,自动检查由 `automatic_checks` 定义。每项的起草者与会签人只读取 YAML,不在本文复制名单。
|
|
24
24
|
|
|
25
|
+
专业审查按 YAML `review_capabilities` 和检查策略的 `capability_ids` 选择具备能力的独立执行者;角色是职责边界,不能用另一个职称替代能力或独立身份。正式 v1 审查任务的 `review_context` 绑定当前检查 / 能力、候选、策略、范围、依据摘要和审查 / 起草主体;`skill_source.review_skills` 从能力表编译,只供 Reviewer / Verifier 只读审查,角色核心技能和禁止技能不变。能力定义不在本文重复维护。
|
|
26
|
+
|
|
25
27
|
Plan、产品设计、工程契约统一呈现适用检查后批准。`gate.delivery-accepted` 由测试角色进行交付验收,实际合并或发布仍须另有生物人授权。内部检查不独立请求用户决定;检查失败仍阻断聚合门禁。专业审查可在同一工作单元完成多个检查项,但必须保留逐项结论、资产摘要与独立执行者身份。
|
|
26
28
|
|
|
27
|
-
会签写入 `docs/.scratch/<feature>/gates/<gate-id>-approval.yaml
|
|
29
|
+
会签写入 `docs/.scratch/<feature>/gates/<gate-id>-approval.yaml`,新记录使用 schema v2,形状见 `.template-spec/templates/approval-record-template.yaml`。专业记录绑定 `review_task_ref/digest`、`capability_ids` 与 `basis`,相邻检查可组合为 schema v2 `review-bundle` 并逐项记录。恢复前运行 `scripts/verify-approval-record --require-approved --checkpoint <current checkpoint>`;当前期望上下文由消费 checkpoint / 任务建立,不能反向复制会签记录。错误会签只能得到 `blocked`,不能把门禁标成 `approved`。Checkpoint 里会签桶门禁为 `approved` 时必须有可读 `approval_ref`。历史记录可用 `--history` 只读查看,不放行当前执行;旧消费者须拒绝 v2 并升级。
|
|
28
30
|
|
|
29
31
|
`paused-human-gate` 表示等待指定会签人;`user_decision_policy` 命中的关键决定同时强制真实用户回复,数字人审查不能代答。请求展示、原始回复证据、复用和恢复规则见 [用户决定协议](../../.agents/skills/yss-product-lifecycle/references/user-decisions.md)。
|
|
30
32
|
|
|
33
|
+
专业等待由主控自主派发、等待并继续无依赖工作;验证失败修复或路由。未知影响先调查,缺真实决定或新授权才展示材料后询问。首轮覆盖全部适用检查;修复后按差异、受影响结论 / 行为及依赖定向复审并绑定当前候选,不因摘要变化、UI 影响或 `new_impacts` 默认重跑全轴。
|
|
34
|
+
|
|
31
35
|
主控默认兼任项目经理,直到 `dual_hat_split_when`(`cross-repo-load` 或 `responsibility-conflict`)要求分体。
|
|
32
36
|
|
|
33
37
|
## 跨平台协同(默认)
|
|
@@ -172,6 +172,41 @@ stage_groups:
|
|
|
172
172
|
stage: stage.verification-release-retrospective
|
|
173
173
|
members: [ role.lifecycle-orchestrator, role.project-manager, role.test-engineer, role.product-manager ]
|
|
174
174
|
|
|
175
|
+
# 职称继续用于导航;正式专业审查按能力绑定同一独立实例,不授予实现权限。
|
|
176
|
+
review_capabilities:
|
|
177
|
+
- id: capability.business-rules
|
|
178
|
+
name: 业务边界与规则审查
|
|
179
|
+
eligible_roles: [role.product-manager]
|
|
180
|
+
review_skills: [domain-modeling, yss-stage-decision]
|
|
181
|
+
- id: capability.spec-acceptance
|
|
182
|
+
name: Spec 范围与验收审查
|
|
183
|
+
eligible_roles: [role.product-manager]
|
|
184
|
+
review_skills: [code-review]
|
|
185
|
+
- id: capability.prototype-assurance
|
|
186
|
+
name: 原型与体验审查
|
|
187
|
+
eligible_roles: [role.frontend-engineer, role.test-engineer]
|
|
188
|
+
review_skills: [prototype-review, yss-design-system]
|
|
189
|
+
- id: capability.openapi-contract
|
|
190
|
+
name: OpenAPI Draft 契约与客户端适配审查
|
|
191
|
+
eligible_roles: [role.frontend-engineer, role.test-engineer]
|
|
192
|
+
review_skills: [yss-openapi-draft-review]
|
|
193
|
+
- id: capability.technical-design
|
|
194
|
+
name: 技术设计与架构审查
|
|
195
|
+
eligible_roles: [role.backend-engineer, role.test-engineer]
|
|
196
|
+
review_skills: [yss-technical-design]
|
|
197
|
+
- id: capability.engineering-baseline
|
|
198
|
+
name: 工程基线与验证审查
|
|
199
|
+
eligible_roles: [role.test-engineer]
|
|
200
|
+
review_skills: [code-review]
|
|
201
|
+
- id: capability.engineering-acceptance
|
|
202
|
+
name: 工程契约聚合审查
|
|
203
|
+
eligible_roles: [role.test-engineer, role.product-manager]
|
|
204
|
+
review_skills: [code-review]
|
|
205
|
+
- id: capability.implementation-assurance
|
|
206
|
+
name: 实现与交付证据审查
|
|
207
|
+
eligible_roles: [role.test-engineer]
|
|
208
|
+
review_skills: [code-review]
|
|
209
|
+
|
|
175
210
|
gate_policy:
|
|
176
211
|
# countersigners 是可胜任该边界的候选角色,不是必须集齐的签字名单。
|
|
177
212
|
review_execution:
|
|
@@ -188,29 +223,34 @@ gate_policy:
|
|
|
188
223
|
gate.backend-architecture-platform-approved: [role.backend-engineer]
|
|
189
224
|
gate.engineering-contract-approved: [role.backend-engineer, role.test-engineer]
|
|
190
225
|
implementation-scope: [role.test-engineer]
|
|
191
|
-
default_if_unlisted:
|
|
226
|
+
default_if_unlisted: reject-unlisted
|
|
192
227
|
evidence_only: []
|
|
193
228
|
orchestrator:
|
|
194
229
|
- gate.slice-contract-approved
|
|
195
230
|
digital_human_review:
|
|
196
231
|
- gate: gate.delivery-accepted
|
|
232
|
+
capability_ids: [capability.implementation-assurance]
|
|
197
233
|
countersigners:
|
|
198
234
|
- role.test-engineer
|
|
199
235
|
digital_human_review_work_units:
|
|
200
236
|
- work_unit: work-unit.code-review
|
|
237
|
+
capability_ids: [capability.implementation-assurance]
|
|
201
238
|
countersigners:
|
|
202
239
|
- role.test-engineer
|
|
203
240
|
implementer_must_differ: true
|
|
204
241
|
dual_digital_human:
|
|
205
242
|
- gate: gate.plan-approved
|
|
243
|
+
capability_ids: [capability.business-rules]
|
|
206
244
|
drafter: role.requirements-manager
|
|
207
245
|
countersigners:
|
|
208
246
|
- role.product-manager
|
|
209
247
|
- gate: gate.spec-baseline-approved
|
|
248
|
+
capability_ids: [capability.spec-acceptance]
|
|
210
249
|
drafter: role.requirements-manager
|
|
211
250
|
countersigners:
|
|
212
251
|
- role.product-manager
|
|
213
252
|
- gate: gate.engineering-contract-approved
|
|
253
|
+
capability_ids: [capability.engineering-acceptance]
|
|
214
254
|
drafter: role.backend-engineer
|
|
215
255
|
countersigners:
|
|
216
256
|
- role.test-engineer
|
|
@@ -229,33 +269,41 @@ gate_policy:
|
|
|
229
269
|
- check.openapi-frozen
|
|
230
270
|
check_reviews:
|
|
231
271
|
- gate: check.domain-strategy-approved
|
|
272
|
+
capability_ids: [capability.business-rules]
|
|
232
273
|
drafter: role.requirements-manager
|
|
233
274
|
countersigners:
|
|
234
275
|
- role.product-manager
|
|
235
276
|
- gate: check.stage-decision-package-approved
|
|
277
|
+
capability_ids: [capability.business-rules]
|
|
236
278
|
drafter: role.requirements-manager
|
|
237
279
|
countersigners:
|
|
238
280
|
- role.product-manager
|
|
239
281
|
- gate: check.prototype-reviewed
|
|
282
|
+
capability_ids: [capability.prototype-assurance]
|
|
240
283
|
drafter: role.product-manager
|
|
241
284
|
countersigners:
|
|
242
285
|
- role.frontend-engineer
|
|
243
286
|
- gate: check.openapi-draft-reviewed
|
|
287
|
+
capability_ids: [capability.openapi-contract]
|
|
244
288
|
drafter: role.backend-engineer
|
|
245
289
|
countersigners:
|
|
246
290
|
- role.frontend-engineer
|
|
247
291
|
- gate: check.design-reviewed
|
|
292
|
+
capability_ids: [capability.technical-design]
|
|
248
293
|
countersigners:
|
|
249
294
|
- role.backend-engineer
|
|
250
295
|
- role.test-engineer
|
|
251
296
|
- gate: check.architecture-reviewed
|
|
297
|
+
capability_ids: [capability.technical-design]
|
|
252
298
|
countersigners:
|
|
253
299
|
- role.backend-engineer
|
|
254
300
|
- role.test-engineer
|
|
255
301
|
- gate: check.engineering-baseline-accepted
|
|
302
|
+
capability_ids: [capability.engineering-baseline]
|
|
256
303
|
countersigners:
|
|
257
304
|
- role.test-engineer
|
|
258
305
|
- gate: check.frontend-implementation-verified
|
|
306
|
+
capability_ids: [capability.implementation-assurance]
|
|
259
307
|
drafter: role.frontend-engineer
|
|
260
308
|
countersigners:
|
|
261
309
|
- role.test-engineer
|
|
@@ -478,7 +478,7 @@
|
|
|
478
478
|
"artifact_resolution_evidence": {
|
|
479
479
|
"report_id": "aliyun-maven-artifact-resolution-2026-09-18",
|
|
480
480
|
"repository_id": "2306938-snapshot-Yloqmt",
|
|
481
|
-
"ref": ".template-source/evidence/
|
|
481
|
+
"ref": ".template-source/engineering/evidence/aliyun-artifact-resolution.json",
|
|
482
482
|
"digest": "sha256:35a82e84eb93d35046900886affb806f3620b1416b4b097f67f42c658b676bca"
|
|
483
483
|
}
|
|
484
484
|
},
|