pomaster 0.4.0 → 0.5.0
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 +51 -15
- 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 +10121 -6733
- 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
package/seeds/specs/hard/{frontend/31-performance-protocol.md → themes/performance-and-capacity.md}
RENAMED
|
@@ -1,35 +1,70 @@
|
|
|
1
1
|
---
|
|
2
|
-
seed_source:
|
|
3
|
-
seed_source_sha256:
|
|
4
|
-
seed_version:
|
|
5
|
-
lane: frontend
|
|
2
|
+
seed_source: packages/cli/seeds/aggregation-manifest.json
|
|
3
|
+
seed_source_sha256: 039b637ccffacdfe3ce30d85e193f4b38928fcdfb16efdc4eb255e35e05af91f
|
|
4
|
+
seed_version: B7-THEME
|
|
5
|
+
lane: [frontend, backend]
|
|
6
6
|
status: CURRENT
|
|
7
7
|
authority_scope: mixed_required_and_advisory
|
|
8
|
-
applies_to: [frontend]
|
|
8
|
+
applies_to: [frontend, backend]
|
|
9
9
|
related_evidence_specs: []
|
|
10
10
|
related_tools: []
|
|
11
|
+
legacy_id: theme:performance-and-capacity
|
|
12
|
+
criticality: standard # 聚合注记:取源最高;info 性注记非执行语义
|
|
13
|
+
injection_mode: triggered # 聚合注记:来源同值;info 性注记非执行语义
|
|
14
|
+
stages: [prepare, check, release] # 聚合注记:来源 stages 并集;info 性注记非执行语义
|
|
15
|
+
triggers: [performance, capacity] # 聚合注记:来源 triggers 并集;info 性注记非执行语义
|
|
16
|
+
requires: [] # 聚合注记:来源 requires 并集(全空)
|
|
17
|
+
x-aggregation: # 聚合来源(D6):逐源 vendor pin(sha256 与卡 vendor_pin 同值)
|
|
18
|
+
- seed_source: pomaster/components/frontend-hard-spec/assets/universal/31-performance-protocol.md
|
|
19
|
+
sha256: 416ff411c75e538feec3aad8be5e733b95913580fd937c0abebd16aa0d21608c
|
|
20
|
+
seed_version: B6B-2
|
|
21
|
+
- seed_source: pomaster/components/backend-hard-spec/assets/universal/30-performance-capacity-protocol.md
|
|
22
|
+
sha256: b575dd07e4bb6def646acb55c3d62d086a9fd12035b2ab359ec353bf443773e5
|
|
23
|
+
seed_version: B6C
|
|
11
24
|
---
|
|
12
25
|
|
|
13
|
-
#
|
|
26
|
+
# 性能与容量
|
|
27
|
+
|
|
28
|
+
> **聚合纪律**:本文档 12 节正文规则行逐字取自 frontmatter x-aggregation 所列来源协议(节内按「端 → 源编号升序」以加粗来源行分块,源内标题与层级原样保留),零新增、零改写、零删除;新增文本仅限文档标题、本注记与逐节来源行。
|
|
14
29
|
|
|
15
30
|
## Scope
|
|
16
31
|
|
|
32
|
+
**源:FE 31 性能协议(pomaster/components/frontend-hard-spec/assets/universal/31-performance-protocol.md)**
|
|
33
|
+
|
|
17
34
|
P1。定义首屏、包体、请求、列表、表格、图表、长任务和渲染稳定的性能规则。
|
|
18
35
|
|
|
36
|
+
**源:BE 30 性能与容量协议(pomaster/components/backend-hard-spec/assets/universal/30-performance-capacity-protocol.md)**
|
|
37
|
+
|
|
38
|
+
规范延迟、吞吐、连接池、线程、批处理、背压、容量和压测证据。
|
|
39
|
+
|
|
19
40
|
## Non-Scope
|
|
20
41
|
|
|
42
|
+
**源:FE 31 性能协议**
|
|
43
|
+
|
|
21
44
|
不替代后端容量规划和基础设施性能,不允许只追分数牺牲正确性。
|
|
22
45
|
|
|
46
|
+
**源:BE 30 性能与容量协议**
|
|
47
|
+
|
|
48
|
+
不在 universal 中规定具体数值阈值或硬件规模。
|
|
49
|
+
|
|
23
50
|
## Terms
|
|
24
51
|
|
|
52
|
+
**源:FE 31 性能协议**
|
|
53
|
+
|
|
25
54
|
- Performance Budget:可验证的时间、大小或资源阈值。
|
|
26
55
|
- Core Web Vitals:LCP、INP、CLS 等反映加载、交互响应和视觉稳定性的用户体验指标。
|
|
27
56
|
- RUM Distribution:按页面类型、设备、网络、浏览器、版本和采样窗口聚合的真实用户指标分布。
|
|
28
57
|
- Virtualization:仅渲染可见窗口数据。
|
|
29
58
|
- Stale Response:已被新请求替代的旧响应。
|
|
30
59
|
|
|
60
|
+
**源:BE 30 性能与容量协议**
|
|
61
|
+
|
|
62
|
+
性能预算是由业务目标与运行环境确认的可测量约束。
|
|
63
|
+
|
|
31
64
|
## MUST
|
|
32
65
|
|
|
66
|
+
**源:FE 31 性能协议 · §MUST**
|
|
67
|
+
|
|
33
68
|
- 定义首屏、包体、交互和核心页面预算。
|
|
34
69
|
- 路由、图表和重组件按需加载。
|
|
35
70
|
- 大列表服务端分页,宽表虚拟化。
|
|
@@ -53,8 +88,14 @@ P1。定义首屏、包体、请求、列表、表格、图表、长任务和渲
|
|
|
53
88
|
- **feature 层 — 页面级性能**:页面进入核心优先、非核心延迟加载(如 BOM 编辑页:核心表格先加载,历史/图表/分析延迟)。MUST NOT 一次加载页面全部重组件。
|
|
54
89
|
- **shared 层 — 公共组件性能**:Table / Tree / Select / Form / Modal / Virtual List 面对大数据必须虚拟滚动或分页。MUST NOT 大列表用普通 `v-for` 渲染全量数据(如 10000 行表格普通渲染)。
|
|
55
90
|
|
|
91
|
+
**源:BE 30 性能与容量协议 · §MUST**
|
|
92
|
+
|
|
93
|
+
- 性能结论必须绑定负载模型、数据规模、环境、版本和统计口径。
|
|
94
|
+
|
|
56
95
|
## MUST NOT
|
|
57
96
|
|
|
97
|
+
**源:FE 31 性能协议 · §MUST NOT**
|
|
98
|
+
|
|
58
99
|
- MUST NOT 一次渲染大数据全部节点。
|
|
59
100
|
- MUST NOT 每次按键立即请求。
|
|
60
101
|
- MUST NOT 让旧响应覆盖新状态。
|
|
@@ -70,14 +111,26 @@ P1。定义首屏、包体、请求、列表、表格、图表、长任务和渲
|
|
|
70
111
|
- MUST NOT 一次加载页面全部重组件(须核心优先、非核心延迟加载)。
|
|
71
112
|
- MUST NOT 大列表用普通 `v-for` 渲染全量数据(须虚拟滚动或分页)。
|
|
72
113
|
|
|
114
|
+
**源:BE 30 性能与容量协议 · §MUST NOT**
|
|
115
|
+
|
|
116
|
+
- 不得用单次本地耗时、平均值或无代表性数据声称满足容量。
|
|
117
|
+
|
|
73
118
|
## SHOULD
|
|
74
119
|
|
|
120
|
+
**源:FE 31 性能协议 · §SHOULD**
|
|
121
|
+
|
|
75
122
|
- SHOULD 监控真实用户核心指标和业务交互时间。
|
|
76
123
|
- SHOULD 同时观察 p75 与 p95/p99,区分总体回归和长尾退化,并为样本不足标记不可判定而非假定通过。
|
|
77
124
|
- SHOULD 保持行高、工具栏和 loading 尺寸稳定。
|
|
78
125
|
|
|
126
|
+
**源:BE 30 性能与容量协议 · §SHOULD**
|
|
127
|
+
|
|
128
|
+
- 应同时观察尾延迟、错误率、资源、排队、背压和依赖瓶颈。
|
|
129
|
+
|
|
79
130
|
## Contract
|
|
80
131
|
|
|
132
|
+
**源:FE 31 性能协议 · §Contract**
|
|
133
|
+
|
|
81
134
|
```text
|
|
82
135
|
Scenario, DatasetSize, BudgetMetric, Threshold,
|
|
83
136
|
MeasurementMethod, DataSource, MetricVersion, SampleWindow, SampleSize,
|
|
@@ -96,8 +149,14 @@ feature, 页面级性能, 核心优先 + 非核心延迟, 一次加载全部重
|
|
|
96
149
|
shared, 公共组件性能, 虚拟滚动/分页, 大列表普通 v-for
|
|
97
150
|
```
|
|
98
151
|
|
|
152
|
+
**源:BE 30 性能与容量协议 · §Contract**
|
|
153
|
+
|
|
154
|
+
容量计划必须包含场景、预算、峰值、瓶颈、扩缩容和降级策略。
|
|
155
|
+
|
|
99
156
|
## Checklist
|
|
100
157
|
|
|
158
|
+
**源:FE 31 性能协议 · §Checklist**
|
|
159
|
+
|
|
101
160
|
- [ ] 预算和数据量明确。
|
|
102
161
|
- [ ] 分包、分页、虚拟化合理。
|
|
103
162
|
- [ ] 请求并发安全。
|
|
@@ -108,14 +167,26 @@ shared, 公共组件性能, 虚拟滚动/分页, 大列表普通 v-for
|
|
|
108
167
|
- [ ] 隐藏、恢复与离开场景无无效工作和资源泄漏。
|
|
109
168
|
- [ ] 分层性能责任已按 app/platform/api/domain/feature/shared 分担,每层检查点与禁止行为已确认。
|
|
110
169
|
|
|
170
|
+
**源:BE 30 性能与容量协议 · §Checklist**
|
|
171
|
+
|
|
172
|
+
- [ ] 连接池、线程池、队列、批量、缓存与数据库联动已验证。
|
|
173
|
+
|
|
111
174
|
## Examples
|
|
112
175
|
|
|
176
|
+
**源:FE 31 性能协议 · §Examples**
|
|
177
|
+
|
|
113
178
|
### 内容示例,可删除
|
|
114
179
|
|
|
115
180
|
筛选输入防抖并取消旧请求,详情抽屉按需加载,导出创建后台任务。
|
|
116
181
|
|
|
182
|
+
**源:BE 30 性能与容量协议 · §Examples**
|
|
183
|
+
|
|
184
|
+
- 在目标数据量和并发模型下报告 p95/p99、错误率与资源曲线。
|
|
185
|
+
|
|
117
186
|
## Anti-patterns
|
|
118
187
|
|
|
188
|
+
**源:FE 31 性能协议 · §Anti-patterns**
|
|
189
|
+
|
|
119
190
|
下载十万行到浏览器假分页,导致内存和交互崩溃。
|
|
120
191
|
|
|
121
192
|
应用入口同步 import 重型编辑器/图表/大表组件,导致登录页首屏被拖慢。
|
|
@@ -128,10 +199,28 @@ shared, 公共组件性能, 虚拟滚动/分页, 大列表普通 v-for
|
|
|
128
199
|
|
|
129
200
|
10000 行表格用普通 `v-for` 渲染,未虚拟滚动。
|
|
130
201
|
|
|
202
|
+
**源:BE 30 性能与容量协议 · §Anti-patterns**
|
|
203
|
+
|
|
204
|
+
- 盲目增大池大小导致下游过载和更长排队。
|
|
205
|
+
|
|
131
206
|
## Ownership
|
|
132
207
|
|
|
208
|
+
**源:FE 31 性能协议 · §Ownership**
|
|
209
|
+
|
|
133
210
|
前端性能 Owner 维护预算,模块 Owner 修复回归,后端 Owner 配合数据和接口容量。
|
|
134
211
|
|
|
212
|
+
**源:BE 30 性能与容量协议 · §Ownership**
|
|
213
|
+
|
|
214
|
+
业务 Owner 提供负载目标,Backend 与运行角色验证容量。
|
|
215
|
+
|
|
135
216
|
## Change Policy
|
|
136
217
|
|
|
218
|
+
**源:FE 31 性能协议 · §Change Policy**
|
|
219
|
+
|
|
137
220
|
预算放宽必须有数据和批准;新增重依赖或核心页面需建立基线。
|
|
221
|
+
|
|
222
|
+
**源:BE 30 性能与容量协议 · §Change Policy**
|
|
223
|
+
|
|
224
|
+
预算或容量模型变化必须记录来源并重新运行代表性测试。
|
|
225
|
+
|
|
226
|
+
> **语言节**:本主题无语言节挂点(缺席诚实);规则本体即上文通用节。
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
---
|
|
2
|
+
seed_source: packages/cli/seeds/aggregation-manifest.json
|
|
3
|
+
seed_source_sha256: 039b637ccffacdfe3ce30d85e193f4b38928fcdfb16efdc4eb255e35e05af91f
|
|
4
|
+
seed_version: B7-THEME
|
|
5
|
+
lane: [frontend, backend]
|
|
6
|
+
status: CURRENT
|
|
7
|
+
authority_scope: mixed_required_and_advisory
|
|
8
|
+
applies_to: [frontend, backend]
|
|
9
|
+
related_evidence_specs: []
|
|
10
|
+
related_tools: []
|
|
11
|
+
legacy_id: theme:permission-and-authorization
|
|
12
|
+
criticality: critical # 聚合注记:取源最高;info 性注记非执行语义
|
|
13
|
+
injection_mode: triggered # 聚合注记:来源同值;info 性注记非执行语义
|
|
14
|
+
stages: [prepare, implement, check] # 聚合注记:来源 stages 并集;info 性注记非执行语义
|
|
15
|
+
triggers: [authorization, tenant, data-scope] # 聚合注记:来源 triggers 并集;info 性注记非执行语义
|
|
16
|
+
requires: [] # 聚合注记:来源 requires 并集(全空)
|
|
17
|
+
x-aggregation: # 聚合来源(D6):逐源 vendor pin(sha256 与卡 vendor_pin 同值)
|
|
18
|
+
- seed_source: pomaster/components/frontend-hard-spec/assets/universal/17-permission-protocol.md
|
|
19
|
+
sha256: 3f51aeb30497c07a3b552c8f21ecff22730d276c85fd504fde16e9e17b622ec0
|
|
20
|
+
seed_version: B6B-1
|
|
21
|
+
- seed_source: pomaster/components/backend-hard-spec/assets/universal/17-permission-authorization-protocol.md
|
|
22
|
+
sha256: d85a431b682a3a7c3dd4a6ee1f67fc375b54edb4a8e7fe98d283103b64a6b41e
|
|
23
|
+
seed_version: B6C
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
# 权限与鉴权
|
|
27
|
+
|
|
28
|
+
> **聚合纪律**:本文档 12 节正文规则行逐字取自 frontmatter x-aggregation 所列来源协议(节内按「端 → 源编号升序」以加粗来源行分块,源内标题与层级原样保留),零新增、零改写、零删除;新增文本仅限文档标题、本注记与逐节来源行。
|
|
29
|
+
|
|
30
|
+
## Scope
|
|
31
|
+
|
|
32
|
+
**源:FE 17 权限协议(pomaster/components/frontend-hard-spec/assets/universal/17-permission-protocol.md)**
|
|
33
|
+
|
|
34
|
+
P1。定义菜单、页面、按钮、字段、数据范围和接口权限的前端一致表现。
|
|
35
|
+
|
|
36
|
+
**源:BE 17 权限与鉴权协议(pomaster/components/backend-hard-spec/assets/universal/17-permission-authorization-protocol.md)**
|
|
37
|
+
|
|
38
|
+
规范操作权限、数据范围、租户隔离、资源归属和字段脱敏。
|
|
39
|
+
|
|
40
|
+
## Non-Scope
|
|
41
|
+
|
|
42
|
+
**源:FE 17 权限协议**
|
|
43
|
+
|
|
44
|
+
不替代后端鉴权,不允许前端扩大或计算权威数据权限。
|
|
45
|
+
|
|
46
|
+
**源:BE 17 权限与鉴权协议**
|
|
47
|
+
|
|
48
|
+
不替代认证机制、业务状态规则或隐私保留决策。
|
|
49
|
+
|
|
50
|
+
## Terms
|
|
51
|
+
|
|
52
|
+
**源:FE 17 权限协议**
|
|
53
|
+
|
|
54
|
+
- Operation Permission:可执行某动作。
|
|
55
|
+
- Field Permission:字段可见、脱敏、只读或编辑。
|
|
56
|
+
- Data Scope:允许访问的数据集合。
|
|
57
|
+
|
|
58
|
+
**源:BE 17 权限与鉴权协议**
|
|
59
|
+
|
|
60
|
+
数据范围是主体在当前租户、角色与资源关系下可访问的记录集合。
|
|
61
|
+
|
|
62
|
+
## MUST
|
|
63
|
+
|
|
64
|
+
**源:FE 17 权限协议 · §MUST**
|
|
65
|
+
|
|
66
|
+
- 菜单、路由、按钮、字段和接口使用同一权限语义。
|
|
67
|
+
- 直达 URL 仍经过页面权限守卫。
|
|
68
|
+
- 字段权限明确可见、脱敏、只读和编辑策略。
|
|
69
|
+
- 数据范围由后端过滤并影响查询、详情和导出。
|
|
70
|
+
- 权限不足提供一致、可解释状态。
|
|
71
|
+
|
|
72
|
+
**源:BE 17 权限与鉴权协议 · §MUST**
|
|
73
|
+
|
|
74
|
+
- 每个受保护操作必须在服务端验证主体、操作、租户、数据范围和资源归属。
|
|
75
|
+
|
|
76
|
+
## MUST NOT
|
|
77
|
+
|
|
78
|
+
**源:FE 17 权限协议 · §MUST NOT**
|
|
79
|
+
|
|
80
|
+
- MUST NOT 只隐藏菜单或按钮而省略后端鉴权。
|
|
81
|
+
- MUST NOT 前端获取全量数据后自行过滤敏感内容。
|
|
82
|
+
- MUST NOT 按角色名称硬编码权限。
|
|
83
|
+
- MUST NOT 将 Feature Flag 当权限。
|
|
84
|
+
|
|
85
|
+
**源:BE 17 权限与鉴权协议 · §MUST NOT**
|
|
86
|
+
|
|
87
|
+
- 不得只依赖路由隐藏、按钮状态或客户端传入的租户与 owner。
|
|
88
|
+
|
|
89
|
+
## SHOULD
|
|
90
|
+
|
|
91
|
+
**源:FE 17 权限协议 · §SHOULD**
|
|
92
|
+
|
|
93
|
+
- SHOULD 使用统一 gate/hook/component。
|
|
94
|
+
- SHOULD 对禁用动作展示只读原因。
|
|
95
|
+
|
|
96
|
+
**源:BE 17 权限与鉴权协议 · §SHOULD**
|
|
97
|
+
|
|
98
|
+
- 应采用集中策略并测试越权、跨租户、批量与导出场景。
|
|
99
|
+
|
|
100
|
+
## Contract
|
|
101
|
+
|
|
102
|
+
**源:FE 17 权限协议 · §Contract**
|
|
103
|
+
|
|
104
|
+
```text
|
|
105
|
+
PermissionCode, Resource, Action, FieldPolicy?,
|
|
106
|
+
DataScope?, BackendEnforcement, DeniedPresentation
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**源:BE 17 权限与鉴权协议 · §Contract**
|
|
110
|
+
|
|
111
|
+
权限契约必须定义主体、资源、动作、范围、拒绝语义和审计。
|
|
112
|
+
|
|
113
|
+
## Checklist
|
|
114
|
+
|
|
115
|
+
**源:FE 17 权限协议 · §Checklist**
|
|
116
|
+
|
|
117
|
+
- [ ] 菜单到接口一致。
|
|
118
|
+
- [ ] URL 无法绕过。
|
|
119
|
+
- [ ] 字段和数据范围安全。
|
|
120
|
+
- [ ] 无权限状态可解释。
|
|
121
|
+
|
|
122
|
+
**源:BE 17 权限与鉴权协议 · §Checklist**
|
|
123
|
+
|
|
124
|
+
- [ ] 单条、列表、搜索、批量、导入与导出均执行一致范围控制。
|
|
125
|
+
|
|
126
|
+
## Examples
|
|
127
|
+
|
|
128
|
+
**源:FE 17 权限协议 · §Examples**
|
|
129
|
+
|
|
130
|
+
### 内容示例,可删除
|
|
131
|
+
|
|
132
|
+
无导出权限时入口按产品策略隐藏或禁用,后端导出接口仍拒绝请求。
|
|
133
|
+
|
|
134
|
+
**源:BE 17 权限与鉴权协议 · §Examples**
|
|
135
|
+
|
|
136
|
+
- 查询在数据库条件中收紧租户与数据范围,而不是返回后再过滤。
|
|
137
|
+
|
|
138
|
+
## Anti-patterns
|
|
139
|
+
|
|
140
|
+
**源:FE 17 权限协议 · §Anti-patterns**
|
|
141
|
+
|
|
142
|
+
前端按 `role === 'admin'` 显示全部按钮,并认为无需后端校验。
|
|
143
|
+
|
|
144
|
+
**源:BE 17 权限与鉴权协议 · §Anti-patterns**
|
|
145
|
+
|
|
146
|
+
- 只检查角色名,不检查目标资源归属和字段敏感级别。
|
|
147
|
+
|
|
148
|
+
## Ownership
|
|
149
|
+
|
|
150
|
+
**源:FE 17 权限协议 · §Ownership**
|
|
151
|
+
|
|
152
|
+
业务/安全 Owner 定义权限,后端执行鉴权,前端平台维护统一呈现。
|
|
153
|
+
|
|
154
|
+
**源:BE 17 权限与鉴权协议 · §Ownership**
|
|
155
|
+
|
|
156
|
+
BP 定义业务权限语义,Backend 执行最终授权。
|
|
157
|
+
|
|
158
|
+
## Change Policy
|
|
159
|
+
|
|
160
|
+
**源:FE 17 权限协议 · §Change Policy**
|
|
161
|
+
|
|
162
|
+
权限码和数据范围变化必须同步菜单、路由、缓存、接口、测试和审计。
|
|
163
|
+
|
|
164
|
+
**源:BE 17 权限与鉴权协议 · §Change Policy**
|
|
165
|
+
|
|
166
|
+
扩大权限范围必须经过正式业务确认、安全评审和回归测试。
|
|
167
|
+
|
|
168
|
+
> **语言节**:本主题无语言节挂点(缺席诚实);规则本体即上文通用节。
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
---
|
|
2
|
+
seed_source: packages/cli/seeds/aggregation-manifest.json
|
|
3
|
+
seed_source_sha256: 039b637ccffacdfe3ce30d85e193f4b38928fcdfb16efdc4eb255e35e05af91f
|
|
4
|
+
seed_version: B7-THEME
|
|
5
|
+
lane: [frontend, backend]
|
|
6
|
+
status: CURRENT
|
|
7
|
+
authority_scope: mixed_required_and_advisory
|
|
8
|
+
applies_to: [frontend, backend]
|
|
9
|
+
related_evidence_specs: []
|
|
10
|
+
related_tools: []
|
|
11
|
+
legacy_id: theme:privacy-and-data-lifecycle
|
|
12
|
+
criticality: critical # 聚合注记:取源最高;info 性注记非执行语义
|
|
13
|
+
injection_mode: triggered # 聚合注记:来源同值;info 性注记非执行语义
|
|
14
|
+
stages: [prepare, implement, check, release] # 聚合注记:来源 stages 并集;info 性注记非执行语义
|
|
15
|
+
triggers: [sensitive-data, privacy, data-export] # 聚合注记:来源 triggers 并集;info 性注记非执行语义
|
|
16
|
+
requires: [] # 聚合注记:来源 requires 并集(全空)
|
|
17
|
+
x-aggregation: # 聚合来源(D6):逐源 vendor pin(sha256 与卡 vendor_pin 同值)
|
|
18
|
+
- seed_source: pomaster/components/frontend-hard-spec/assets/universal/44-privacy-data-lifecycle-protocol.md
|
|
19
|
+
sha256: 5b3472bba296c1bb437c3ce41e1c937b636605e39b78cf06747d1010e46ba08e
|
|
20
|
+
seed_version: B6B-2
|
|
21
|
+
- seed_source: pomaster/components/backend-hard-spec/assets/universal/13-privacy-data-lifecycle-protocol.md
|
|
22
|
+
sha256: df20ccb85008f8744ea16db3ea64e54bdf9fd19d7aa3098c45dc44fff94c3d8d
|
|
23
|
+
seed_version: B6C
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
# 隐私与数据生命周期
|
|
27
|
+
|
|
28
|
+
> **聚合纪律**:本文档 12 节正文规则行逐字取自 frontmatter x-aggregation 所列来源协议(节内按「端 → 源编号升序」以加粗来源行分块,源内标题与层级原样保留),零新增、零改写、零删除;新增文本仅限文档标题、本注记与逐节来源行。
|
|
29
|
+
|
|
30
|
+
## Scope
|
|
31
|
+
|
|
32
|
+
**源:FE 44 隐私与客户端数据生命周期协议(pomaster/components/frontend-hard-spec/assets/universal/44-privacy-data-lifecycle-protocol.md)**
|
|
33
|
+
|
|
34
|
+
P0。约束个人、敏感和可关联数据在前端的收集、访问、传输、存储、复制、第三方共享、保留、撤回与清理。
|
|
35
|
+
|
|
36
|
+
**源:BE 13 隐私与数据生命周期协议(pomaster/components/backend-hard-spec/assets/universal/13-privacy-data-lifecycle-protocol.md)**
|
|
37
|
+
|
|
38
|
+
规范数据最小化、分类、脱敏、保留、删除、导出、接收方与审计。
|
|
39
|
+
|
|
40
|
+
## Non-Scope
|
|
41
|
+
|
|
42
|
+
**源:FE 44 隐私与客户端数据生命周期协议**
|
|
43
|
+
|
|
44
|
+
不替代适用法律、组织隐私政策、后端数据治理或安全控制;安全负责防止未授权访问,隐私还负责数据是否必要以及应保留多久。
|
|
45
|
+
|
|
46
|
+
**源:BE 13 隐私与数据生命周期协议**
|
|
47
|
+
|
|
48
|
+
不替代一般安全控制或业务合法性确认。
|
|
49
|
+
|
|
50
|
+
## Terms
|
|
51
|
+
|
|
52
|
+
**源:FE 44 隐私与客户端数据生命周期协议**
|
|
53
|
+
|
|
54
|
+
- Data Purpose:收集或处理数据的明确用户/业务目的。
|
|
55
|
+
- Data Minimization:仅处理实现已批准目的所需的最少数据。
|
|
56
|
+
- User Control:同意、拒绝、撤回、删除或选择数据范围的有效机制。
|
|
57
|
+
- Privacy Boundary:数据进入浏览器、第三方 SDK、剪贴板、通知、下载或监控系统的边界。
|
|
58
|
+
|
|
59
|
+
**源:BE 13 隐私与数据生命周期协议**
|
|
60
|
+
|
|
61
|
+
生命周期覆盖收集、传输、存储、使用、共享、导出、保留与删除。
|
|
62
|
+
|
|
63
|
+
## MUST
|
|
64
|
+
|
|
65
|
+
**源:FE 44 隐私与客户端数据生命周期协议 · §MUST**
|
|
66
|
+
|
|
67
|
+
- 每类受保护数据必须声明分类、目的、来源、接收方、客户端存储、保留期、删除触发器、用户控制和 Owner。
|
|
68
|
+
- 请求、缓存、日志、埋点和第三方共享必须限制为已批准目的所需的最小字段和最小精度。
|
|
69
|
+
- 浏览器存储、草稿、下载、剪贴板和通知必须遵守身份、租户、权限、过期和清理策略。
|
|
70
|
+
- 注销、切换账号/租户、权限降低、目的撤回或数据过期时,必须停止相关处理并清理无权继续保留的数据与运行时资源。
|
|
71
|
+
- 在政策要求同意或选择时,数据采集和第三方 SDK 必须在有效选择之后启用;撤回必须阻止后续采集且不得暗中回退。
|
|
72
|
+
- 调用摄像头、麦克风、位置、剪贴板等敏感能力必须由可理解的用户动作触发,并提供拒绝后的安全路径。
|
|
73
|
+
- 第三方脚本和数据目的必须有清单、字段白名单、目标域、保留策略、禁用方式和负责人。
|
|
74
|
+
- 客户端持久化内容读取时必须视为不可信输入,并执行 schema、身份、权限和版本校验。
|
|
75
|
+
|
|
76
|
+
**源:BE 13 隐私与数据生命周期协议 · §MUST**
|
|
77
|
+
|
|
78
|
+
- 敏感数据必须有目的、来源、接收方、保留期、删除触发与访问控制。
|
|
79
|
+
|
|
80
|
+
## MUST NOT
|
|
81
|
+
|
|
82
|
+
**源:FE 44 隐私与客户端数据生命周期协议 · §MUST NOT**
|
|
83
|
+
|
|
84
|
+
- MUST NOT 为“以后可能有用”收集、传输或长期保留额外数据。
|
|
85
|
+
- MUST NOT 将敏感原值、搜索原文、文件内容或可识别信息放入 URL、日志、trace、埋点或未批准第三方载荷。
|
|
86
|
+
- MUST NOT 将去标识化、哈希或内部 ID 自动视为匿名且无隐私风险。
|
|
87
|
+
- MUST NOT 用客户端存储内容证明身份、权限或用户已同意。
|
|
88
|
+
- MUST NOT 通过默认勾选、阻碍撤回或与目的无关的强制授权获取选择。
|
|
89
|
+
|
|
90
|
+
**源:BE 13 隐私与数据生命周期协议 · §MUST NOT**
|
|
91
|
+
|
|
92
|
+
- 不得因“以后可能有用”收集或无限期保留数据。
|
|
93
|
+
|
|
94
|
+
## SHOULD
|
|
95
|
+
|
|
96
|
+
**源:FE 44 隐私与客户端数据生命周期协议 · §SHOULD**
|
|
97
|
+
|
|
98
|
+
- SHOULD 对新增浏览器权限、稳定标识符、第三方 SDK、跨域传输和持久化数据进行隐私评审。
|
|
99
|
+
- SHOULD 为数据访问、导出、删除、撤回和过期清理建立可测试路径。
|
|
100
|
+
- SHOULD 优先在本地或边界处聚合、截断或脱敏,避免传输不必要原值。
|
|
101
|
+
|
|
102
|
+
**源:BE 13 隐私与数据生命周期协议 · §SHOULD**
|
|
103
|
+
|
|
104
|
+
- 应在非必要场景使用最小字段、脱敏值或不可逆标识。
|
|
105
|
+
|
|
106
|
+
## Contract
|
|
107
|
+
|
|
108
|
+
**源:FE 44 隐私与客户端数据生命周期协议 · §Contract**
|
|
109
|
+
|
|
110
|
+
```text
|
|
111
|
+
DataClass, Purpose, MinimumFields, Source, Recipients[],
|
|
112
|
+
ClientStorage, Retention, DeletionTriggers[], UserControl,
|
|
113
|
+
ThirdPartyPolicy, Redaction, Owner, Evidence
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**源:BE 13 隐私与数据生命周期协议 · §Contract**
|
|
117
|
+
|
|
118
|
+
数据设计必须记录分类、处理目的、存储位置、流向、保留与删除证据。
|
|
119
|
+
|
|
120
|
+
## Checklist
|
|
121
|
+
|
|
122
|
+
**源:FE 44 隐私与客户端数据生命周期协议 · §Checklist**
|
|
123
|
+
|
|
124
|
+
- [ ] 每类数据有明确目的和最小字段。
|
|
125
|
+
- [ ] 存储、保留、撤回和清理可执行。
|
|
126
|
+
- [ ] 第三方和遥测载荷已白名单化。
|
|
127
|
+
- [ ] 身份、租户和权限变化不会遗留数据。
|
|
128
|
+
- [ ] 敏感权限有拒绝和撤回路径。
|
|
129
|
+
|
|
130
|
+
**源:BE 13 隐私与数据生命周期协议 · §Checklist**
|
|
131
|
+
|
|
132
|
+
- [ ] URL、日志、trace、缓存、导出和备份均已检查敏感数据。
|
|
133
|
+
|
|
134
|
+
## Examples
|
|
135
|
+
|
|
136
|
+
**源:FE 44 隐私与客户端数据生命周期协议 · §Examples**
|
|
137
|
+
|
|
138
|
+
### 内容示例,可删除
|
|
139
|
+
|
|
140
|
+
分析事件只发送批准的事件 key、粗粒度结果和随机 operation id;搜索原文、用户输入和业务数据不进入事件载荷,撤回后停止初始化 SDK。
|
|
141
|
+
|
|
142
|
+
**源:BE 13 隐私与数据生命周期协议 · §Examples**
|
|
143
|
+
|
|
144
|
+
- 审计记录保存必要标识与操作事实,不复制完整敏感 payload。
|
|
145
|
+
|
|
146
|
+
## Anti-patterns
|
|
147
|
+
|
|
148
|
+
**源:FE 44 隐私与客户端数据生命周期协议 · §Anti-patterns**
|
|
149
|
+
|
|
150
|
+
为了未来分析把完整表单、查询词和页面文本发送给第三方 SDK,并在用户退出后继续保留在本地缓存。
|
|
151
|
+
|
|
152
|
+
**源:BE 13 隐私与数据生命周期协议 · §Anti-patterns**
|
|
153
|
+
|
|
154
|
+
- 在测试样例、日志或分析事件中使用真实敏感数据。
|
|
155
|
+
|
|
156
|
+
## Ownership
|
|
157
|
+
|
|
158
|
+
**源:FE 44 隐私与客户端数据生命周期协议 · §Ownership**
|
|
159
|
+
|
|
160
|
+
隐私/安全 Owner 定义政策,产品 Owner 证明目的与必要性,前端 Owner 实施边界、用户控制和清理,数据 Owner 审核接收与保留。
|
|
161
|
+
|
|
162
|
+
**源:BE 13 隐私与数据生命周期协议 · §Ownership**
|
|
163
|
+
|
|
164
|
+
数据 Owner 决定用途与保留,Backend 实施并证明技术控制。
|
|
165
|
+
|
|
166
|
+
## Change Policy
|
|
167
|
+
|
|
168
|
+
**源:FE 44 隐私与客户端数据生命周期协议 · §Change Policy**
|
|
169
|
+
|
|
170
|
+
新增目的、字段、接收方、持久化或保留期必须重新评审并更新用户控制;不得用功能发布记录替代隐私批准。同步检查 `universal:security-protocol`、`universal:analytics-protocol` 与 `universal:browser-storage-protocol`。
|
|
171
|
+
|
|
172
|
+
**源:BE 13 隐私与数据生命周期协议 · §Change Policy**
|
|
173
|
+
|
|
174
|
+
扩大处理范围或接收方必须重新评审目的、权限与保留规则。
|
|
175
|
+
|
|
176
|
+
> **语言节**:本主题无语言节挂点(缺席诚实);规则本体即上文通用节。
|