pomaster 0.1.1 → 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.
Files changed (55) hide show
  1. package/README.md +14 -6
  2. package/TRADEMARKS.md +2 -2
  3. package/catalog/archetypes/archetype.api.error.json +55 -0
  4. package/catalog/archetypes/archetype.api.pagination.json +68 -0
  5. package/catalog/archetypes/archetype.api.resource.json +45 -0
  6. package/catalog/archetypes/archetype.backend.approval_workflow.json +63 -0
  7. package/catalog/archetypes/archetype.backend.audit.json +44 -0
  8. package/catalog/archetypes/archetype.backend.crud_resource.json +56 -0
  9. package/catalog/archetypes/archetype.backend.export.json +40 -0
  10. package/catalog/archetypes/archetype.backend.external_integration.json +89 -0
  11. package/catalog/archetypes/archetype.backend.idempotent_command.json +65 -0
  12. package/catalog/archetypes/archetype.backend.import.json +47 -0
  13. package/catalog/archetypes/archetype.backend.master_data.json +45 -0
  14. package/catalog/archetypes/archetype.backend.outbox_event.json +80 -0
  15. package/catalog/archetypes/archetype.backend.query_resource.json +40 -0
  16. package/catalog/archetypes/archetype.backend.scheduled_job.json +69 -0
  17. package/catalog/archetypes/archetype.backend.transactional_write.json +79 -0
  18. package/catalog/archetypes/archetype.component.button.json +53 -0
  19. package/catalog/archetypes/archetype.component.data_grid.json +78 -0
  20. package/catalog/archetypes/archetype.component.dialog.json +52 -0
  21. package/catalog/archetypes/archetype.component.search_input.json +34 -0
  22. package/catalog/archetypes/archetype.component.search_select.json +77 -0
  23. package/catalog/archetypes/archetype.data.hierarchy.json +71 -0
  24. package/catalog/archetypes/archetype.data.ledger.json +40 -0
  25. package/catalog/archetypes/archetype.data.master_data.json +43 -0
  26. package/catalog/archetypes/archetype.data.transaction.json +42 -0
  27. package/catalog/archetypes/archetype.data.versioned.json +43 -0
  28. package/catalog/archetypes/archetype.frontend.error_taxonomy.json +99 -0
  29. package/catalog/archetypes/archetype.frontend.feature_oriented.json +59 -0
  30. package/catalog/archetypes/archetype.frontend.modular.json +37 -0
  31. package/catalog/archetypes/archetype.frontend.spa_layered.json +48 -0
  32. package/catalog/archetypes/archetype.page.analysis.json +39 -0
  33. package/catalog/archetypes/archetype.page.master_data.json +63 -0
  34. package/catalog/archetypes/archetype.runtime.environment_parity.json +178 -0
  35. package/catalog/archetypes/archetype.runtime.observability_binding.json +93 -0
  36. package/catalog/archetypes/archetype.state.async_command.json +63 -0
  37. package/catalog/archetypes/archetype.state.background_refresh.json +45 -0
  38. package/catalog/archetypes/archetype.state.form_edit.json +45 -0
  39. package/catalog/archetypes/archetype.state.optimistic_mutation.json +48 -0
  40. package/catalog/archetypes/archetype.state.selection.json +35 -0
  41. package/catalog/archetypes/archetype.state.server_query.json +60 -0
  42. package/catalog/archetypes/archetype.state.url_filter.json +47 -0
  43. package/catalog/archetypes/archetype.state.wizard.json +46 -0
  44. package/catalog/catalog-lock.draft.json +349 -5
  45. package/catalog/gates/gate.new-entity.checks.json +106 -0
  46. package/catalog/knowledge/knowledge.web.browser.mcp_eyes.json +99 -0
  47. package/catalog/sensors/sensor.browser.deterministic.json +17 -6
  48. package/catalog/sensors/sensor.browser.interactive.json +16 -6
  49. package/catalog/tools/materialize_v06_relock.py +218 -0
  50. package/catalog/tools/seed_v06_archetypes.py +283 -0
  51. package/catalog/tools/seed_v06_batch2_materials.py +504 -0
  52. package/catalog/tools/seed_v06_batch3_materials.py +756 -0
  53. package/catalog/tools/seed_v06_batch4_materials.py +353 -0
  54. package/dist/bin.js +2431 -215
  55. package/package.json +1 -1
