pomaster 0.4.0 → 0.5.1
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/README.md +102 -183
- package/catalog/catalog-lock.draft.json +117 -117
- package/catalog/policies/policy.ai.change_plan_first.json +1 -1
- package/catalog/policies/policy.ai.fact_inference_separation.json +1 -1
- package/catalog/policies/policy.ai.read_search_verify_before_write.json +1 -1
- package/catalog/policies/policy.ai.rule_relaxation_approval.json +1 -1
- package/catalog/policies/policy.arch.adr_immutable_history.json +1 -1
- package/catalog/policies/policy.arch.no_convenience_over_boundary.json +1 -1
- package/catalog/policies/policy.arch.prefer_verifiable_option.json +2 -2
- package/catalog/policies/policy.authz.no_gating_proxy_trust.json +1 -1
- package/catalog/policies/policy.authz.permission_scope_expansion_gate.json +1 -1
- package/catalog/policies/policy.authz.server_five_factor_verification.json +1 -1
- package/catalog/policies/policy.be.conc.prefer_db_constraints.json +1 -1
- package/catalog/policies/policy.be.db.expand_migrate_contract.json +1 -1
- package/catalog/policies/policy.be.idem.key_payload_conflict.json +1 -1
- package/catalog/policies/policy.be.model.single_boundary_conversion.json +1 -1
- package/catalog/policies/policy.be.sql.index_for_known_queries.json +1 -1
- package/catalog/policies/policy.be.state.single_rule_source.json +1 -1
- package/catalog/policies/policy.be.txn.short_locks_compensation.json +1 -1
- package/catalog/policies/policy.bound.search_first_entry_only.json +1 -1
- package/catalog/policies/policy.boundary.validate_in_encode_out.json +1 -1
- package/catalog/policies/policy.cache.failure_mode_guards.json +1 -1
- package/catalog/policies/policy.cache.schema_versioning.json +1 -1
- package/catalog/policies/policy.cfg.config_attribute_completeness.json +1 -1
- package/catalog/policies/policy.cfg.key_rename_dual_read.json +1 -1
- package/catalog/policies/policy.cfg.no_secret_dispersal.json +1 -1
- package/catalog/policies/policy.cfg.production_safe_defaults.json +1 -1
- package/catalog/policies/policy.cfg.schema_backed_config.json +1 -1
- package/catalog/policies/policy.chg.no_unrelated_changes.json +1 -1
- package/catalog/policies/policy.contract.no_invented_facts.json +1 -1
- package/catalog/policies/policy.dep.build_path_supply_chain.json +1 -1
- package/catalog/policies/policy.dep.no_untrusted_source_no_lock_bypass.json +1 -1
- package/catalog/policies/policy.dep.time_boxed_urgent_exception.json +1 -1
- package/catalog/policies/policy.deploy.no_dev_env_as_production_fact.json +1 -1
- package/catalog/policies/policy.deploy.operational_capabilities.json +1 -1
- package/catalog/policies/policy.deploy.runtime_fact_record.json +1 -1
- package/catalog/policies/policy.err.failure_five_part_mapping.json +1 -1
- package/catalog/policies/policy.err.no_internal_detail_exposure.json +1 -1
- package/catalog/policies/policy.err.published_code_immutable.json +1 -1
- package/catalog/policies/policy.evid.acceptance_binds_verifiable_evidence.json +1 -1
- package/catalog/policies/policy.evid.no_silent_gate_removal.json +1 -1
- package/catalog/policies/policy.evid.no_unverifiable_pass.json +1 -1
- package/catalog/policies/policy.flag.cleanup_after_full_rollout.json +1 -1
- package/catalog/policies/policy.flag.consistent_off_state.json +1 -1
- package/catalog/policies/policy.flag.kill_switch.json +1 -1
- package/catalog/policies/policy.flag.lifecycle_metadata.json +1 -1
- package/catalog/policies/policy.flag.not_a_permission.json +1 -1
- package/catalog/policies/policy.gate.p0_non_bypassable.json +1 -1
- package/catalog/policies/policy.gate.risk_factors_confirmed.json +1 -1
- package/catalog/policies/policy.guard.no_check_weakening.json +2 -2
- package/catalog/policies/policy.integration.call_definition_minimum.json +1 -1
- package/catalog/policies/policy.integration.fault_containment.json +1 -1
- package/catalog/policies/policy.job.lifecycle_definition.json +1 -1
- package/catalog/policies/policy.job.no_unmanaged_execution.json +1 -1
- package/catalog/policies/policy.job.operational_features.json +1 -1
- package/catalog/policies/policy.obs.actionable_signals.json +1 -1
- package/catalog/policies/policy.obs.alert_with_owner.json +1 -1
- package/catalog/policies/policy.obs.context_field_baseline.json +1 -1
- package/catalog/policies/policy.obs.no_sensitive_or_unbounded_logging.json +1 -1
- package/catalog/policies/policy.obs.no_sensitive_raw_values.json +1 -1
- package/catalog/policies/policy.obs.signal_change_impact.json +1 -1
- package/catalog/policies/policy.obs.source_map_access_control.json +1 -1
- package/catalog/policies/policy.obs.telemetry_lifecycle_declared.json +1 -1
- package/catalog/policies/policy.obs.trace_correlation.json +1 -1
- package/catalog/policies/policy.perf.budget_change_retest.json +1 -1
- package/catalog/policies/policy.perf.evidence_binding.json +1 -1
- package/catalog/policies/policy.perf.observation_dimensions.json +1 -1
- package/catalog/policies/policy.proc.checklist_change_policy.json +2 -2
- package/catalog/policies/policy.proc.scope_drift_reclassify.json +1 -1
- package/catalog/policies/policy.prv.processing_scope_re_review.json +1 -1
- package/catalog/policies/policy.prv.sensitive_data_six_facts.json +1 -1
- package/catalog/policies/policy.registry.human_fields_validated_decorrelated.json +1 -1
- package/catalog/policies/policy.rel.no_irreversible_unmonitored_full_release.json +1 -1
- package/catalog/policies/policy.rel.observability_before_ship.json +1 -1
- package/catalog/policies/policy.rel.process_change_needs_drill_audit.json +1 -1
- package/catalog/policies/policy.rel.traceable_build.json +1 -1
- package/catalog/policies/policy.role.human_signs_for_ai.json +1 -1
- package/catalog/policies/policy.sec.authn_policy_unified.json +1 -1
- package/catalog/policies/policy.sec.no_client_side_trust.json +4 -1
- package/catalog/policies/policy.sec.no_longterm_security_disable.json +1 -1
- package/catalog/policies/policy.sec.no_script_readable_credentials.json +1 -1
- package/catalog/policies/policy.sec.no_secrets_in_client_surface.json +2 -2
- package/catalog/policies/policy.sec.relaxation_approval.json +1 -1
- package/catalog/policies/policy.sec.security_relaxation_gate.json +4 -1
- package/catalog/policies/policy.sec.trust_boundary_enforcement.json +4 -1
- package/catalog/policies/policy.sec.upload_download_server_recheck.json +1 -1
- package/catalog/policies/policy.sec.url_source_allowlist.json +1 -1
- package/catalog/policies/policy.spec.family_conflict_precedence.json +1 -1
- package/catalog/policies/policy.spec.freeze_before_use.json +1 -1
- package/catalog/policies/policy.spec.primary_source_basis.json +1 -1
- package/catalog/policies/policy.struct.module_entry_dependency_declared.json +1 -1
- package/catalog/policies/policy.struct.no_unexplained_top_level_dir.json +1 -1
- package/catalog/policies/policy.struct.reuse_proven_structure.json +1 -1
- package/catalog/policies/policy.test.control_nondeterminism_keep_diagnosis.json +1 -1
- package/catalog/policies/policy.test.isolation_and_cleanup.json +1 -1
- package/catalog/policies/policy.test.no_synthetic_stability.json +1 -1
- package/catalog/policies/policy.test.pyramid_and_ci_matrix.json +1 -1
- package/catalog/policies/policy.test.removal_justification.json +1 -1
- package/catalog/policies/policy.test.removal_needs_substitute_evidence.json +1 -1
- package/catalog/policies/policy.test.risk_driven_plan.json +1 -1
- package/catalog/policies/policy.test.stable_observable_assertions.json +1 -1
- package/catalog/policies/policy.tool.discoverable_toolchain.json +1 -1
- package/catalog/policies/policy.tool.no_hand_edit_generated_no_ci_drift.json +1 -1
- package/catalog/policies/policy.tool.no_vendored_body_edits.json +1 -1
- package/catalog/policies/policy.tool.upgrade_verify_lock_rollback.json +1 -1
- package/catalog/policies/policy.web.comp.no_trivial_or_god_component.json +1 -1
- package/catalog/policies/policy.web.comp.public_contract_completeness.json +1 -1
- package/catalog/policies/policy.web.copy.action_object_clarity.json +1 -1
- package/catalog/policies/policy.web.copy.enumerable_placement.json +1 -1
- package/catalog/policies/policy.web.copy.error_next_step.json +1 -1
- package/catalog/policies/policy.web.handoff.state_matrix_full.json +1 -1
- package/catalog/policies/policy.web.i18n.copy_key_discipline.json +1 -1
- package/catalog/policies/policy.web.i18n.raw_value_for_compute.json +1 -1
- package/catalog/policies/policy.web.page.region_consistency.json +1 -1
- package/catalog/policies/policy.web.track.attempt_result_correlation.json +1 -1
- package/catalog/policies/policy.web.track.no_synthetic_actions.json +1 -1
- package/catalog/policies/policy.web.track.typed_client_validation.json +1 -1
- package/catalog/policies/policy.wf.no_planned_as_verified.json +1 -1
- package/catalog/policies/policy.wf.task_facts_preconfirm.json +1 -1
- package/dist/bin.js +11233 -7336
- package/legal/THIRD_PARTY_NOTICES.md +461 -35
- package/package.json +1 -1
- package/seeds/aggregation-manifest.json +691 -0
- package/seeds/manifest.json +466 -1043
- package/seeds/specs/hard/stacks/antdesign/antdesign-ui-overlay.md +48 -0
- package/seeds/specs/hard/stacks/antdesign/index.md +20 -0
- package/seeds/specs/hard/stacks/css/css-system-overlay.md +52 -0
- package/seeds/specs/hard/stacks/css/index.md +20 -0
- package/seeds/specs/hard/stacks/geist/geist-design-system-overlay.md +48 -0
- package/seeds/specs/hard/stacks/geist/index.md +20 -0
- package/seeds/specs/hard/stacks/vue3/index.md +20 -0
- package/seeds/specs/hard/stacks/vue3/vue3-framework-overlay.md +71 -0
- package/seeds/specs/hard/themes/ai-generated-code.md +171 -0
- package/seeds/specs/hard/themes/api-contract-and-error-semantics.md +532 -0
- package/seeds/specs/hard/themes/architecture-and-module-boundaries.md +323 -0
- package/seeds/specs/hard/themes/data-and-transactions.md +582 -0
- package/seeds/specs/hard/themes/engineering-toolchain-and-dependencies.md +333 -0
- package/seeds/specs/hard/themes/environment-and-configuration.md +196 -0
- package/seeds/specs/hard/themes/frontend-state-and-client-data.md +342 -0
- package/seeds/specs/hard/themes/index.md +374 -0
- package/seeds/specs/hard/themes/integration-and-async-runtime.md +331 -0
- package/seeds/specs/hard/{frontend/38-internationalization-protocol.md → themes/internationalization-and-copywriting.md} +112 -5
- package/seeds/specs/hard/themes/observability-and-analytics.md +305 -0
- package/seeds/specs/hard/themes/page-composition-and-browser-environment.md +554 -0
- package/seeds/specs/hard/{frontend/31-performance-protocol.md → themes/performance-and-capacity.md} +95 -6
- package/seeds/specs/hard/themes/permission-and-authorization.md +168 -0
- package/seeds/specs/hard/themes/privacy-and-data-lifecycle.md +176 -0
- package/seeds/specs/hard/themes/release-and-feature-flags.md +237 -0
- package/seeds/specs/hard/{frontend/04-security-protocol.md → themes/security.md} +95 -6
- package/seeds/specs/hard/themes/task-governance-and-acceptance.md +554 -0
- package/seeds/specs/hard/themes/testing-and-verification.md +266 -0
- package/seeds/specs/hard/themes/ui-presentation-and-design.md +670 -0
- package/seeds/specs/hard/themes/value-semantics-and-domain-data.md +339 -0
- package/seeds/specs/hard/backend/01-architecture-governance-protocol.md +0 -68
- package/seeds/specs/hard/backend/02-project-structure-governance-protocol.md +0 -68
- package/seeds/specs/hard/backend/03-directory-boundary-protocol.md +0 -68
- package/seeds/specs/hard/backend/04-layering-architecture-protocol.md +0 -68
- package/seeds/specs/hard/backend/05-task-workflow-protocol.md +0 -68
- package/seeds/specs/hard/backend/06-ai-generated-code-protocol.md +0 -68
- package/seeds/specs/hard/backend/07-evidence-acceptance-protocol.md +0 -68
- package/seeds/specs/hard/backend/08-contract-change-protocol.md +0 -68
- package/seeds/specs/hard/backend/09-role-responsibility-protocol.md +0 -68
- package/seeds/specs/hard/backend/10-security-protocol.md +0 -68
- package/seeds/specs/hard/backend/11-environment-configuration-protocol.md +0 -67
- package/seeds/specs/hard/backend/12-api-contract-protocol.md +0 -68
- package/seeds/specs/hard/backend/13-privacy-data-lifecycle-protocol.md +0 -68
- package/seeds/specs/hard/backend/14-business-rules-state-protocol.md +0 -68
- package/seeds/specs/hard/backend/15-data-model-protocol.md +0 -68
- package/seeds/specs/hard/backend/16-error-code-protocol.md +0 -68
- package/seeds/specs/hard/backend/17-permission-authorization-protocol.md +0 -68
- package/seeds/specs/hard/backend/18-database-schema-migration-protocol.md +0 -68
- package/seeds/specs/hard/backend/19-query-index-sql-protocol.md +0 -68
- package/seeds/specs/hard/backend/20-transaction-boundary-protocol.md +0 -68
- package/seeds/specs/hard/backend/21-concurrency-locking-protocol.md +0 -68
- package/seeds/specs/hard/backend/22-idempotency-protocol.md +0 -68
- package/seeds/specs/hard/backend/23-cache-redis-consistency-protocol.md +0 -68
- package/seeds/specs/hard/backend/24-external-integration-resilience-protocol.md +0 -68
- package/seeds/specs/hard/backend/25-async-job-scheduler-protocol.md +0 -68
- package/seeds/specs/hard/backend/26-engineering-tooling-protocol.md +0 -68
- package/seeds/specs/hard/backend/27-dependency-supply-chain-protocol.md +0 -68
- package/seeds/specs/hard/backend/28-testing-protocol.md +0 -68
- package/seeds/specs/hard/backend/29-observability-logging-tracing-protocol.md +0 -68
- package/seeds/specs/hard/backend/30-performance-capacity-protocol.md +0 -68
- package/seeds/specs/hard/backend/31-runtime-deployment-protocol.md +0 -68
- package/seeds/specs/hard/backend/32-release-versioning-rollback-protocol.md +0 -68
- package/seeds/specs/hard/backend/index.md +0 -177
- package/seeds/specs/hard/frontend/01-development-checklist-protocol.md +0 -86
- package/seeds/specs/hard/frontend/02-ai-generated-code-protocol.md +0 -82
- package/seeds/specs/hard/frontend/03-acceptance-gate-protocol.md +0 -86
- package/seeds/specs/hard/frontend/05-environment-configuration-protocol.md +0 -80
- package/seeds/specs/hard/frontend/06-change-governance-protocol.md +0 -90
- package/seeds/specs/hard/frontend/07-frontend-backend-communication-protocol.md +0 -219
- package/seeds/specs/hard/frontend/08-role-responsibility-protocol.md +0 -80
- package/seeds/specs/hard/frontend/09-module-boundary-protocol.md +0 -81
- package/seeds/specs/hard/frontend/10-engineering-tooling-protocol.md +0 -89
- package/seeds/specs/hard/frontend/11-dependency-package-management-protocol.md +0 -87
- package/seeds/specs/hard/frontend/12-business-rules-protocol.md +0 -79
- package/seeds/specs/hard/frontend/13-monetary-precision-protocol.md +0 -81
- package/seeds/specs/hard/frontend/14-data-model-protocol.md +0 -85
- package/seeds/specs/hard/frontend/15-request-api-protocol.md +0 -87
- package/seeds/specs/hard/frontend/16-error-handling-protocol.md +0 -79
- package/seeds/specs/hard/frontend/17-permission-protocol.md +0 -79
- package/seeds/specs/hard/frontend/18-state-management-protocol.md +0 -88
- package/seeds/specs/hard/frontend/19-cache-protocol.md +0 -79
- package/seeds/specs/hard/frontend/20-testing-protocol.md +0 -88
- package/seeds/specs/hard/frontend/21-design-system-protocol.md +0 -79
- package/seeds/specs/hard/frontend/22-theme-protocol.md +0 -79
- package/seeds/specs/hard/frontend/23-accessibility-protocol.md +0 -189
- package/seeds/specs/hard/frontend/24-component-protocol.md +0 -80
- package/seeds/specs/hard/frontend/25-page-structure-protocol.md +0 -79
- package/seeds/specs/hard/frontend/26-style-layout-protocol.md +0 -80
- package/seeds/specs/hard/frontend/27-rendering-state-protocol.md +0 -81
- package/seeds/specs/hard/frontend/28-form-protocol.md +0 -88
- package/seeds/specs/hard/frontend/29-routing-url-protocol.md +0 -79
- package/seeds/specs/hard/frontend/30-data-grid-protocol.md +0 -83
- package/seeds/specs/hard/frontend/32-file-import-export-protocol.md +0 -80
- package/seeds/specs/hard/frontend/33-release-versioning-protocol.md +0 -79
- package/seeds/specs/hard/frontend/34-monitoring-logging-protocol.md +0 -128
- package/seeds/specs/hard/frontend/35-mock-protocol.md +0 -97
- package/seeds/specs/hard/frontend/36-feature-flag-protocol.md +0 -79
- package/seeds/specs/hard/frontend/37-browser-device-compatibility-protocol.md +0 -83
- package/seeds/specs/hard/frontend/39-copywriting-protocol.md +0 -79
- package/seeds/specs/hard/frontend/40-analytics-protocol.md +0 -98
- package/seeds/specs/hard/frontend/41-design-handoff-protocol.md +0 -80
- package/seeds/specs/hard/frontend/42-browser-runtime-lifecycle-protocol.md +0 -86
- package/seeds/specs/hard/frontend/43-time-temporal-protocol.md +0 -86
- package/seeds/specs/hard/frontend/44-privacy-data-lifecycle-protocol.md +0 -87
- package/seeds/specs/hard/frontend/45-browser-storage-protocol.md +0 -87
- package/seeds/specs/hard/frontend/index.md +0 -308
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
seed_source: pomaster/components/frontend-hard-spec/assets/universal/01-development-checklist-protocol.md
|
|
3
|
-
seed_source_sha256: fa8914b29dbf7af25c8128aa1b8936fd658e37854e0a4f457175e2e3c82c3a03
|
|
4
|
-
seed_version: B6B-1
|
|
5
|
-
lane: frontend
|
|
6
|
-
status: CURRENT
|
|
7
|
-
authority_scope: mixed_required_and_advisory
|
|
8
|
-
applies_to: [frontend]
|
|
9
|
-
related_evidence_specs: []
|
|
10
|
-
related_tools: []
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
# 01 开发检查项协议
|
|
14
|
-
|
|
15
|
-
## Scope
|
|
16
|
-
|
|
17
|
-
P0。把规范转成每次开发前、开发中、开发后的强制动作,适用于功能、修复、重构、配置和文档驱动变更。
|
|
18
|
-
|
|
19
|
-
## Non-Scope
|
|
20
|
-
|
|
21
|
-
不定义技术栈命令,不替代测试协议、验收门禁和发布审批。
|
|
22
|
-
|
|
23
|
-
## Terms
|
|
24
|
-
|
|
25
|
-
- Change Classification:局部、同类模式、公共能力、契约、平台或工程变更。
|
|
26
|
-
- Impact Set:必须修改、需要同步、明确禁止修改的范围。
|
|
27
|
-
- Evidence:搜索、测试、截图、构建、契约差异等可复核证据。
|
|
28
|
-
- Spec Update Review:开发完成后判断是否需要补充 spec 的强制复核。
|
|
29
|
-
|
|
30
|
-
## MUST
|
|
31
|
-
|
|
32
|
-
- 开发前完成变更分类、协议选择、复用搜索和影响范围。
|
|
33
|
-
- 写代码前列出 Must Change、Must Sync、Must Not Change。
|
|
34
|
-
- 缺少正式字段、状态、权限、接口或业务规则时先补契约或阻塞确认。
|
|
35
|
-
- 开发中发现范围扩大时重新分类并更新计划。
|
|
36
|
-
- 开发后提供检查结果、影响说明和残余风险。
|
|
37
|
-
- 开发后、任务关闭或收口(closeout)流程前必须完成 Spec Update Review。
|
|
38
|
-
- 发现新规则、重复坑点、接口/组件/目录/测试约定时必须更新对应 spec;无更新时必须记录原因。
|
|
39
|
-
|
|
40
|
-
## MUST NOT
|
|
41
|
-
|
|
42
|
-
- MUST NOT 先实现后补范围。
|
|
43
|
-
- MUST NOT 用“应该没问题”代替证据。
|
|
44
|
-
- MUST NOT 混入无关清理、升级或重构。
|
|
45
|
-
- MUST NOT 跳过 Spec Update Review 后直接归档、收口或发布。
|
|
46
|
-
- MUST NOT 将一次性实现细节写入长期 spec。
|
|
47
|
-
|
|
48
|
-
## SHOULD
|
|
49
|
-
|
|
50
|
-
- SHOULD 将检查项集成任务模板、PR 模板和自动化门禁。
|
|
51
|
-
- SHOULD 按风险扩大检查,而非机械执行无关项目。
|
|
52
|
-
|
|
53
|
-
## Contract
|
|
54
|
-
|
|
55
|
-
```text
|
|
56
|
-
Goal, Classification, ProtocolsLoaded, SpecStatus, ReuseSearch,
|
|
57
|
-
MustChange, MustSync, MustNotChange, ContractsAffected,
|
|
58
|
-
ValidationRequired, Evidence, SpecUpdateDecision, ResidualRisk
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
## Checklist
|
|
62
|
-
|
|
63
|
-
- [ ] 已分类并加载协议。
|
|
64
|
-
- [ ] 已搜索已有能力。
|
|
65
|
-
- [ ] 已声明影响与禁止范围。
|
|
66
|
-
- [ ] 已确认契约、安全和数据边界。
|
|
67
|
-
- [ ] 已提供验证证据。
|
|
68
|
-
- [ ] 已完成 Spec Update Review,并记录更新或不更新的原因。
|
|
69
|
-
|
|
70
|
-
## Examples
|
|
71
|
-
|
|
72
|
-
### 内容示例,可删除
|
|
73
|
-
|
|
74
|
-
修复单页列宽时,先证明根因属于页面 schema,只修改该 schema 和页面测试,并明确禁止修改全局样式。
|
|
75
|
-
|
|
76
|
-
## Anti-patterns
|
|
77
|
-
|
|
78
|
-
直接修改公共组件,既不搜索调用方,也不验证同类页面,把局部问题扩散成全局回归。
|
|
79
|
-
|
|
80
|
-
## Ownership
|
|
81
|
-
|
|
82
|
-
实现者负责填写,Reviewer 核验范围与证据,协议 Owner 裁决歧义。
|
|
83
|
-
|
|
84
|
-
## Change Policy
|
|
85
|
-
|
|
86
|
-
新增检查项必须定义触发、验证和失败动作;降级 P0 检查项必须批准并记录期限。
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
seed_source: pomaster/components/frontend-hard-spec/assets/universal/02-ai-generated-code-protocol.md
|
|
3
|
-
seed_source_sha256: a80ea1c51c9afc0b96001cfffa0675edafb1572563652840bcf88770d81203c8
|
|
4
|
-
seed_version: B6B-1
|
|
5
|
-
lane: frontend
|
|
6
|
-
status: CURRENT
|
|
7
|
-
authority_scope: mixed_required_and_advisory
|
|
8
|
-
applies_to: [frontend]
|
|
9
|
-
related_evidence_specs: []
|
|
10
|
-
related_tools: []
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
# 02 AI 生成代码协议
|
|
14
|
-
|
|
15
|
-
## Scope
|
|
16
|
-
|
|
17
|
-
P0。约束 AI 分析、生成、修改、评审和验证代码时的行为。
|
|
18
|
-
|
|
19
|
-
## Non-Scope
|
|
20
|
-
|
|
21
|
-
不替代人工需求决策、代码所有权、测试、合规审批或上线责任。
|
|
22
|
-
|
|
23
|
-
## Terms
|
|
24
|
-
|
|
25
|
-
- AI Change Plan:写代码前声明的协议、事实、范围和验证计划。
|
|
26
|
-
- Invented Contract:无正式来源而猜测的字段、状态、权限、API 或规则。
|
|
27
|
-
- Unrelated Change:当前目标不需要的修改。
|
|
28
|
-
|
|
29
|
-
## MUST
|
|
30
|
-
|
|
31
|
-
- AI 写代码前读取适用协议并输出 Change Plan。
|
|
32
|
-
- AI 必须先搜索已有组件、抽象、契约、工具和同类实现。
|
|
33
|
-
- AI 必须区分事实、推断和待确认项。
|
|
34
|
-
- AI 必须说明为什么修改这些文件、为什么不修改其他层。
|
|
35
|
-
- AI 必须运行可用检查并如实报告未验证项。
|
|
36
|
-
- AI 必须保留与任务无关的用户现有改动。
|
|
37
|
-
|
|
38
|
-
## MUST NOT
|
|
39
|
-
|
|
40
|
-
- MUST NOT 发明正式字段、枚举、公式、权限码、接口、路由或配置。
|
|
41
|
-
- MUST NOT 重复创建已有能力。
|
|
42
|
-
- MUST NOT 删除测试、降低断言、关闭规则或用类型逃逸掩盖问题。
|
|
43
|
-
- MUST NOT 声称执行了实际未运行的验证。
|
|
44
|
-
|
|
45
|
-
## SHOULD
|
|
46
|
-
|
|
47
|
-
- SHOULD 把重复决策沉淀为协议、contract 或自动检查。
|
|
48
|
-
- SHOULD 为高风险公共变更提供迁移和回滚。
|
|
49
|
-
|
|
50
|
-
## Contract
|
|
51
|
-
|
|
52
|
-
```text
|
|
53
|
-
Goal, Protocols, Facts, Assumptions, TODO_CONFIRM,
|
|
54
|
-
ReuseSearch, FilesToChange, FilesNotToChange,
|
|
55
|
-
Validation, ResidualRisk
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
## Checklist
|
|
59
|
-
|
|
60
|
-
- [ ] 已读协议和正式契约。
|
|
61
|
-
- [ ] 已证明新建必要性。
|
|
62
|
-
- [ ] 未猜测业务和接口事实。
|
|
63
|
-
- [ ] 修改与同步范围明确。
|
|
64
|
-
- [ ] 验证结果真实可复核。
|
|
65
|
-
|
|
66
|
-
## Examples
|
|
67
|
-
|
|
68
|
-
### 内容示例,可删除
|
|
69
|
-
|
|
70
|
-
AI 修复报表列宽前识别列 schema 所属层级,验证相同表格类型,再修改领域 preset。
|
|
71
|
-
|
|
72
|
-
## Anti-patterns
|
|
73
|
-
|
|
74
|
-
未搜索组件库便新建相似组件,并顺手重构 store、API 和全局样式。
|
|
75
|
-
|
|
76
|
-
## Ownership
|
|
77
|
-
|
|
78
|
-
AI 仅为 Contributor;任务、代码、评审和上线分别由对应人类 Owner 负责。
|
|
79
|
-
|
|
80
|
-
## Change Policy
|
|
81
|
-
|
|
82
|
-
放宽 AI 禁止规则必须由工程治理和领域 Owner 批准;新型 AI 错误应转为协议或门禁。
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
seed_source: pomaster/components/frontend-hard-spec/assets/universal/03-acceptance-gate-protocol.md
|
|
3
|
-
seed_source_sha256: 646dcbd7035d43d84ca592218a356c08a4baca36619109797322d90ba3d99b73
|
|
4
|
-
seed_version: B6B-1
|
|
5
|
-
lane: frontend
|
|
6
|
-
status: CURRENT
|
|
7
|
-
authority_scope: mixed_required_and_advisory
|
|
8
|
-
applies_to: [frontend]
|
|
9
|
-
related_evidence_specs: []
|
|
10
|
-
related_tools: []
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
# 03 验收门禁协议
|
|
14
|
-
|
|
15
|
-
## Scope
|
|
16
|
-
|
|
17
|
-
P0。定义变更何时可以进入 Review、提测和上线,以及各阶段的必备证据。
|
|
18
|
-
|
|
19
|
-
## Non-Scope
|
|
20
|
-
|
|
21
|
-
不指定测试框架,不替代业务验收、发布平台操作或人工批准责任。
|
|
22
|
-
|
|
23
|
-
## Terms
|
|
24
|
-
|
|
25
|
-
- Ready for Review:实现和自检完成。
|
|
26
|
-
- Ready for Test:评审阻塞关闭,构建可测试。
|
|
27
|
-
- Ready for Release:质量、安全、监控和回滚可用。
|
|
28
|
-
- Ready for Development:相关项目级和需求级 spec 已达到 Baseline 或批准的 Candidate。
|
|
29
|
-
- Blocker:不满足即禁止进入下一阶段的问题。
|
|
30
|
-
|
|
31
|
-
## MUST
|
|
32
|
-
|
|
33
|
-
- 每个阶段输出 pass、fail 或有期限的 exception,并附证据。
|
|
34
|
-
- P0 门禁失败时禁止进入下一阶段。
|
|
35
|
-
- 契约、权限、安全、数据迁移和回滚风险必须确认。
|
|
36
|
-
- 公共能力变更必须验证全部受影响调用方。
|
|
37
|
-
- 例外必须记录负责人、风险、补偿措施和期限。
|
|
38
|
-
- 开发前必须确认命中的项目级、需求级、组件级和接口级 spec 状态。
|
|
39
|
-
- Review、提测、上线或任务关闭前必须确认 Spec Update Review 已完成。
|
|
40
|
-
|
|
41
|
-
## MUST NOT
|
|
42
|
-
|
|
43
|
-
- MUST NOT 以时间紧、人工点过或本地正常绕过 P0。
|
|
44
|
-
- MUST NOT 在测试失败、契约未冻结或回滚不可用时放行。
|
|
45
|
-
- MUST NOT 将未知风险标记为通过。
|
|
46
|
-
- MUST NOT 在 spec 仍为 Draft 且无批准 Candidate 的情况下进入正式开发。
|
|
47
|
-
- MUST NOT 将收口(closeout)、归档、发布记录当作 Spec Update Review 的替代品。
|
|
48
|
-
|
|
49
|
-
## SHOULD
|
|
50
|
-
|
|
51
|
-
- SHOULD 自动采集 lint、类型、测试、构建、安全和包体证据。
|
|
52
|
-
- SHOULD 按风险设置附加门禁。
|
|
53
|
-
|
|
54
|
-
## Contract
|
|
55
|
-
|
|
56
|
-
```text
|
|
57
|
-
Gate, SpecStatus, Result, Evidence[], Blockers[], Risks[],
|
|
58
|
-
Approver, ExceptionExpiry?, RollbackVerified?, SpecUpdateReviewed?
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
## Checklist
|
|
62
|
-
|
|
63
|
-
- [ ] Review 前范围、契约、自检齐全。
|
|
64
|
-
- [ ] 提测前评审关闭、构建成功、环境明确。
|
|
65
|
-
- [ ] 上线前回归、安全、监控、灰度、回滚通过。
|
|
66
|
-
- [ ] 例外有负责人和到期时间。
|
|
67
|
-
- [ ] 开发前 Ready for Development 已通过。
|
|
68
|
-
- [ ] 收尾前 Spec Update Review 已完成。
|
|
69
|
-
|
|
70
|
-
## Examples
|
|
71
|
-
|
|
72
|
-
### 内容示例,可删除
|
|
73
|
-
|
|
74
|
-
公共表格变更在组件测试、代表页面 E2E 和视觉回归通过后才可提测。
|
|
75
|
-
|
|
76
|
-
## Anti-patterns
|
|
77
|
-
|
|
78
|
-
仅凭“改动很小”跳过构建和调用方验证,直接交付测试或发布。
|
|
79
|
-
|
|
80
|
-
## Ownership
|
|
81
|
-
|
|
82
|
-
实现者提供 Review 证据,Reviewer/QA 确认提测,发布和风险 Owner 确认上线。
|
|
83
|
-
|
|
84
|
-
## Change Policy
|
|
85
|
-
|
|
86
|
-
门禁降级或删除必须有书面风险评估、批准人和恢复计划。
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
seed_source: pomaster/components/frontend-hard-spec/assets/universal/05-environment-configuration-protocol.md
|
|
3
|
-
seed_source_sha256: 3affc23c84d64d10c8911b84bd9db82a34fcb9b675f7365672d554ecf34c8fb6
|
|
4
|
-
seed_version: B6B-1
|
|
5
|
-
lane: frontend
|
|
6
|
-
status: CURRENT
|
|
7
|
-
authority_scope: mixed_required_and_advisory
|
|
8
|
-
applies_to: [frontend]
|
|
9
|
-
related_evidence_specs: []
|
|
10
|
-
related_tools: []
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
# 05 环境与配置协议
|
|
14
|
-
|
|
15
|
-
## Scope
|
|
16
|
-
|
|
17
|
-
P0。管理环境划分、配置来源、环境变量、API 地址、Mock、日志等级和 Feature Flag 接入。
|
|
18
|
-
|
|
19
|
-
## Non-Scope
|
|
20
|
-
|
|
21
|
-
不保存真实密钥,不定义后端部署,也不替代安全或 Feature Flag 业务协议。
|
|
22
|
-
|
|
23
|
-
## Terms
|
|
24
|
-
|
|
25
|
-
- Build-time Config:构建时固化的公开配置。
|
|
26
|
-
- Runtime Config:部署后可替换的公开配置。
|
|
27
|
-
- Secret:不得进入前端的敏感值。
|
|
28
|
-
- Environment:相互隔离的运行域。
|
|
29
|
-
|
|
30
|
-
## MUST
|
|
31
|
-
|
|
32
|
-
- 配置必须有 schema、类型、默认值、必填校验和环境矩阵。
|
|
33
|
-
- API、Mock、日志和环境标识从统一配置模块读取。
|
|
34
|
-
- 生产默认关闭 Mock、调试日志和开发工具。
|
|
35
|
-
- 缺少必填配置时启动失败或安全降级,不得猜值。
|
|
36
|
-
- 所有客户端配置均按公开信息处理。
|
|
37
|
-
|
|
38
|
-
## MUST NOT
|
|
39
|
-
|
|
40
|
-
- MUST NOT 在业务代码硬编码环境 URL、密钥或凭据。
|
|
41
|
-
- MUST NOT 让组件读取底层环境变量。
|
|
42
|
-
- MUST NOT 意外跨环境连接数据。
|
|
43
|
-
- MUST NOT 将环境文件当密钥保险箱提交。
|
|
44
|
-
|
|
45
|
-
## SHOULD
|
|
46
|
-
|
|
47
|
-
- SHOULD 提供无敏感值的配置示例和启动校验。
|
|
48
|
-
- SHOULD 明确标识非生产环境。
|
|
49
|
-
|
|
50
|
-
## Contract
|
|
51
|
-
|
|
52
|
-
```text
|
|
53
|
-
ConfigKey, Type, Required, Public, Default,
|
|
54
|
-
AllowedEnvironments, Validation, Owner
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
## Checklist
|
|
58
|
-
|
|
59
|
-
- [ ] schema 和环境矩阵完整。
|
|
60
|
-
- [ ] 生产安全默认值明确。
|
|
61
|
-
- [ ] 前端产物无秘密值。
|
|
62
|
-
- [ ] Mock、日志和 API 来源统一。
|
|
63
|
-
|
|
64
|
-
## Examples
|
|
65
|
-
|
|
66
|
-
### 内容示例,可删除
|
|
67
|
-
|
|
68
|
-
业务 API 只读取 typed config 的 `apiBaseUrl`,组件不知道原始变量名称。
|
|
69
|
-
|
|
70
|
-
## Anti-patterns
|
|
71
|
-
|
|
72
|
-
在多个 API 文件硬编码不同测试地址,通过注释切换生产地址。
|
|
73
|
-
|
|
74
|
-
## Ownership
|
|
75
|
-
|
|
76
|
-
平台维护环境值,前端架构维护 schema,安全 Owner 裁决敏感性。
|
|
77
|
-
|
|
78
|
-
## Change Policy
|
|
79
|
-
|
|
80
|
-
配置增删改必须同步 schema、示例、部署矩阵和回滚;破坏性变更提供迁移期。
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
seed_source: pomaster/components/frontend-hard-spec/assets/universal/06-change-governance-protocol.md
|
|
3
|
-
seed_source_sha256: 2f19b46e451153cab35e9fb511d9da0f072f86424e7d3f7a6b307cd17a9d1b32
|
|
4
|
-
seed_version: B6B-1
|
|
5
|
-
lane: frontend
|
|
6
|
-
status: CURRENT
|
|
7
|
-
authority_scope: mixed_required_and_advisory
|
|
8
|
-
applies_to: [frontend]
|
|
9
|
-
related_evidence_specs: []
|
|
10
|
-
related_tools: []
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
# 06 变更治理协议
|
|
14
|
-
|
|
15
|
-
## Scope
|
|
16
|
-
|
|
17
|
-
P0。管理公共组件、公共 API、样式、状态、schema 和平台能力的影响评估、兼容、废弃和迁移。
|
|
18
|
-
|
|
19
|
-
## Non-Scope
|
|
20
|
-
|
|
21
|
-
不定义单个组件的业务功能,不替代版本发布和代码评审。
|
|
22
|
-
|
|
23
|
-
## Terms
|
|
24
|
-
|
|
25
|
-
- Public Contract:被多个调用方依赖的稳定接口或默认行为。
|
|
26
|
-
- Breaking Change:要求调用方修改才能继续工作的变更。
|
|
27
|
-
- Deprecated:仍可用但已声明迁移目标和删除期限的能力。
|
|
28
|
-
- Spec Status:Draft、Candidate、Baseline、Controlled Change 或 Release Review。
|
|
29
|
-
- Baseline:可作为开发依据的冻结版本。
|
|
30
|
-
- Controlled Change:Baseline 后带影响、Owner、迁移和验证证据的受控修改。
|
|
31
|
-
|
|
32
|
-
## MUST
|
|
33
|
-
|
|
34
|
-
- 公共变更前列出直接/间接调用方和受影响场景。
|
|
35
|
-
- 保持兼容或提供迁移方案、版本范围和回滚。
|
|
36
|
-
- 更新 contract、示例、测试、文档和通知。
|
|
37
|
-
- 删除前必须先 deprecated 并确认无使用方。
|
|
38
|
-
- 局部问题与公共问题必须按根因选择修改层级。
|
|
39
|
-
- 项目级 spec、需求级 spec、公共组件 spec 和接口 spec 必须记录状态、版本、Owner、更新时间和生效范围。
|
|
40
|
-
- Baseline 后修改公共组件 API、接口字段、权限码、错误码、Design Token、目录边界、状态模型、金额精度或验收门禁,必须走 Controlled Change。
|
|
41
|
-
- 每次开发后的 Spec Update Review 必须把新规则归类为:需求级记录、长期 spec、通用规范候选或无需更新。
|
|
42
|
-
|
|
43
|
-
## MUST NOT
|
|
44
|
-
|
|
45
|
-
- MUST NOT 随意改变公共默认行为。
|
|
46
|
-
- MUST NOT 为单页临时需求修改公共 API。
|
|
47
|
-
- MUST NOT 只修一个页面来掩盖公共问题。
|
|
48
|
-
- MUST NOT 无迁移地删除 props、事件、字段或状态。
|
|
49
|
-
- MUST NOT 把 Draft 或示例内容当作 Baseline 执行。
|
|
50
|
-
- MUST NOT 把 Draft 或示例内容当作 Baseline 执行。
|
|
51
|
-
|
|
52
|
-
## SHOULD
|
|
53
|
-
|
|
54
|
-
- SHOULD 使用影响模板、自动调用图和 deprecated 提示。
|
|
55
|
-
- SHOULD 将公共变更拆成兼容引入、迁移、删除阶段。
|
|
56
|
-
|
|
57
|
-
## Contract
|
|
58
|
-
|
|
59
|
-
```text
|
|
60
|
-
Change, SpecStatus, Version, Owner, AffectedConsumers[],
|
|
61
|
-
Compatibility, Migration, DeprecationDate?, RemovalDate?,
|
|
62
|
-
Tests, Rollback, SpecUpdateDecision
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
## Checklist
|
|
66
|
-
|
|
67
|
-
- [ ] 根因层级明确。
|
|
68
|
-
- [ ] 调用方清单完整。
|
|
69
|
-
- [ ] 兼容、迁移和回滚可执行。
|
|
70
|
-
- [ ] 测试、示例和通知已更新。
|
|
71
|
-
- [ ] Spec 状态、版本、Owner 和生效范围已记录。
|
|
72
|
-
- [ ] 开发后规则回填已归类并执行。
|
|
73
|
-
|
|
74
|
-
## Examples
|
|
75
|
-
|
|
76
|
-
### 内容示例,可删除
|
|
77
|
-
|
|
78
|
-
新增 props 保留旧默认值,发布迁移说明,调用方完成迁移后再删除旧 props。
|
|
79
|
-
|
|
80
|
-
## Anti-patterns
|
|
81
|
-
|
|
82
|
-
为一个页面修改公共组件默认 padding,导致所有页面布局变化且没有视觉回归。
|
|
83
|
-
|
|
84
|
-
## Ownership
|
|
85
|
-
|
|
86
|
-
公共能力 Owner 对兼容负责,调用方 Owner 对迁移负责,架构 Owner 裁决跨模块影响。
|
|
87
|
-
|
|
88
|
-
## Change Policy
|
|
89
|
-
|
|
90
|
-
Breaking Change 必须版本化;紧急修复仍需事后补齐影响、通知和迁移记录。
|
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
seed_source: pomaster/components/frontend-hard-spec/assets/universal/07-frontend-backend-communication-protocol.md
|
|
3
|
-
seed_source_sha256: b14d2f8281198ff663e6e21e58df2e429c4683907cb77b6ebcdb6609d37f72d2
|
|
4
|
-
seed_version: B6B-1
|
|
5
|
-
lane: frontend
|
|
6
|
-
status: CURRENT
|
|
7
|
-
authority_scope: mixed_required_and_advisory
|
|
8
|
-
applies_to: [frontend]
|
|
9
|
-
related_evidence_specs: []
|
|
10
|
-
related_tools: []
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
# 07 前后端通信协议
|
|
14
|
-
|
|
15
|
-
## Scope
|
|
16
|
-
|
|
17
|
-
P0。定义前后端共同确认的接口、认证、错误、幂等、并发、文件、任务、实时通信和版本契约。
|
|
18
|
-
|
|
19
|
-
## Non-Scope
|
|
20
|
-
|
|
21
|
-
不规定前端请求库实现、页面错误呈现或具体后端框架。
|
|
22
|
-
|
|
23
|
-
## Terms
|
|
24
|
-
|
|
25
|
-
- Formal Contract:可版本化、可校验的 OpenAPI 或等价契约。
|
|
26
|
-
- Idempotency:重复请求不产生重复业务结果。
|
|
27
|
-
- Optimistic Concurrency:通过 version/ETag 防止静默覆盖。
|
|
28
|
-
- TraceId:贯穿请求、任务和日志的问题定位标识。
|
|
29
|
-
|
|
30
|
-
## MUST
|
|
31
|
-
|
|
32
|
-
- 每个 endpoint 定义 URL、Method、参数位置、类型、响应、错误、权限和 owner。
|
|
33
|
-
- 分页、筛选、排序、空值、枚举、单位和时间语义必须明确。
|
|
34
|
-
- 写操作定义幂等、并发版本和缓存影响。
|
|
35
|
-
- 文件、异步任务和实时消息使用正式 schema。
|
|
36
|
-
- 破坏性变更必须版本化并提供迁移期。
|
|
37
|
-
- 所有错误和任务链路可通过 TraceId 追踪。
|
|
38
|
-
- 错误码到 UI 状态的映射必须维护在单一事实源 `outputs/frontend/10_planned/api-error-mapping.yaml`,并与契约版本同步。
|
|
39
|
-
|
|
40
|
-
## MUST NOT
|
|
41
|
-
|
|
42
|
-
- MUST NOT 用口头、截图、Mock 或示例替代正式契约。
|
|
43
|
-
- MUST NOT 依赖 message 文本表达业务错误。
|
|
44
|
-
- MUST NOT 用按钮 loading 代替后端幂等。
|
|
45
|
-
- MUST NOT 未版本化地修改字段、枚举、分页或错误语义。
|
|
46
|
-
|
|
47
|
-
## SHOULD
|
|
48
|
-
|
|
49
|
-
- SHOULD 以机器可读契约生成类型、Mock 和校验。
|
|
50
|
-
- SHOULD 对任务进度优先使用 SSE,双向场景再用 WebSocket。
|
|
51
|
-
|
|
52
|
-
## Contract
|
|
53
|
-
|
|
54
|
-
### 接口元数据
|
|
55
|
-
|
|
56
|
-
```text
|
|
57
|
-
Endpoint, Method, Auth, Permission, RequestSchema,
|
|
58
|
-
ResponseSchema, ErrorSchema, Idempotency,
|
|
59
|
-
Concurrency, Cache, RateLimit, Version, Owner
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
每个接口还必须记录用途、所属领域、稳定 operation id、超时、弃用状态和变更历史。口头约定、Mock、抓包结果和前端临时类型只能作为评审输入,不能成为主契约。
|
|
63
|
-
|
|
64
|
-
### URL 与 Method
|
|
65
|
-
|
|
66
|
-
- URL 使用稳定资源名和层级,不把页面动作或展示标题编码进路径。
|
|
67
|
-
- GET 只读且可安全重试;POST/PUT/PATCH/DELETE 的创建、替换、部分更新和删除语义必须明确。
|
|
68
|
-
- 提交、审批、归档、计算等非 CRUD 动作使用明确领域动作,不使用 `doAction` 等万能端点。
|
|
69
|
-
- Path 参数标识资源,Query 表达分页/筛选/排序,Header 表达协议上下文,Body 表达命令或资源数据。
|
|
70
|
-
|
|
71
|
-
### 请求参数
|
|
72
|
-
|
|
73
|
-
每个字段必须定义:名称、位置、类型、必填、nullable、默认值、长度/范围、格式、枚举、单位、时区、示例和未知值策略。空字符串、null、缺失字段和空数组的语义不得混用。
|
|
74
|
-
|
|
75
|
-
### 响应结构
|
|
76
|
-
|
|
77
|
-
- 成功响应必须声明 HTTP status、内容类型、数据 schema、可空性和 TraceId。
|
|
78
|
-
- 列表必须固定数据数组、页码或游标、pageSize、total/hasNext 的语义。
|
|
79
|
-
- 删除、提交、异步创建等操作必须明确同步结果、任务标识或无内容响应。
|
|
80
|
-
- 前端不得为同一业务同时兼容多个未版本化 envelope。
|
|
81
|
-
|
|
82
|
-
### 错误结构
|
|
83
|
-
|
|
84
|
-
```text
|
|
85
|
-
Error {
|
|
86
|
-
httpStatus,
|
|
87
|
-
code,
|
|
88
|
-
safeMessage?,
|
|
89
|
-
traceId,
|
|
90
|
-
fieldErrors?,
|
|
91
|
-
itemErrors?,
|
|
92
|
-
retryable,
|
|
93
|
-
retryAfter?,
|
|
94
|
-
conflictVersion?
|
|
95
|
-
}
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
- HTTP status 表达认证、权限、资源、冲突、校验、限流和服务状态。
|
|
99
|
-
- 业务 code 必须稳定且可枚举,message 仅用于展示或诊断,不能驱动逻辑。
|
|
100
|
-
- 字段错误包含稳定 field key、错误码和参数;批量错误包含对象/行标识。
|
|
101
|
-
- 409 返回冲突实体或重新获取方式;429 返回明确退避信息;5xx 不代表所有请求均可重试。
|
|
102
|
-
|
|
103
|
-
### DTO、Adapter 与 ViewModel
|
|
104
|
-
|
|
105
|
-
接口契约定义 DTO。前端通过 Adapter 转成稳定 Domain Model/ViewModel;公共组件、表格列和模板不得直接依赖 DTO。字段重命名、null、枚举、日期和金额转换只能在边界完成。
|
|
106
|
-
|
|
107
|
-
### 分页、筛选与排序
|
|
108
|
-
|
|
109
|
-
- 页码起点或游标语义、pageSize 上限、total 是否精确必须固定。
|
|
110
|
-
- 筛选字段采用允许列表,并定义操作符、组合逻辑、空值和时间区间。
|
|
111
|
-
- 排序字段和方向采用允许列表;需要稳定结果时声明次排序。
|
|
112
|
-
- 导出必须复用列表筛选语义,并明确当前页、选中项或符合条件的全量范围。
|
|
113
|
-
|
|
114
|
-
### 权限通信
|
|
115
|
-
|
|
116
|
-
- 接口声明认证要求、操作权限和数据范围。
|
|
117
|
-
- 后端只返回调用方有权访问的数据;前端隐藏入口不能替代鉴权。
|
|
118
|
-
- 字段可见、脱敏、编辑和导出权限必须有稳定 contract。
|
|
119
|
-
- 权限变化后 token、缓存和已打开页面如何失效必须明确。
|
|
120
|
-
|
|
121
|
-
### 认证与 Token
|
|
122
|
-
|
|
123
|
-
必须定义 access/refresh token 生命周期、传输位置、刷新、撤销、退出、多标签同步、并发 401 合并和 CSRF 策略。Token 不得出现在 URL、日志、埋点或业务组件。
|
|
124
|
-
|
|
125
|
-
### 幂等性
|
|
126
|
-
|
|
127
|
-
- 创建、提交、审批、批量动作、导入、导出和计算等可能重复执行的命令必须声明幂等支持。
|
|
128
|
-
- 幂等键的生成方、作用域、有效期、重复请求响应和冲突行为必须固定。
|
|
129
|
-
- 前端按钮禁用和 loading 只是体验保护,不构成业务幂等。
|
|
130
|
-
|
|
131
|
-
### 并发与数据冲突
|
|
132
|
-
|
|
133
|
-
- 可编辑资源返回 version、updatedAt 或 ETag,并在更新命令携带预期版本。
|
|
134
|
-
- 冲突必须显式返回,不允许静默 last-write-wins。
|
|
135
|
-
- 契约声明刷新、放弃本地修改、重新提交和字段 diff 所需数据。
|
|
136
|
-
|
|
137
|
-
### 缓存与刷新
|
|
138
|
-
|
|
139
|
-
接口声明可缓存性、ETag/version、数据实时性和写操作影响资源。权限、BOM、成本、审批等高风险数据不得由调用方擅自延长缓存;mutation 必须提供足够信息完成准确失效。
|
|
140
|
-
|
|
141
|
-
### 文件上传与下载
|
|
142
|
-
|
|
143
|
-
- 上传声明 multipart 字段、类型、大小、数量、文件名、校验阶段和安全错误。
|
|
144
|
-
- 下载声明内容类型、文件名编码、权限、数据范围、有效期和断点/大文件策略。
|
|
145
|
-
- 文件 URL 不得成为永久越权入口,下载时必须重新授权。
|
|
146
|
-
|
|
147
|
-
### 异步任务
|
|
148
|
-
|
|
149
|
-
```text
|
|
150
|
-
Job {
|
|
151
|
-
taskId, type, status, progress,
|
|
152
|
-
message?, result?, error?, traceId,
|
|
153
|
-
createdAt, updatedAt
|
|
154
|
-
}
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
必须定义创建、查询、取消、重试、结果、错误明细、过期和幂等。状态机至少区分 pending、running、success、failed、cancelled;新增状态需契约变更。
|
|
158
|
-
|
|
159
|
-
### 实时通信
|
|
160
|
-
|
|
161
|
-
- 服务端单向进度和通知优先 SSE;双向协作才使用 WebSocket;轮询为降级。
|
|
162
|
-
- 消息至少包含 messageId、type、payload、timestamp、version 和 TraceId。
|
|
163
|
-
- 必须定义鉴权、心跳、断线重连、重复、乱序、丢失、回放、完成终止和降级行为。
|
|
164
|
-
|
|
165
|
-
### 版本兼容
|
|
166
|
-
|
|
167
|
-
- 新增可选字段通常向后兼容;删除、改名、类型、枚举或语义变化属于破坏性变更。
|
|
168
|
-
- 未知枚举必须安全兜底,但不得静默赋予业务含义。
|
|
169
|
-
- 破坏性变化提供新版本、调用方清单、迁移期、弃用日期和回滚。
|
|
170
|
-
- 生成类型、Adapter、Mock、导入导出和测试必须随契约同步。
|
|
171
|
-
|
|
172
|
-
### 联调流程
|
|
173
|
-
|
|
174
|
-
正式流程为:契约提案 -> 示例/Mock -> 前后端与业务评审 -> 冻结 -> 类型生成/Adapter -> 联调 -> 非理想态验收 -> 发布。联调不能只验证 200,至少覆盖 401、403、409、422、429、5xx、超时和部分成功。
|
|
175
|
-
|
|
176
|
-
### TraceId
|
|
177
|
-
|
|
178
|
-
客户端操作、HTTP 请求、异步任务、实时消息、后端日志和用户可见错误应能关联 TraceId/OperationId。TraceId 不携带敏感信息,并在跨服务时保持或建立明确父子关系。
|
|
179
|
-
|
|
180
|
-
### 错误码到 UI 状态映射
|
|
181
|
-
|
|
182
|
-
`outputs/frontend/10_planned/api-error-mapping.yaml` 是每个项目必须维护的事实源,字段包括:
|
|
183
|
-
|
|
184
|
-
```text
|
|
185
|
-
ErrorCode, HttpStatus, UIState, RecoverAction, DefaultMessage, TraceIdRequired, ContractVersion
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
- 每个稳定业务 code 必须映射到唯一 UI 状态(idle/loading/error/success/retry/conflict/permission)。
|
|
189
|
-
- 映射必须随契约版本升级;破坏性 code 变化属于契约变更。
|
|
190
|
-
- UI 不得直接按 message 文本或 HTTP status 推导状态;未映射 code 必须进入兜底状态并记录。
|
|
191
|
-
|
|
192
|
-
## Checklist
|
|
193
|
-
|
|
194
|
-
- [ ] 请求/响应和错误完整。
|
|
195
|
-
- [ ] 参数位置、空值、枚举、单位和时间语义明确。
|
|
196
|
-
- [ ] 分页、筛选、排序和导出语义一致。
|
|
197
|
-
- [ ] 权限、幂等、并发明确。
|
|
198
|
-
- [ ] 文件/任务/实时契约完整。
|
|
199
|
-
- [ ] 兼容和 TraceId 可验证。
|
|
200
|
-
- [ ] 类型、Adapter、Mock 和错误场景随契约同步。
|
|
201
|
-
- [ ] api-error-mapping.yaml 已维护并与契约版本一致。
|
|
202
|
-
|
|
203
|
-
## Examples
|
|
204
|
-
|
|
205
|
-
### 内容示例,可删除
|
|
206
|
-
|
|
207
|
-
更新实体携带预期 version;冲突返回 409、稳定错误码、服务器版本和 TraceId。批量导入返回 taskId,进度消息使用固定 Job/Realtime schema,完成后按契约刷新受影响资源。
|
|
208
|
-
|
|
209
|
-
## Anti-patterns
|
|
210
|
-
|
|
211
|
-
前端按 Mock 猜字段,后端改名后页面同时兼容多种响应并比较错误 message;创建、导入和审批只靠按钮 loading 防重;轮询、SSE 和 WebSocket 又各自定义一套任务状态。
|
|
212
|
-
|
|
213
|
-
## Ownership
|
|
214
|
-
|
|
215
|
-
前后端 API Owner 共同负责,业务 Owner 确认语义,安全 Owner 确认认证和权限。
|
|
216
|
-
|
|
217
|
-
## Change Policy
|
|
218
|
-
|
|
219
|
-
契约先评审、再冻结、后实现;破坏性变化必须有版本、调用方清单、迁移和退役日期。
|