pomaster 0.1.0 → 0.2.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 +393 -396
- package/TRADEMARKS.md +2 -2
- package/catalog/archetypes/archetype.api.error.json +55 -0
- package/catalog/archetypes/archetype.api.pagination.json +68 -0
- package/catalog/archetypes/archetype.api.resource.json +45 -0
- package/catalog/archetypes/archetype.backend.approval_workflow.json +63 -0
- package/catalog/archetypes/archetype.backend.audit.json +44 -0
- package/catalog/archetypes/archetype.backend.crud_resource.json +56 -0
- package/catalog/archetypes/archetype.backend.export.json +40 -0
- package/catalog/archetypes/archetype.backend.external_integration.json +89 -0
- package/catalog/archetypes/archetype.backend.idempotent_command.json +65 -0
- package/catalog/archetypes/archetype.backend.import.json +47 -0
- package/catalog/archetypes/archetype.backend.master_data.json +45 -0
- package/catalog/archetypes/archetype.backend.outbox_event.json +80 -0
- package/catalog/archetypes/archetype.backend.query_resource.json +40 -0
- package/catalog/archetypes/archetype.backend.scheduled_job.json +69 -0
- package/catalog/archetypes/archetype.backend.transactional_write.json +79 -0
- package/catalog/archetypes/archetype.component.button.json +53 -0
- package/catalog/archetypes/archetype.component.data_grid.json +78 -0
- package/catalog/archetypes/archetype.component.dialog.json +52 -0
- package/catalog/archetypes/archetype.component.search_input.json +34 -0
- package/catalog/archetypes/archetype.component.search_select.json +77 -0
- package/catalog/archetypes/archetype.data.hierarchy.json +71 -0
- package/catalog/archetypes/archetype.data.ledger.json +40 -0
- package/catalog/archetypes/archetype.data.master_data.json +43 -0
- package/catalog/archetypes/archetype.data.transaction.json +42 -0
- package/catalog/archetypes/archetype.data.versioned.json +43 -0
- package/catalog/archetypes/archetype.frontend.error_taxonomy.json +99 -0
- package/catalog/archetypes/archetype.frontend.feature_oriented.json +59 -0
- package/catalog/archetypes/archetype.frontend.modular.json +37 -0
- package/catalog/archetypes/archetype.frontend.spa_layered.json +48 -0
- package/catalog/archetypes/archetype.page.analysis.json +39 -0
- package/catalog/archetypes/archetype.page.master_data.json +63 -0
- package/catalog/archetypes/archetype.runtime.environment_parity.json +178 -0
- package/catalog/archetypes/archetype.runtime.observability_binding.json +93 -0
- package/catalog/archetypes/archetype.state.async_command.json +63 -0
- package/catalog/archetypes/archetype.state.background_refresh.json +45 -0
- package/catalog/archetypes/archetype.state.form_edit.json +45 -0
- package/catalog/archetypes/archetype.state.optimistic_mutation.json +48 -0
- package/catalog/archetypes/archetype.state.selection.json +35 -0
- package/catalog/archetypes/archetype.state.server_query.json +60 -0
- package/catalog/archetypes/archetype.state.url_filter.json +47 -0
- package/catalog/archetypes/archetype.state.wizard.json +46 -0
- package/catalog/catalog-lock.draft.json +349 -5
- package/catalog/gates/gate.new-entity.checks.json +106 -0
- package/catalog/knowledge/knowledge.web.browser.mcp_eyes.json +99 -0
- package/catalog/sensors/sensor.browser.deterministic.json +17 -6
- package/catalog/sensors/sensor.browser.interactive.json +16 -6
- package/catalog/tools/materialize_v06_relock.py +218 -0
- package/catalog/tools/seed_v06_archetypes.py +283 -0
- package/catalog/tools/seed_v06_batch2_materials.py +504 -0
- package/catalog/tools/seed_v06_batch3_materials.py +756 -0
- package/catalog/tools/seed_v06_batch4_materials.py +353 -0
- package/dist/bin.js +2920 -331
- package/package.json +1 -1
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "DATA_ARCHETYPE.LEDGER",
|
|
3
|
+
"kind": "archetype",
|
|
4
|
+
"layer": "ARCHETYPE",
|
|
5
|
+
"title_zh": "台账数据原型",
|
|
6
|
+
"summary_zh": "追加式台账实体形状原型(PRD §47 目录词形承载):记录表列内只增不改不删、对账可重放;软删除注记对照——涉及个人数据时软删只能是中间态,必须存在最终硬擦除路径。",
|
|
7
|
+
"semantic": {
|
|
8
|
+
"responsibility": "不可篡改事实序列的表内承载:行只追加,修正以反向/补充记录表达,历史可完整重放——append-only 是台账形状的定义性特征",
|
|
9
|
+
"when_to_use": "价格台账(§71 判例与版本化数据原型组合)、余额流水、积分/额度变动等需要对账与审计重放的记录面",
|
|
10
|
+
"when_not_to_use": "可修正的当前值数据(主数据表原型/版本化数据原型);一次性会话数据"
|
|
11
|
+
},
|
|
12
|
+
"composition": {
|
|
13
|
+
"requires": [],
|
|
14
|
+
"optional": [],
|
|
15
|
+
"incompatible": []
|
|
16
|
+
},
|
|
17
|
+
"append_only": true,
|
|
18
|
+
"soft_delete_note": "台账不默认软删除(与交易流水数据原型的 §49 不默认软删同向对照);含个人数据的记录:GDPR 第 17 条被遗忘权要求『无不当延迟』擦除——软删只能作为中间态,保留窗口到期必须物理删除;业界平台级窗口量级参考:Dataverse 可恢复态保留天数 1-30 天可配(2026-09-03 官方实抓)",
|
|
19
|
+
"x-research-anchors": {
|
|
20
|
+
"note": "append-only 台账语义为 PRD §47 目录词形承载 + §71 价格台账判例组合位(与 DATA_ARCHETYPE.VERSIONED 组合);GDPR Art.17 逐字(erasure without undue delay)与 Dataverse 1-30 天窗口为官方文档 2026-09-03 实抓;软删工程代价(查询需带未删过滤/唯一约束需部分索引)为社区共识级证据——如实标注不冒充官方口径",
|
|
21
|
+
"sources": [
|
|
22
|
+
{
|
|
23
|
+
"url": "https://gdpr-info.eu/art-17-gdpr/",
|
|
24
|
+
"fetched": "2026-09-03"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"url": "https://learn.microsoft.com/en-us/power-platform/admin/restore-deleted-table-records",
|
|
28
|
+
"fetched": "2026-09-03"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"url": "doc/POMaster-vNext-PRD-v0.6.1-Engineering-Substrate-Archetype-Catalog.md §47/§71",
|
|
32
|
+
"fetched": "2026-09-03"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"url": ".trellis/tasks/09-02-vnext-prd-v06-governed-substrate/research/backend-references.md 题 6b",
|
|
36
|
+
"fetched": "2026-09-03"
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "DATA_ARCHETYPE.MASTER_DATA",
|
|
3
|
+
"kind": "archetype",
|
|
4
|
+
"layer": "ARCHETYPE",
|
|
5
|
+
"title_zh": "主数据表",
|
|
6
|
+
"summary_zh": "主数据实体的表结构原型:业务码/名称/状态/审计四段公共字段 + 版本位;这些是 Archetype 默认,不是所有业务表强制字段。",
|
|
7
|
+
"semantic": {
|
|
8
|
+
"responsibility": "主数据实体的持久化形状基线(减少从零设计表结构)",
|
|
9
|
+
"when_to_use": "主数据类实体建表(v0.6.1 §90 Tracer:AI 不需要从零设计标准 Master Data 表结构)",
|
|
10
|
+
"when_not_to_use": "交易流水(走 TRANSACTION 原型——不默认软删)/层级/版本台账等专形"
|
|
11
|
+
},
|
|
12
|
+
"composition": {
|
|
13
|
+
"requires": [],
|
|
14
|
+
"optional": [],
|
|
15
|
+
"incompatible": []
|
|
16
|
+
},
|
|
17
|
+
"recommended_fields": [
|
|
18
|
+
"id",
|
|
19
|
+
"business_code",
|
|
20
|
+
"name",
|
|
21
|
+
"status",
|
|
22
|
+
"created_at",
|
|
23
|
+
"created_by",
|
|
24
|
+
"updated_at",
|
|
25
|
+
"updated_by",
|
|
26
|
+
"version"
|
|
27
|
+
],
|
|
28
|
+
"optional_fields": [
|
|
29
|
+
"description",
|
|
30
|
+
"effective_from",
|
|
31
|
+
"effective_to",
|
|
32
|
+
"sort_order"
|
|
33
|
+
],
|
|
34
|
+
"enforcement_note": "Archetype 默认非强制(v0.6.1 §48 逐字);业务特有字段仍由业务决定",
|
|
35
|
+
"x-research-anchors": {
|
|
36
|
+
"sources": [
|
|
37
|
+
{
|
|
38
|
+
"url": "doc/POMaster-vNext-PRD-v0.6.1-Engineering-Substrate-Archetype-Catalog.md §47-§48",
|
|
39
|
+
"fetched": "2026-09-02"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "DATA_ARCHETYPE.TRANSACTION",
|
|
3
|
+
"kind": "archetype",
|
|
4
|
+
"layer": "ARCHETYPE",
|
|
5
|
+
"title_zh": "交易流水数据原型",
|
|
6
|
+
"summary_zh": "交易/流水类实体形状原型(PRD §49 五强调逐字):不可变身份、业务状态、金额与数量的精度、交易时间、审计;不默认软删除——删除语义的补偿形态由业务定义。",
|
|
7
|
+
"semantic": {
|
|
8
|
+
"responsibility": "已发生的业务事实的持久化形状:身份不可变、状态随业务推进、数量金额精度显式、交易时间与审计留痕——事实记录不做软删除默认",
|
|
9
|
+
"when_to_use": "订单/支付/流水/库存变动等『已发生事实』类实体建表——金额数量字段走精度治理(精度/单位治理节)",
|
|
10
|
+
"when_not_to_use": "共享参照数据(走主数据表原型);需要版本快照对照的配置类(走版本化数据原型);只增不改的台账序列(走台账数据原型)"
|
|
11
|
+
},
|
|
12
|
+
"composition": {
|
|
13
|
+
"requires": [],
|
|
14
|
+
"optional": [],
|
|
15
|
+
"incompatible": []
|
|
16
|
+
},
|
|
17
|
+
"emphasis": [
|
|
18
|
+
"immutable identity",
|
|
19
|
+
"business state",
|
|
20
|
+
"financial / quantity precision",
|
|
21
|
+
"transaction time",
|
|
22
|
+
"audit"
|
|
23
|
+
],
|
|
24
|
+
"soft_delete": {
|
|
25
|
+
"default": false,
|
|
26
|
+
"prd_wording": "不默认 Soft Delete。(PRD §49 逐字)",
|
|
27
|
+
"note": "软删保持 optional 位(与 CRUD 物料 optional.soft_delete 一致);含个人数据的记录必须存在最终硬擦除路径(GDPR 第 17 条——详见台账数据原型对照注记)"
|
|
28
|
+
},
|
|
29
|
+
"x-research-anchors": {
|
|
30
|
+
"note": "五强调与不默认软删为 PRD §49 逐字;软删边界(GDPR Art.17 硬擦除路径/Dataverse 1-30 天保留窗口/工程代价社区共识级)为 backend-references.md 题 6b 2026-09-03 实抓",
|
|
31
|
+
"sources": [
|
|
32
|
+
{
|
|
33
|
+
"url": "doc/POMaster-vNext-PRD-v0.6.1-Engineering-Substrate-Archetype-Catalog.md §49",
|
|
34
|
+
"fetched": "2026-09-03"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"url": ".trellis/tasks/09-02-vnext-prd-v06-governed-substrate/research/backend-references.md 题 6b",
|
|
38
|
+
"fetched": "2026-09-03"
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "DATA_ARCHETYPE.VERSIONED",
|
|
3
|
+
"kind": "archetype",
|
|
4
|
+
"layer": "ARCHETYPE",
|
|
5
|
+
"title_zh": "版本化数据原型",
|
|
6
|
+
"summary_zh": "实体版本链形状原型(PRD §50 五字段逐字):entity_id/revision/effective_from/effective_to/status;适用配置版本、车型版本、价格版本、规则版本四类。",
|
|
7
|
+
"semantic": {
|
|
8
|
+
"responsibility": "同一实体的多版本共存与生效区间单点化:版本行以生效区间切分,当前生效版本由区间+状态派生而非覆盖写",
|
|
9
|
+
"when_to_use": "配置/车型/价格/规则等需要版本快照、生效区间与历史回溯的实体(价格台账判例 §71 与台账数据原型组合)",
|
|
10
|
+
"when_not_to_use": "仅当前值无历史诉求的参照数据(主数据表原型);事件日志类追加流(非版本链语义)"
|
|
11
|
+
},
|
|
12
|
+
"composition": {
|
|
13
|
+
"requires": [],
|
|
14
|
+
"optional": [],
|
|
15
|
+
"incompatible": []
|
|
16
|
+
},
|
|
17
|
+
"fields": [
|
|
18
|
+
"entity_id",
|
|
19
|
+
"revision",
|
|
20
|
+
"effective_from",
|
|
21
|
+
"effective_to",
|
|
22
|
+
"status"
|
|
23
|
+
],
|
|
24
|
+
"applicable": [
|
|
25
|
+
"配置版本",
|
|
26
|
+
"车型版本",
|
|
27
|
+
"价格版本",
|
|
28
|
+
"规则版本"
|
|
29
|
+
],
|
|
30
|
+
"x-research-anchors": {
|
|
31
|
+
"note": "五字段词形与四类适用清单为 PRD §50 逐字(2026-09-03 对照 backend-references.md 差异表 §47-§51 行无冲突确认)",
|
|
32
|
+
"sources": [
|
|
33
|
+
{
|
|
34
|
+
"url": "doc/POMaster-vNext-PRD-v0.6.1-Engineering-Substrate-Archetype-Catalog.md §50",
|
|
35
|
+
"fetched": "2026-09-03"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"url": ".trellis/tasks/09-02-vnext-prd-v06-governed-substrate/research/backend-references.md",
|
|
39
|
+
"fetched": "2026-09-03"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "FRONTEND_ARCHETYPE.ERROR_TAXONOMY",
|
|
3
|
+
"kind": "archetype",
|
|
4
|
+
"layer": "PATTERN",
|
|
5
|
+
"title_zh": "前端错误分类",
|
|
6
|
+
"summary_zh": "前端错误九分型逐字闭包(PRD §21):每型绑定呈现/重试/遥测/用户话术四语义位;浏览器原生信号只够两分,细分映射责任在 HTTP Client 适配层。",
|
|
7
|
+
"semantic": {
|
|
8
|
+
"responsibility": "把运行时错误归类为九分型闭包,驱动呈现/重试/遥测/话术四列的确定性处置",
|
|
9
|
+
"when_to_use": "任何触发 HTTP/异步调用的页面组契约错误处置面——错误到分型的映射在 HTTP Client 适配层完成(WHATWG fetch 原生只给 TypeError 与 HTTP status 两分,§21 九分型的映射责任不在浏览器)",
|
|
10
|
+
"when_not_to_use": "非错误态的加载/空态呈现;后端错误信封字段结构本身(v0.6.1 §44 Error Archetype 承载 type/title/status/detail/instance 等成员)"
|
|
11
|
+
},
|
|
12
|
+
"composition": {
|
|
13
|
+
"requires": [],
|
|
14
|
+
"optional": [],
|
|
15
|
+
"incompatible": []
|
|
16
|
+
},
|
|
17
|
+
"categories": {
|
|
18
|
+
"TRANSPORT": {
|
|
19
|
+
"presentation_pattern": "error_banner_with_retry",
|
|
20
|
+
"retry_behavior": "retryable_exponential_backoff",
|
|
21
|
+
"telemetry": "error_event_with_network_detail",
|
|
22
|
+
"user_message": "网络连接异常,请稍后重试"
|
|
23
|
+
},
|
|
24
|
+
"AUTHENTICATION": {
|
|
25
|
+
"presentation_pattern": "redirect_to_login",
|
|
26
|
+
"retry_behavior": "never_retry_auto",
|
|
27
|
+
"telemetry": "auth_event_401",
|
|
28
|
+
"user_message": "登录已过期,请重新登录"
|
|
29
|
+
},
|
|
30
|
+
"AUTHORIZATION": {
|
|
31
|
+
"presentation_pattern": "forbidden_page",
|
|
32
|
+
"retry_behavior": "never_retry",
|
|
33
|
+
"telemetry": "authz_event_403",
|
|
34
|
+
"user_message": "没有执行该操作的权限"
|
|
35
|
+
},
|
|
36
|
+
"VALIDATION": {
|
|
37
|
+
"presentation_pattern": "inline_field_error",
|
|
38
|
+
"retry_behavior": "no_retry_fix_input",
|
|
39
|
+
"telemetry": "warn_event_400_422",
|
|
40
|
+
"user_message": "表单内容有误,请按提示修正"
|
|
41
|
+
},
|
|
42
|
+
"BUSINESS": {
|
|
43
|
+
"presentation_pattern": "message_toast",
|
|
44
|
+
"retry_behavior": "no_retry_rule_rejected",
|
|
45
|
+
"telemetry": "business_code_event",
|
|
46
|
+
"user_message": "按业务规则返回的提示(RFC 9457 type URI/extension member 承载——detail 不可机器解析)"
|
|
47
|
+
},
|
|
48
|
+
"CONFLICT": {
|
|
49
|
+
"presentation_pattern": "refresh_or_merge_prompt",
|
|
50
|
+
"retry_behavior": "no_auto_retry_reload_first",
|
|
51
|
+
"telemetry": "conflict_event_409",
|
|
52
|
+
"user_message": "数据已被他人修改,请刷新后重试"
|
|
53
|
+
},
|
|
54
|
+
"TIMEOUT": {
|
|
55
|
+
"presentation_pattern": "timeout_toast_with_retry",
|
|
56
|
+
"retry_behavior": "retryable_bounded",
|
|
57
|
+
"telemetry": "timeout_event",
|
|
58
|
+
"user_message": "请求超时,请重试"
|
|
59
|
+
},
|
|
60
|
+
"OFFLINE": {
|
|
61
|
+
"presentation_pattern": "offline_banner_persistent",
|
|
62
|
+
"retry_behavior": "auto_resume_on_reconnect",
|
|
63
|
+
"telemetry": "offline_event",
|
|
64
|
+
"user_message": "当前离线,恢复网络后自动同步"
|
|
65
|
+
},
|
|
66
|
+
"UNKNOWN": {
|
|
67
|
+
"presentation_pattern": "generic_error_page",
|
|
68
|
+
"retry_behavior": "no_auto_retry",
|
|
69
|
+
"telemetry": "unclassified_event",
|
|
70
|
+
"user_message": "出了点问题,请稍后重试"
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
"constraints": [
|
|
74
|
+
"浏览器原生信号只够两分:WHATWG fetch 网络失败 reject TypeError、HTTP 错误状态不 reject(查 Response.status)——TIMEOUT/OFFLINE/AUTHENTICATION 等细分全部依赖 client 适配层信号(axios code/AbortSignal/navigator.onLine/status 映射)",
|
|
75
|
+
"九分型映射责任在 HTTP Client Archetype 层而非浏览器",
|
|
76
|
+
"RFC 9457 about:blank(未给出更具体类型时的缺省)与 UNKNOWN 同构"
|
|
77
|
+
],
|
|
78
|
+
"x-research-anchors": {
|
|
79
|
+
"note": "【待 Owner 裁定·差异表 #8 两项】①是否补 CANCELED 第十分型(axios ERR_CANCELED/fetch AbortError/TanStack cancelQueries 三处业界共识,retry 语义绝不重试——九分型缺位会把取消误归 UNKNOWN/TRANSPORT)②429 归属(ofetch 默认重试列表含 409/429 视作传输层瞬时错误,与 CONFLICT 语义有张力)——本物料保持九分型不扩,待裁定后走词汇表式修订。WHATWG fetch TypeError/RFC 9457 成员空间/axios error codes 全表/ofetch 重试列表为规范与官方文档 2026-09-03 实抓",
|
|
80
|
+
"sources": [
|
|
81
|
+
{
|
|
82
|
+
"url": "https://fetch.spec.whatwg.org/",
|
|
83
|
+
"fetched": "2026-09-03"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"url": "https://www.rfc-editor.org/rfc/rfc9457.txt",
|
|
87
|
+
"fetched": "2026-09-03"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"url": "https://axios.rest/pages/advanced/error-handling",
|
|
91
|
+
"fetched": "2026-09-03"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"url": "https://github.com/unjs/ofetch",
|
|
95
|
+
"fetched": "2026-09-03"
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "FRONTEND_ARCHETYPE.FEATURE_ORIENTED",
|
|
3
|
+
"kind": "archetype",
|
|
4
|
+
"layer": "ARCHETYPE",
|
|
5
|
+
"title_zh": "特性导向架构原型",
|
|
6
|
+
"summary_zh": "按业务特性纵向切分的架构原型(FSD 现行词形锚定):App/Pages/Widgets/Features/Entities/Shared 六有效层(Processes 已官方 deprecated),PRD 五稳定语义映射其上,slice 内只能 import 严格下层。",
|
|
7
|
+
"semantic": {
|
|
8
|
+
"responsibility": "以业务特性(feature slice)为第一切分轴,公共面下沉 Shared,实体面独立 Entities",
|
|
9
|
+
"when_to_use": "特性可高内聚切分、跨特性复用需要显式公共 API 门禁的工程(FSD import rule:每层只能依赖严格下层;App/Shared 为 layer=slice 例外)",
|
|
10
|
+
"when_not_to_use": "需要独立 Domain 横向层的分层 SPA(FRONTEND_ARCHETYPE.SPA_LAYERED);无需层约束的小型页面集(FRONTEND_ARCHETYPE.MODULAR)"
|
|
11
|
+
},
|
|
12
|
+
"composition": {
|
|
13
|
+
"requires": [],
|
|
14
|
+
"optional": [],
|
|
15
|
+
"incompatible": []
|
|
16
|
+
},
|
|
17
|
+
"defaults": {
|
|
18
|
+
"fsd_effective_layers": [
|
|
19
|
+
"App",
|
|
20
|
+
"Pages",
|
|
21
|
+
"Widgets",
|
|
22
|
+
"Features",
|
|
23
|
+
"Entities",
|
|
24
|
+
"Shared"
|
|
25
|
+
],
|
|
26
|
+
"deprecated_layers": [
|
|
27
|
+
"Processes"
|
|
28
|
+
],
|
|
29
|
+
"prd_semantic_mapping": {
|
|
30
|
+
"Page": "Pages",
|
|
31
|
+
"Feature": "Features",
|
|
32
|
+
"Domain": "Entities",
|
|
33
|
+
"Shared": "Shared"
|
|
34
|
+
},
|
|
35
|
+
"api_layer_note": "PRD 五语义的 API/Infrastructure 在 FSD 参照下无独立层——api 是各层 segment(entities/api、features/api、shared/api)",
|
|
36
|
+
"widgets_note": "FSD widgets 无 PRD 对应层——本原型下作为 optional 位",
|
|
37
|
+
"import_rule": "slice 内模块只能 import 严格下层的 slice;禁同层互引(FSD 的 @x 显式交叉引用机制仅 Entities 层合法)",
|
|
38
|
+
"public_api": "index_reexports_only",
|
|
39
|
+
"custom_layers": "forbidden"
|
|
40
|
+
},
|
|
41
|
+
"forbidden": [
|
|
42
|
+
"wildcard export(export *)",
|
|
43
|
+
"下层 import 上层",
|
|
44
|
+
"自造新层(FSD:层语义已标准化,不推荐新增)"
|
|
45
|
+
],
|
|
46
|
+
"x-research-anchors": {
|
|
47
|
+
"note": "【差异表 #4 部分差异】FSD 现行 7 层(Processes deprecated→有效 6 层)、无独立 API 层(api 是 segment)、widgets 无 PRD 对应、app 层 PRD 未纳入——四行声明随物料落位;import rule 严格向下与 Public API「contract+gate」定位(与 PRD §19 public_api_required 同构)为 feature-sliced.design 官方文档(v3 站点)2026-09-03 实抓",
|
|
48
|
+
"sources": [
|
|
49
|
+
{
|
|
50
|
+
"url": "https://feature-sliced.design/docs/reference/layers",
|
|
51
|
+
"fetched": "2026-09-03"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"url": "https://feature-sliced.design/docs/reference/public-api",
|
|
55
|
+
"fetched": "2026-09-03"
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "FRONTEND_ARCHETYPE.MODULAR",
|
|
3
|
+
"kind": "archetype",
|
|
4
|
+
"layer": "ARCHETYPE",
|
|
5
|
+
"title_zh": "模块化架构原型",
|
|
6
|
+
"summary_zh": "无强制分层的模块化架构原型:以页面/模块为自足单元,共享代码显式抽层,规模驱动演进——与 SPA_LAYERED 互斥(incompatible 双向登记)。",
|
|
7
|
+
"semantic": {
|
|
8
|
+
"responsibility": "以自足模块为切分单元承载小型/中型应用,不强制五层语义到位",
|
|
9
|
+
"when_to_use": "页面数量少、领域模型尚未复杂到需要独立 Domain/Feature 承载的工程——先模块化,规模触发再演进分层(「项目不一定需要所有层」的另一极端形态)",
|
|
10
|
+
"when_not_to_use": "需要层依赖约束治理的大型工程(SPA_LAYERED/FEATURE_ORIENTED)——本原型与 SPA_LAYERED 互斥"
|
|
11
|
+
},
|
|
12
|
+
"composition": {
|
|
13
|
+
"requires": [],
|
|
14
|
+
"optional": [],
|
|
15
|
+
"incompatible": [
|
|
16
|
+
"FRONTEND_ARCHETYPE.SPA_LAYERED"
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
"defaults": {
|
|
20
|
+
"layering": "none_required",
|
|
21
|
+
"shared_extraction": "explicit_only",
|
|
22
|
+
"evolution": "scale_triggered"
|
|
23
|
+
},
|
|
24
|
+
"x-research-anchors": {
|
|
25
|
+
"note": "互斥语义为本批次裁定(FRONTEND_ARCHETYPE.SPA_LAYERED×MODULAR incompatible 双向登记——incompatible 槽首个真实用例);「不必使用所有层」与 FSD「You don't have to use every layer」同向佐证模块化形态合法性(2026-09-03 实抓)",
|
|
26
|
+
"sources": [
|
|
27
|
+
{
|
|
28
|
+
"url": "doc/POMaster-vNext-PRD-v0.6.1-Engineering-Substrate-Archetype-Catalog.md §18",
|
|
29
|
+
"fetched": "2026-09-03"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"url": "https://feature-sliced.design/docs/reference/layers",
|
|
33
|
+
"fetched": "2026-09-03"
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "FRONTEND_ARCHETYPE.SPA_LAYERED",
|
|
3
|
+
"kind": "archetype",
|
|
4
|
+
"layer": "ARCHETYPE",
|
|
5
|
+
"title_zh": "分层 SPA 架构原型",
|
|
6
|
+
"summary_zh": "按稳定语义分层的单页应用架构原型:Page/Feature/Domain/API/Shared 五层共同稳定语义(PRD §18 逐字),依赖严格向下,层可选不强制齐备。",
|
|
7
|
+
"semantic": {
|
|
8
|
+
"responsibility": "以五层共同稳定语义承载 SPA 横向切分:页面/用例/领域模型/基础设施/共享件各归其位",
|
|
9
|
+
"when_to_use": "团队按层协作、领域模型复杂度需要独立承载的 SPA(v0.6.1 §18 共同稳定语义五层逐字:Page/Feature/Domain/API/Shared)",
|
|
10
|
+
"when_not_to_use": "按业务特性纵向切分优先的工程(FRONTEND_ARCHETYPE.FEATURE_ORIENTED);小到无需分层的模块化页面集(FRONTEND_ARCHETYPE.MODULAR——本原型与其互斥)"
|
|
11
|
+
},
|
|
12
|
+
"composition": {
|
|
13
|
+
"requires": [],
|
|
14
|
+
"optional": [],
|
|
15
|
+
"incompatible": [
|
|
16
|
+
"FRONTEND_ARCHETYPE.MODULAR"
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
"defaults": {
|
|
20
|
+
"layers_prd": [
|
|
21
|
+
"Page",
|
|
22
|
+
"Feature",
|
|
23
|
+
"Domain",
|
|
24
|
+
"API",
|
|
25
|
+
"Shared"
|
|
26
|
+
],
|
|
27
|
+
"dependency_rule": "strictly_downward",
|
|
28
|
+
"layers_optional_note": "项目不一定需要所有层(§18 逐字)",
|
|
29
|
+
"layer_object_example": "§19 Layer Object:Domain 的 allowed_dependencies=[SHARED]/forbidden_dependencies=[PAGE]/public_api_required=true"
|
|
30
|
+
},
|
|
31
|
+
"forbidden": [
|
|
32
|
+
"Domain 依赖 Page(§19 Layer Object forbidden_dependencies 逐字)",
|
|
33
|
+
"下层 import 上层"
|
|
34
|
+
],
|
|
35
|
+
"x-research-anchors": {
|
|
36
|
+
"note": "「项目不一定需要所有层」为 PRD §18 逐字;与 FSD「You don't have to use every layer」逐字同向(frontend-state-references.md 题 6/差异表 #4,2026-09-03 实抓)",
|
|
37
|
+
"sources": [
|
|
38
|
+
{
|
|
39
|
+
"url": "doc/POMaster-vNext-PRD-v0.6.1-Engineering-Substrate-Archetype-Catalog.md §18",
|
|
40
|
+
"fetched": "2026-09-03"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"url": "https://feature-sliced.design/docs/reference/layers",
|
|
44
|
+
"fetched": "2026-09-03"
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "PAGE_ARCHETYPE.ANALYSIS",
|
|
3
|
+
"kind": "archetype",
|
|
4
|
+
"layer": "ARCHETYPE",
|
|
5
|
+
"title_zh": "分析页",
|
|
6
|
+
"summary_zh": "指标/成本/差异类分析页:上下文→过滤→汇总→主分析面→下钻→导出的标准动线,适用于成本分析、经营分析、指标诊断、差异比较。",
|
|
7
|
+
"semantic": {
|
|
8
|
+
"responsibility": "围绕一个分析主题的多维探索与结论呈现",
|
|
9
|
+
"when_to_use": "成本分析/经营分析/指标诊断/差异比较(v0.6.1 §15 逐字)",
|
|
10
|
+
"when_not_to_use": "行级数据维护(走 PAGE_ARCHETYPE.MASTER_DATA)"
|
|
11
|
+
},
|
|
12
|
+
"composition": {
|
|
13
|
+
"requires": [
|
|
14
|
+
"COMPONENT_ARCHETYPE.SEARCH_INPUT",
|
|
15
|
+
"COMPONENT_ARCHETYPE.DATA_GRID"
|
|
16
|
+
],
|
|
17
|
+
"optional": [
|
|
18
|
+
"COMPONENT_ARCHETYPE.DIALOG",
|
|
19
|
+
"ARCHETYPE.BACKEND.EXPORT"
|
|
20
|
+
],
|
|
21
|
+
"incompatible": []
|
|
22
|
+
},
|
|
23
|
+
"composition_order": [
|
|
24
|
+
"ContextHeader",
|
|
25
|
+
"Filters",
|
|
26
|
+
"Summary",
|
|
27
|
+
"PrimaryAnalysisSurface",
|
|
28
|
+
"Drill-down",
|
|
29
|
+
"Action/Export"
|
|
30
|
+
],
|
|
31
|
+
"x-research-anchors": {
|
|
32
|
+
"sources": [
|
|
33
|
+
{
|
|
34
|
+
"url": "doc/POMaster-vNext-PRD-v0.6.1-Engineering-Substrate-Archetype-Catalog.md §15",
|
|
35
|
+
"fetched": "2026-09-02"
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "PAGE_ARCHETYPE.MASTER_DATA",
|
|
3
|
+
"kind": "archetype",
|
|
4
|
+
"layer": "ARCHETYPE",
|
|
5
|
+
"title_zh": "主数据管理页",
|
|
6
|
+
"summary_zh": "企业主数据(供应商/物料/客户等)的列表维护页:过滤→操作→网格→分页的标准组合,编辑走抽屉或对话框,默认假设远程数据+服务端分页。",
|
|
7
|
+
"semantic": {
|
|
8
|
+
"responsibility": "单一主数据实体的全生命周期维护入口(查/增/改/删/批操作)",
|
|
9
|
+
"when_to_use": "实体有独立维护入口、字段成表、需过滤检索与批量操作时(v0.6.1 §70 用户管理判例)",
|
|
10
|
+
"when_not_to_use": "纯展示分析页(走 PAGE_ARCHETYPE.ANALYSIS);跨实体复杂工作流主页面"
|
|
11
|
+
},
|
|
12
|
+
"composition": {
|
|
13
|
+
"requires": [
|
|
14
|
+
"COMPONENT_ARCHETYPE.DATA_GRID",
|
|
15
|
+
"COMPONENT_ARCHETYPE.SEARCH_INPUT",
|
|
16
|
+
"COMPONENT_ARCHETYPE.BUTTON"
|
|
17
|
+
],
|
|
18
|
+
"optional": [
|
|
19
|
+
"COMPONENT_ARCHETYPE.DIALOG",
|
|
20
|
+
"ARCHETYPE.BACKEND.IMPORT",
|
|
21
|
+
"ARCHETYPE.BACKEND.EXPORT",
|
|
22
|
+
"ARCHETYPE.BACKEND.BATCH",
|
|
23
|
+
"ARCHETYPE.BACKEND.AUDIT"
|
|
24
|
+
],
|
|
25
|
+
"incompatible": []
|
|
26
|
+
},
|
|
27
|
+
"composition_order": [
|
|
28
|
+
"PageHeader",
|
|
29
|
+
"FilterBar",
|
|
30
|
+
"Toolbar",
|
|
31
|
+
"DataGrid",
|
|
32
|
+
"Pagination"
|
|
33
|
+
],
|
|
34
|
+
"default_states": [
|
|
35
|
+
"LOADING",
|
|
36
|
+
"READY",
|
|
37
|
+
"EMPTY",
|
|
38
|
+
"ERROR",
|
|
39
|
+
"DIRTY",
|
|
40
|
+
"SAVING",
|
|
41
|
+
"FORBIDDEN"
|
|
42
|
+
],
|
|
43
|
+
"backend_binding": [
|
|
44
|
+
"ARCHETYPE.BACKEND.CRUD_RESOURCE",
|
|
45
|
+
"ARCHETYPE.BACKEND.QUERY_RESOURCE"
|
|
46
|
+
],
|
|
47
|
+
"data_binding": [
|
|
48
|
+
"DATA_ARCHETYPE.MASTER_DATA"
|
|
49
|
+
],
|
|
50
|
+
"x-research-anchors": {
|
|
51
|
+
"note": "组合语义参照 AntD Table demo 锚点能力面(远程数据+分页为默认假设)",
|
|
52
|
+
"sources": [
|
|
53
|
+
{
|
|
54
|
+
"url": "https://ant.design/components/table",
|
|
55
|
+
"fetched": "2026-09-02"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"url": "https://ant.design/components/overview",
|
|
59
|
+
"fetched": "2026-09-02"
|
|
60
|
+
}
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
}
|