@@ -0,0 +1,47 @@
1
+ {
2
+ "id": "ARCHETYPE.BACKEND.IMPORT",
3
+ "kind": "archetype",
4
+ "layer": "ARCHETYPE",
5
+ "title_zh": "批量导入原型",
6
+ "summary_zh": "文件批量导入七步链原型(PRD §32 逐字):上传→解析→校验→预览→确认→执行→结果;行级错误/部分失败/幂等/事务/审计五项必须预定义。",
7
+ "semantic": {
8
+ "responsibility": "把『文件进库』标准化为预览确认两段式:校验先行、人确认后才执行——执行形态(全量事务/部分失败)与行级错误报告显式预定义而非事后补",
9
+ "when_to_use": "电子表格/CSV 类批量建档与更新(参照数据初始化、期初导入等)——预定义五项缺一即契约不完整",
10
+ "when_not_to_use": "单条建档(走标准写面);系统间定期同步(走外部集成/发件箱事件原型)"
11
+ },
12
+ "composition": {
13
+ "requires": [],
14
+ "optional": [],
15
+ "incompatible": []
16
+ },
17
+ "pipeline": [
18
+ "Upload",
19
+ "Parse",
20
+ "Validate",
21
+ "Preview",
22
+ "Confirm",
23
+ "Apply",
24
+ "Result"
25
+ ],
26
+ "predefined": [
27
+ "row_error",
28
+ "partial_failure",
29
+ "idempotency",
30
+ "transaction",
31
+ "audit"
32
+ ],
33
+ "predefined_source": "PRD §32 逐字:必须预定义:row error / partial failure / idempotency / transaction / audit。",
34
+ "x-research-anchors": {
35
+ "note": "七步链与预定义五项为 PRD §32 逐字(2026-09-03 对照 backend-references.md 差异表无冲突确认);幂等项与幂等命令原型语义互链(重复导入以键防重)",
36
+ "sources": [
37
+ {
38
+ "url": "doc/POMaster-vNext-PRD-v0.6.1-Engineering-Substrate-Archetype-Catalog.md §32",
39
+ "fetched": "2026-09-03"
40
+ },
41
+ {
42
+ "url": ".trellis/tasks/09-02-vnext-prd-v06-governed-substrate/research/backend-references.md",
43
+ "fetched": "2026-09-03"
44
+ }
45
+ ]
46
+ }
47
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "id": "ARCHETYPE.BACKEND.MASTER_DATA",
3
+ "kind": "archetype",
4
+ "layer": "ARCHETYPE",
5
+ "title_zh": "后端主数据原型",
6
+ "summary_zh": "标准主数据域后端原型(PRD §29):增删改查写面与列表检索读面为基座,叠加审计、状态位、业务唯一键与可选版本位的六件套组合语义——组合语义定义住主数据域的标准后端形态。",
7
+ "semantic": {
8
+ "responsibility": "以六件套组合语义承载主数据域的标准后端形态:写面(新增/修改/删除)与读面分离,公共横切面(审计/状态/唯一键/版本)显式组合而非各自发明",
9
+ "when_to_use": "新建主数据域(组织/客商/物料字典等共享参照数据)的后端时——六件套组合即标准答案,不需要从零设计(v0.6.1 §90 Tracer:AI 不需要从零设计标准表结构)",
10
+ "when_not_to_use": "交易流水类(走交易流水数据原型——不默认软删);纯一次性批量导入场景(导入原型承载流程而非实体形状)"
11
+ },
12
+ "composition": {
13
+ "requires": [
14
+ "ARCHETYPE.BACKEND.CRUD_RESOURCE",
15
+ "ARCHETYPE.BACKEND.QUERY_RESOURCE"
16
+ ],
17
+ "optional": [
18
+ "ARCHETYPE.BACKEND.AUDIT",
19
+ "DATA_ARCHETYPE.MASTER_DATA"
20
+ ],
21
+ "incompatible": []
22
+ },
23
+ "prd_combination": [
24
+ "CRUD_RESOURCE",
25
+ "QUERY_RESOURCE",
26
+ "AUDIT",
27
+ "STATUS",
28
+ "UNIQUE_BUSINESS_KEY",
29
+ "OPTIONAL_VERSION"
30
+ ],
31
+ "prd_combination_note": "PRD §29 组合清单逐字(CRUD_RESOURCE/QUERY_RESOURCE/AUDIT 三件为在册 catalog 物料——requires/optional 槽承载;STATUS/UNIQUE_BUSINESS_KEY/OPTIONAL_VERSION 三件为组合位词形,物理载体归 CRUD 物料的 defaults 审计/唯一约束/版本位)",
32
+ "x-research-anchors": {
33
+ "note": "组合语义为 PRD §29 逐字;与批次 1 在册物料的引用关系(CRUD/QUERY/DATA_ARCHETYPE.MASTER_DATA)经 backend-references.md 差异表 §47-§51 行 2026-09-03 对照无冲突;软删保持 optional 位(题 6b:GDPR Art.17 兼容但个人数据须有最终硬删路径)",
34
+ "sources": [
35
+ {
36
+ "url": "doc/POMaster-vNext-PRD-v0.6.1-Engineering-Substrate-Archetype-Catalog.md §29",
37
+ "fetched": "2026-09-03"
38
+ },
39
+ {
40
+ "url": ".trellis/tasks/09-02-vnext-prd-v06-governed-substrate/research/backend-references.md",
41
+ "fetched": "2026-09-03"
42
+ }
43
+ ]
44
+ }
45
+ }
@@ -0,0 +1,80 @@
1
+ {
2
+ "id": "ARCHETYPE.BACKEND.OUTBOX_EVENT",
3
+ "kind": "archetype",
4
+ "layer": "ARCHETYPE",
5
+ "title_zh": "发件箱事件原型",
6
+ "summary_zh": "库与事件最终一致原型(PRD §37):业务数据与发件箱同事务落库,提交后由发布器中继到消息通道;生命周期五态锚 Spring Modulith 事件发布注册表、默认表列形锚 Debezium 发件箱路由器现行文档。",
7
+ "semantic": {
8
+ "responsibility": "把『业务落库』与『事件外发』的原子性标准化:同事务写入业务数据与发件箱行,提交后异步中继——发布器不在业务事务内做网络调用",
9
+ "when_to_use": "库内状态变更需要可靠外发事件(跨服务最终一致)时;需要对失败事件可重投、可观测时",
10
+ "when_not_to_use": "纯进程内通知(普通事务事件监听即可,无需发件箱);同步强一致调用(走事务性写原型)"
11
+ },
12
+ "composition": {
13
+ "requires": [],
14
+ "optional": [
15
+ "ARCHETYPE.BACKEND.TRANSACTIONAL_WRITE"
16
+ ],
17
+ "incompatible": []
18
+ },
19
+ "defaults": {
20
+ "write_scope": "same_transaction_as_business_data(Modulith EPR 逐字语义:writes entries for each of them into an event publication log as part of the original business transaction)",
21
+ "lifecycle_states": [
22
+ "PUBLISHED",
23
+ "PROCESSING",
24
+ "COMPLETED",
25
+ "FAILED",
26
+ "RESUBMITTED"
27
+ ],
28
+ "lifecycle_source": "Spring Modulith 2.x 事件发布注册表状态机(2.0 引入;每条记录追踪 completionAttempts 与 lastResubmissionDate)",
29
+ "outbox_table_columns": [
30
+ "id",
31
+ "aggregatetype",
32
+ "aggregateid",
33
+ "type",
34
+ "payload"
35
+ ],
36
+ "outbox_table_source": "Debezium Outbox Event Router 默认表列(Basic outbox table 逐字:id uuid not null / aggregatetype varchar(255) not null / aggregateid varchar(255) not null / type varchar(255) not null / payload jsonb)",
37
+ "route_by_field": "aggregatetype"
38
+ },
39
+ "constraints": [
40
+ "发布中继只发生在业务事务提交之后(publisher 不得在业务事务内做网络调用)",
41
+ "事件 id 全局唯一以支持消费端去重(Debezium:可用 id 移除重复消息)",
42
+ "CDC 形态需用 SMT predicate 把路由限定在发件箱表事件上(connector 还会发心跳/墓碑等消息)"
43
+ ],
44
+ "optional": {
45
+ "externalization": [
46
+ "kafka",
47
+ "amqp",
48
+ "jms",
49
+ "spring-messaging"
50
+ ],
51
+ "staleness_monitor": "超时未完成条目定时标失败(Modulith Staleness Monitor,默认全 0 即不启用)",
52
+ "resubmit": "失败重投 API(可配批量大小/最大并发/最小年龄/过滤器)",
53
+ "cdc_mode": "Debezium Outbox Event Router(Kafka Connect 生态,从库日志侧发事件——适合事件进消息通道且不在应用内做中继的场景,代价是新增一条运维面)"
54
+ },
55
+ "x-research-anchors": {
56
+ "note": "EPR 五态/同事务落库语义/外置基础设施为 Spring Modulith 官方文档 2026-09-03 实抓(版本 2.1.1);默认表列五列与路由默认值为 Debezium 官方文档 2026-09-03 实抓(stable 3.6)。选型边界:Modulith=应用内库级方案(无独立部署面),Debezium=独立 CDC 基础设施(绑定 Kafka Connect)",
57
+ "sources": [
58
+ {
59
+ "url": "https://docs.spring.io/spring-modulith/reference/events.html",
60
+ "fetched": "2026-09-03"
61
+ },
62
+ {
63
+ "url": "https://debezium.io/documentation/reference/stable/transformations/outbox-event-router.html",
64
+ "fetched": "2026-09-03"
65
+ },
66
+ {
67
+ "url": "https://spring.io/projects/spring-modulith",
68
+ "fetched": "2026-09-03"
69
+ },
70
+ {
71
+ "url": "https://repo1.maven.org/maven2/org/springframework/modulith/spring-modulith-bom/maven-metadata.xml",
72
+ "fetched": "2026-09-03"
73
+ },
74
+ {
75
+ "url": ".trellis/tasks/09-02-vnext-prd-v06-governed-substrate/research/backend-references.md 题 2",
76
+ "fetched": "2026-09-03"
77
+ }
78
+ ]
79
+ }
80
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "id": "ARCHETYPE.BACKEND.QUERY_RESOURCE",
3
+ "kind": "archetype",
4
+ "layer": "ARCHETYPE",
5
+ "title_zh": "查询资源",
6
+ "summary_zh": "LIST/FILTER/SORT/PAGE/SEARCH 五能力的查询面原型:服务端分页、稳定排序、有界页大小、过滤字段有索引为默认档。",
7
+ "semantic": {
8
+ "responsibility": "实体的列表/检索读面(与 CRUD 写面分离)",
9
+ "when_to_use": "任何列表页/分析页的取数面;大表必须服务端分页",
10
+ "when_not_to_use": "单点 get(CRUD_RESOURCE.operations.get 承载)"
11
+ },
12
+ "composition": {
13
+ "requires": [],
14
+ "optional": [
15
+ "ARCHETYPE.BACKEND.CRUD_RESOURCE"
16
+ ],
17
+ "incompatible": []
18
+ },
19
+ "capabilities": [
20
+ "LIST",
21
+ "FILTER",
22
+ "SORT",
23
+ "PAGE",
24
+ "SEARCH"
25
+ ],
26
+ "defaults": [
27
+ "server_side_pagination",
28
+ "stable_sort",
29
+ "bounded_page_size",
30
+ "indexed_filter_fields"
31
+ ],
32
+ "x-research-anchors": {
33
+ "sources": [
34
+ {
35
+ "url": "doc/POMaster-vNext-PRD-v0.6.1-Engineering-Substrate-Archetype-Catalog.md §28",
36
+ "fetched": "2026-09-02"
37
+ }
38
+ ]
39
+ }
40
+ }
@@ -0,0 +1,69 @@
1
+ {
2
+ "id": "ARCHETYPE.BACKEND.SCHEDULED_JOB",
3
+ "kind": "archetype",
4
+ "layer": "ARCHETYPE",
5
+ "title_zh": "定时任务原型",
6
+ "summary_zh": "分布式环境定时任务七要素原型(PRD §39 逐字):计划/分布式锁/超时/重试/幂等/结果/告警;三选型口径并列锚现行文档——ShedLock 7.9.0(仅锁、跳过语义)、Quartz 2.5.2(仅 JDBC 存储可集群)、JobRunr 8.8.2(原子认领)。",
7
+ "semantic": {
8
+ "responsibility": "多节点部署下同一计划任务的防重复执行契约单点:并发防重、执行时限、失败重试、任务体幂等与结果告警全部显式定义而非默认假设",
9
+ "when_to_use": "周期/延时后台任务在多实例部署下需要防重复执行时;需要对错失执行与连续失败可观测、可告警时",
10
+ "when_not_to_use": "单实例部署的简单计划任务(无需分布式锁);用户交互内实时请求(走写路径原型);可靠事件外发(走发件箱事件原型)"
11
+ },
12
+ "composition": {
13
+ "requires": [],
14
+ "optional": [],
15
+ "incompatible": []
16
+ },
17
+ "seven_elements": {
18
+ "schedule": "cron 或间隔二选一必填",
19
+ "distributed_lock": "默认配置;lockAtMostFor 必须远大于正常执行时长(官方 MUST 级指引——超锁后多进程同时持锁行为不可预测);lockAtLeastFor 覆盖短任务与节点间时钟漂移",
20
+ "timeout": "执行超时应远小于 lockAtMostFor(联动配置)",
21
+ "retry": "指数退避(JobRunr RetryFilter 口径)或框架外自管",
22
+ "idempotency": "任务体必须幂等——并发防重不等于成功保证(ShedLock 超锁行为不可预测、Quartz 无恢复标记不重放)",
23
+ "result": "执行结果留痕(成功/失败/跳过三态)",
24
+ "alert": "连续失败告警"
25
+ },
26
+ "selection_stances": {
27
+ "shedlock": "『ShedLock is just a lock』(官方自述)——不是分布式调度器;同任务他节点执行中不等待、直接跳过(skip 语义:错过即跳过、不排队补跑);按任务名加锁",
28
+ "quartz": "集群仅 JDBC JobStore(JobStoreTX/JobStoreCMT)+ isClustered=true;每节点唯一 instanceId;同触发仅一节点执行;官方性能警示——集群锁在超过约三节点后随节点数退化",
29
+ "jobrunr": "任务持久化于既有库(重启/故障不丢)、轮询存储并原子认领(claims jobs atomically so the same job is never processed twice)、失败按指数退避重排、最长运行节点自动当选主节点做内务"
30
+ },
31
+ "constraints": [
32
+ "锁组件与调度组件职责分离——仅锁方案不提供排队/错失补跑(官方明示不要当调度器用)",
33
+ "at-most-once 并发保证不等于成功保证——任务体幂等是底线"
34
+ ],
35
+ "optional": {
36
+ "quartz_clustered_mode": "含 requests recovery 恢复标记位注记(标记的任务由余下节点重新执行)",
37
+ "jobrunr_storage_provider": "存储抽象覆盖关系库与 NoSQL;内置 Dashboard 观测",
38
+ "keep_alive_lock_provider": "锁中途续期(在 lockAtMostFor 中点续期——官方建议慎用)"
39
+ },
40
+ "x-research-anchors": {
41
+ "note": "三库定位/锁词形/集群条件/原子认领语义均为官方文档 2026-09-03 实抓;版本(ShedLock 7.9.0/Quartz 2.5.2/JobRunr 8.8.2 stable 线)取自 repo1.maven.org 官方 metadata",
42
+ "sources": [
43
+ {
44
+ "url": "https://github.com/lukas-krecan/ShedLock",
45
+ "fetched": "2026-09-03"
46
+ },
47
+ {
48
+ "url": "https://www.quartz-scheduler.org/documentation/quartz-2.5.x/configuration/ConfigJDBCJobStoreClustering.html",
49
+ "fetched": "2026-09-03"
50
+ },
51
+ {
52
+ "url": "https://www.jobrunr.io/en/documentation/",
53
+ "fetched": "2026-09-03"
54
+ },
55
+ {
56
+ "url": "https://repo1.maven.org/maven2/net/javacrumbs/shedlock/shedlock-spring/maven-metadata.xml",
57
+ "fetched": "2026-09-03"
58
+ },
59
+ {
60
+ "url": "https://repo1.maven.org/maven2/org/quartz-scheduler/quartz/maven-metadata.xml",
61
+ "fetched": "2026-09-03"
62
+ },
63
+ {
64
+ "url": ".trellis/tasks/09-02-vnext-prd-v06-governed-substrate/research/backend-references.md 题 5",
65
+ "fetched": "2026-09-03"
66
+ }
67
+ ]
68
+ }
69
+ }
@@ -0,0 +1,79 @@
1
+ {
2
+ "id": "ARCHETYPE.BACKEND.TRANSACTIONAL_WRITE",
3
+ "kind": "archetype",
4
+ "layer": "ARCHETYPE",
5
+ "title_zh": "事务性写原型",
6
+ "summary_zh": "单库用例写路径原型(PRD §36 五步链序):用例入口开事务、领域变更、仓储落库、提交;回滚默认档锚 Spring 现行口径(运行时异常与错误默认回滚、受检异常默认不回滚);关键库事务内禁慢外部网络调用。",
7
+ "semantic": {
8
+ "responsibility": "把一次用例写的原子性边界标准化为五步链序:Application Use Case → TX BEGIN → Domain Change → Repository Write → TX COMMIT——事务边界与领域变更的相对位置单点声明",
9
+ "when_to_use": "单库强一致写路径(一次用例一个库事务即可承载)——先检查是否真需要跨服务最终一致(是则配发件箱事件原型)",
10
+ "when_not_to_use": "跨服务最终一致写(配发件箱事件原型);只读检索面;外部系统调用编排(走外部集成原型)"
11
+ },
12
+ "composition": {
13
+ "requires": [],
14
+ "optional": [],
15
+ "incompatible": []
16
+ },
17
+ "defaults": {
18
+ "chain": [
19
+ "Application Use Case",
20
+ "TX BEGIN",
21
+ "Domain Change",
22
+ "Repository Write",
23
+ "TX COMMIT"
24
+ ],
25
+ "propagation": "REQUIRED",
26
+ "isolation": "ISOLATION_DEFAULT",
27
+ "read_only": false,
28
+ "rollback_default": "RuntimeException|Error 默认回滚;checked Exception 默认不回滚(Spring Framework 7.0.x 现行文档逐字:\"Any RuntimeException or Error triggers rollback, and any checked Exception does not.\"——2026-09-03 实抓未变)",
29
+ "propagation_axis": [
30
+ "REQUIRED",
31
+ "SUPPORTS",
32
+ "MANDATORY",
33
+ "REQUIRES_NEW",
34
+ "NOT_SUPPORTED",
35
+ "NEVER",
36
+ "NESTED"
37
+ ],
38
+ "rollback_rule_note": "rollbackFor 类型规则按等于或子类匹配;pattern 规则是子串匹配(官方明示可能误伤 CustomExceptionV2 与嵌套类 CustomException$AnotherException)——pattern 必须写全限定名",
39
+ "strongest_matching_rule_wins": true
40
+ },
41
+ "constraints": [
42
+ "默认禁止在关键 DB Transaction 中包含慢外部网络调用(PRD §36 逐字)",
43
+ "REQUIRES_NEW 要求连接池容量适当超过并发线程数,否则连接耗尽/死锁(官方原文:\"Do not use PROPAGATION_REQUIRES_NEW unless your connection pool is appropriately sized, exceeding the number of concurrent threads by at least 1.\")",
44
+ "REQUIRED 参与外层事务时本地 isolation/timeout/readOnly 被静默忽略;内层 rollback-only 标记会使外层提交抛 UnexpectedRollbackException(官方传播详解)"
45
+ ],
46
+ "optional": {
47
+ "propagation": [
48
+ "REQUIRES_NEW",
49
+ "NESTED"
50
+ ],
51
+ "nested_note": "NESTED 为单物理事务+保存点,通常映射到 JDBC savepoints——仅 JDBC 资源事务可用",
52
+ "global_rollback_switch": "Spring 6.2+ 可经 @EnableTransactionManagement(rollbackOn=ALL_EXCEPTIONS) 全局改默认回滚行为(事务级规则仍覆盖全局缺省)"
53
+ },
54
+ "x-research-anchors": {
55
+ "note": "回滚默认原文与七传播语义为 Spring 官方文档 2026-09-03 实抓(annotations.html/rolling-back.html/Propagation javadoc;版本 7.0.9/Boot 4.1.1 取自 repo1.maven.org 官方 metadata);REQUIRES_NEW 连接池死锁警示与 rollbackFor 子串误伤为官方原文转写",
56
+ "sources": [
57
+ {
58
+ "url": "https://docs.spring.io/spring-framework/reference/data-access/transaction/declarative/annotations.html",
59
+ "fetched": "2026-09-03"
60
+ },
61
+ {
62
+ "url": "https://docs.spring.io/spring-framework/reference/data-access/transaction/declarative/rolling-back.html",
63
+ "fetched": "2026-09-03"
64
+ },
65
+ {
66
+ "url": "https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/transaction/annotation/Propagation.html",
67
+ "fetched": "2026-09-03"
68
+ },
69
+ {
70
+ "url": "https://repo1.maven.org/maven2/org/springframework/spring-framework-bom/maven-metadata.xml",
71
+ "fetched": "2026-09-03"
72
+ },
73
+ {
74
+ "url": ".trellis/tasks/09-02-vnext-prd-v06-governed-substrate/research/backend-references.md 题 1",
75
+ "fetched": "2026-09-03"
76
+ }
77
+ ]
78
+ }
79
+ }
@@ -0,0 +1,53 @@
1
+ {
2
+ "id": "COMPONENT_ARCHETYPE.BUTTON",
3
+ "kind": "archetype",
4
+ "layer": "PRIMITIVE",
5
+ "title_zh": "按钮",
6
+ "summary_zh": "动作触发原语:状态变更动作用 Button、URL 导航用 Link、一行多个相关动作用 Menu/Split Button;variant 词表与 Best Practices 机器可核对(Geist 实抓)。",
7
+ "semantic": {
8
+ "responsibility": "触发一个明确的动作或事件",
9
+ "when_to_use": "表单提交/行操作/工具栏动作;表单提交必须 submit 类型",
10
+ "when_not_to_use": "页面导航(Link);一组相关动作(Menu/SplitButton)"
11
+ },
12
+ "composition": {
13
+ "requires": [],
14
+ "optional": [],
15
+ "incompatible": []
16
+ },
17
+ "variants": [
18
+ "default",
19
+ "secondary",
20
+ "tertiary",
21
+ "error",
22
+ "warning"
23
+ ],
24
+ "states": [
25
+ "default",
26
+ "hover",
27
+ "active",
28
+ "loading",
29
+ "disabled"
30
+ ],
31
+ "usage_rules": [
32
+ "状态变更用 Button、改 URL 用 Link、多动作合并用 Menu/SplitButton",
33
+ "表单提交用 submit 类型;视觉 variant 与提交类型分离命名(Geist typeName 先例)",
34
+ "传 loading 而非替换 spinner——按钮保持可聚焦并向辅助技术播报忙态",
35
+ "仅在动作当前不可能时 disable,且配 Tooltip 解释原因",
36
+ "标签动词+名词、Title Case(Deploy Project);破坏性动作与 toast 1:1 配对"
37
+ ],
38
+ "forbidden": [
39
+ "bare_verb_label",
40
+ "general_confirm_label",
41
+ "aria_label_on_text_button",
42
+ "spinner_swap_button"
43
+ ],
44
+ "x-research-anchors": {
45
+ "note": "variant 词表 Default/Secondary/Tertiary/Error/Warning 与 Best Practices 均为 Geist Button 页实抓;icon-only 缺 svgOnly+aria-label 时 validator 抛错=现成 fail-closed 先例",
46
+ "sources": [
47
+ {
48
+ "url": "https://vercel.com/geist/button",
49
+ "fetched": "2026-09-02"
50
+ }
51
+ ]
52
+ }
53
+ }
@@ -0,0 +1,78 @@
1
+ {
2
+ "id": "COMPONENT_ARCHETYPE.DATA_GRID",
3
+ "kind": "archetype",
4
+ "layer": "PRIMITIVE",
5
+ "title_zh": "数据网格",
6
+ "summary_zh": "重量级数据网格:默认能力集(分页/排序/筛选/行选/固定/空态等)以 AntD Table demo 锚点为词表,role/键盘契约以 APG grid 为准,两源拼装各管一层。",
7
+ "semantic": {
8
+ "responsibility": "结构化数据的表格化呈现与行级交互",
9
+ "when_to_use": "主数据/查询结果的表格面;只读展示表可退回 table role(gating 条件)",
10
+ "when_not_to_use": "轻量静态表格(table role 语义足够时禁滥用 grid role)"
11
+ },
12
+ "composition": {
13
+ "requires": [],
14
+ "optional": [
15
+ "COMPONENT_ARCHETYPE.SEARCH_INPUT",
16
+ "COMPONENT_ARCHETYPE.BUTTON"
17
+ ],
18
+ "incompatible": []
19
+ },
20
+ "aria_pattern": "https://www.w3.org/WAI/ARIA/apg/patterns/grid/",
21
+ "default_capabilities": [
22
+ "pagination",
23
+ "sorting_single",
24
+ "sorting_multi",
25
+ "filtering",
26
+ "filter_reset",
27
+ "row_selection",
28
+ "fixed_header_columns",
29
+ "ellipsis",
30
+ "empty_state",
31
+ "summary",
32
+ "responsive"
33
+ ],
34
+ "extended_capabilities": [
35
+ "editable_cell",
36
+ "editable_row",
37
+ "expand",
38
+ "tree_data",
39
+ "drag_sort",
40
+ "virtual",
41
+ "grouping_columns"
42
+ ],
43
+ "keyboard_navigation": [
44
+ "ArrowRight",
45
+ "ArrowLeft",
46
+ "ArrowDown",
47
+ "ArrowUp",
48
+ "PageDown",
49
+ "PageUp",
50
+ "Home",
51
+ "End",
52
+ "Control+Home",
53
+ "Control+End"
54
+ ],
55
+ "keyboard_selection": [
56
+ "Control+Space",
57
+ "Shift+Space",
58
+ "Control+A",
59
+ "Shift+Arrow"
60
+ ],
61
+ "structural_contracts": [
62
+ "single_tab_stop",
63
+ "focus_managed_internally"
64
+ ],
65
+ "x-research-anchors": {
66
+ "note": "能力词表=AntD Table demo 锚点实抓(v6.6.2);键盘/role 契约=APG grid pattern 实抓;virtual 为 AntD 一等 prop",
67
+ "sources": [
68
+ {
69
+ "url": "https://ant.design/components/table",
70
+ "fetched": "2026-09-02"
71
+ },
72
+ {
73
+ "url": "https://www.w3.org/WAI/ARIA/apg/patterns/grid/",
74
+ "fetched": "2026-09-02"
75
+ }
76
+ ]
77
+ }
78
+ }
@@ -0,0 +1,52 @@
1
+ {
2
+ "id": "COMPONENT_ARCHETYPE.DIALOG",
3
+ "kind": "archetype",
4
+ "layer": "PRIMITIVE",
5
+ "title_zh": "对话框",
6
+ "summary_zh": "模态对话框原语:anatomy 八部件(Radix 实抓)中 Title/Description 为必配 a11y 部件;对话框族按模态/方向/风险分型(Modal/Drawer/Popconfirm/Result——AntD Feedback 分型)。",
7
+ "semantic": {
8
+ "responsibility": "中断式任务流(确认/编辑/呈现结果)的容器",
9
+ "when_to_use": "需要用户明确决策或输入且不能被后台打断时",
10
+ "when_not_to_use": "非阻断提示(Toast/Message);轻确认用 Popconfirm 分型"
11
+ },
12
+ "composition": {
13
+ "requires": [],
14
+ "optional": [],
15
+ "incompatible": []
16
+ },
17
+ "aria_pattern": "https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/",
18
+ "anatomy": [
19
+ "Root",
20
+ "Trigger",
21
+ "Portal",
22
+ "Overlay",
23
+ "Content",
24
+ "Close",
25
+ "Title",
26
+ "Description"
27
+ ],
28
+ "required_bindings": [
29
+ "Title",
30
+ "Description"
31
+ ],
32
+ "family_variants": {
33
+ "modal_task": "任务模态",
34
+ "drawer_side": "侧滑面板",
35
+ "popconfirm_light": "轻确认",
36
+ "result_page": "结果页"
37
+ },
38
+ "props_convention": "受控/非受控成对命名(open/defaultOpen/onOpenChange——Radix 实抓约定)",
39
+ "x-research-anchors": {
40
+ "note": "anatomy 八部件与 modal prop 默认值为 Radix Dialog 页实抓;族分型参照 AntD Feedback 类(Modal/Drawer/Popconfirm/Result)",
41
+ "sources": [
42
+ {
43
+ "url": "https://www.radix-ui.com/primitives/docs/components/dialog",
44
+ "fetched": "2026-09-02"
45
+ },
46
+ {
47
+ "url": "https://ant.design/components/overview",
48
+ "fetched": "2026-09-02"
49
+ }
50
+ ]
51
+ }
52
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "id": "COMPONENT_ARCHETYPE.SEARCH_INPUT",
3
+ "kind": "archetype",
4
+ "layer": "PRIMITIVE",
5
+ "title_zh": "搜索输入框",
6
+ "summary_zh": "文本输入触发的过滤/检索原语:企业站把它列为独立组件而非 Input 变体(Geist Search Input 独立词条佐证语义独立性)。",
7
+ "semantic": {
8
+ "responsibility": "按关键词过滤当前数据面(本地或远程)",
9
+ "when_to_use": "列表页/选择器的过滤区",
10
+ "when_not_to_use": "需要选项列表选择语义时(走 COMPONENT_ARCHETYPE.SEARCH_SELECT)"
11
+ },
12
+ "composition": {
13
+ "requires": [],
14
+ "optional": [
15
+ "COMPONENT_ARCHETYPE.SEARCH_SELECT"
16
+ ],
17
+ "incompatible": []
18
+ },
19
+ "states": [
20
+ "default",
21
+ "focus",
22
+ "filled",
23
+ "clearable",
24
+ "disabled"
25
+ ],
26
+ "x-research-anchors": {
27
+ "sources": [
28
+ {
29
+ "url": "https://vercel.com/geist/search-input",
30
+ "fetched": "2026-09-02"
31
+ }
32
+ ]
33
+ }
34
+ }
@@ -0,0 +1,77 @@
1
+ {
2
+ "id": "COMPONENT_ARCHETYPE.SEARCH_SELECT",
3
+ "kind": "archetype",
4
+ "layer": "PRIMITIVE",
5
+ "title_zh": "可搜索选择器",
6
+ "summary_zh": "可搜索的选项选择器:aria 模式=combobox(popup=listbox 变体);四键键盘词表+两条行为契约(selection_follows_focus/single_select);anatomy 词表照 Radix Select 16 部件。",
7
+ "semantic": {
8
+ "responsibility": "从大选项集中按关键词检索并选择(车型/供应商选择器类)",
9
+ "when_to_use": "选项多到需要搜索;可搜索选 combobox、纯选择选 listbox(aria_pattern 分型——核实差异表 #6)",
10
+ "when_not_to_use": "选项少(≤10)用纯 Select;自由文本用 Input"
11
+ },
12
+ "composition": {
13
+ "requires": [],
14
+ "optional": [],
15
+ "incompatible": []
16
+ },
17
+ "aria_pattern": "https://www.w3.org/WAI/ARIA/apg/patterns/combobox/",
18
+ "anatomy": [
19
+ "trigger",
20
+ "input",
21
+ "popup",
22
+ "option",
23
+ "clear_button"
24
+ ],
25
+ "anatomy_reference_radix": [
26
+ "Root",
27
+ "Trigger",
28
+ "Value",
29
+ "Icon",
30
+ "Portal",
31
+ "Content",
32
+ "Viewport",
33
+ "Item",
34
+ "ItemText",
35
+ "ItemIndicator",
36
+ "ScrollUpButton",
37
+ "ScrollDownButton",
38
+ "Group",
39
+ "Label",
40
+ "Separator",
41
+ "Arrow"
42
+ ],
43
+ "keyboard": [
44
+ "ArrowDown",
45
+ "ArrowUp",
46
+ "Enter",
47
+ "Escape"
48
+ ],
49
+ "keyboard_contracts": [
50
+ "selection_follows_focus",
51
+ "single_select",
52
+ "printable_characters_refocus_input"
53
+ ],
54
+ "variants": {
55
+ "selection": [
56
+ "single",
57
+ "multiple"
58
+ ]
59
+ },
60
+ "forbidden": [
61
+ "page_local_custom_select",
62
+ "anonymous_dropdown_copy"
63
+ ],
64
+ "x-research-anchors": {
65
+ "note": "四键语义按 APG combobox listbox-popup 段落核实并补两条契约(差异表 #6 裁决);anatomy 全表为 Radix Select 页实抓",
66
+ "sources": [
67
+ {
68
+ "url": "https://www.w3.org/WAI/ARIA/apg/patterns/combobox/",
69
+ "fetched": "2026-09-02"
70
+ },
71
+ {
72
+ "url": "https://www.radix-ui.com/primitives/docs/components/select",
73
+ "fetched": "2026-09-02"
74
+ }
75
+ ]
76
+ }
77
+ }