qgraphflow 0.0.6 → 0.0.7

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 (89) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +2 -2
  4. package/.cursor-plugin/plugin.json +1 -1
  5. package/.qoder-plugin/plugin.json +1 -1
  6. package/README.md +119 -70
  7. package/docs/clients.de.md +15 -24
  8. package/docs/clients.es.md +15 -24
  9. package/docs/clients.ja.md +15 -24
  10. package/docs/clients.md +15 -24
  11. package/docs/clients.pt.md +15 -24
  12. package/docs/clients.ru.md +15 -24
  13. package/docs/clients.zh-CN.md +15 -24
  14. package/docs/readme/README.de.md +120 -71
  15. package/docs/readme/README.es.md +120 -71
  16. package/docs/readme/README.ja.md +120 -71
  17. package/docs/readme/README.pt.md +120 -71
  18. package/docs/readme/README.ru.md +120 -71
  19. package/docs/readme/README.zh-CN.md +106 -59
  20. package/examples/jeepay/README.md +23 -0
  21. package/examples/jeepay/capabilities.graph.json +270 -0
  22. package/examples/jeepay/class.graph.json +237 -0
  23. package/examples/jeepay/collection.graph.json +3057 -0
  24. package/examples/jeepay/dataflow.graph.json +212 -0
  25. package/examples/jeepay/deployment.graph.json +222 -0
  26. package/examples/jeepay/engineering.graph.json +277 -0
  27. package/examples/jeepay/er.graph.json +482 -0
  28. package/examples/jeepay/flowchart.graph.json +312 -0
  29. package/examples/jeepay/relations.graph.json +289 -0
  30. package/examples/jeepay/sequence.graph.json +355 -0
  31. package/examples/jeepay/source.json +95 -0
  32. package/examples/jeepay/state.graph.json +175 -0
  33. package/examples/jeepay/usecase.graph.json +222 -0
  34. package/package.json +14 -3
  35. package/skills/q-flow/SKILL.md +28 -20
  36. package/skills/q-flow/agents/openai.yaml +1 -1
  37. package/skills/q-flow/assets/viewer/package.json +1 -1
  38. package/skills/q-flow/assets/viewer/src/architecture-overview-theme.js +22 -0
  39. package/skills/q-flow/assets/viewer/src/architecture-overview.js +340 -0
  40. package/skills/q-flow/assets/viewer/src/diagrams/architecture.js +8 -5
  41. package/skills/q-flow/assets/viewer/src/diagrams/card.js +35 -17
  42. package/skills/q-flow/assets/viewer/src/diagrams/deployment.js +7 -5
  43. package/skills/q-flow/assets/viewer/src/diagrams/drawing.js +5 -2
  44. package/skills/q-flow/assets/viewer/src/diagrams/registry.js +10 -0
  45. package/skills/q-flow/assets/viewer/src/diagrams/sequence.js +13 -7
  46. package/skills/q-flow/assets/viewer/src/edge-routing.js +43 -22
  47. package/skills/q-flow/assets/viewer/src/export-svg.js +27 -5
  48. package/skills/q-flow/assets/viewer/src/graph-validation.js +72 -15
  49. package/skills/q-flow/assets/viewer/src/i18n-messages.json +184 -8
  50. package/skills/q-flow/assets/viewer/src/layout-compaction.js +123 -0
  51. package/skills/q-flow/assets/viewer/src/layout-measure.js +14 -8
  52. package/skills/q-flow/assets/viewer/src/layout-policy.js +6 -0
  53. package/skills/q-flow/assets/viewer/src/layout-quality.js +61 -15
  54. package/skills/q-flow/assets/viewer/src/layout-refinement.js +271 -0
  55. package/skills/q-flow/assets/viewer/src/layout-semantics.js +8 -0
  56. package/skills/q-flow/assets/viewer/src/layout-spacing.js +23 -4
  57. package/skills/q-flow/assets/viewer/src/layout-templates.js +298 -0
  58. package/skills/q-flow/assets/viewer/src/node-svg.js +1 -1
  59. package/skills/q-flow/assets/viewer/src/orthogonal-routing.js +475 -0
  60. package/skills/q-flow/assets/viewer/src/presentation-graph.js +31 -0
  61. package/skills/q-flow/assets/viewer/src/route-clearance.js +144 -0
  62. package/skills/q-flow/assets/viewer/src/sequence-executions.js +22 -0
  63. package/skills/q-flow/assets/viewer/src/sequence-fragments.js +20 -2
  64. package/skills/q-flow/assets/viewer/src/session-graph.js +46 -3
  65. package/skills/q-flow/assets/viewer/src/text-layout.js +33 -6
  66. package/skills/q-flow/assets/viewer/src/view-identity.js +26 -0
  67. package/skills/q-flow/assets/viewer/src/visual-style.js +13 -5
  68. package/skills/q-flow/assets/viewer-dist/index.html +30 -28
  69. package/skills/q-flow/references/evidence-sources.md +7 -5
  70. package/skills/q-flow/references/graph-common.md +34 -34
  71. package/skills/q-flow/references/graph-schema.md +28 -7
  72. package/skills/q-flow/references/guided-intake.md +51 -71
  73. package/skills/q-flow/references/layout-routing.md +47 -0
  74. package/skills/q-flow/references/types/architecture.md +42 -22
  75. package/skills/q-flow/references/types/class.md +9 -2
  76. package/skills/q-flow/references/types/dataflow.md +11 -4
  77. package/skills/q-flow/references/types/deployment.md +11 -3
  78. package/skills/q-flow/references/types/er.md +8 -1
  79. package/skills/q-flow/references/types/flowchart.md +12 -5
  80. package/skills/q-flow/references/types/sequence.md +20 -16
  81. package/skills/q-flow/references/types/state.md +10 -3
  82. package/skills/q-flow/references/types/usecase.md +6 -0
  83. package/skills/q-flow/references/viewer-development.md +37 -24
  84. package/skills/q-flow/references/visual-contract.md +12 -6
  85. package/skills/q-flow/scripts/compile-layout.mjs +85 -102
  86. package/skills/q-flow/scripts/compile-sequence.mjs +4 -21
  87. package/skills/q-flow/scripts/generate-viewer.mjs +18 -9
  88. package/skills/q-flow/scripts/validate-graph.mjs +38 -21
  89. package/examples/order-flow.graph.json +0 -94
@@ -0,0 +1,212 @@
1
+ {
2
+ "meta": {
3
+ "title": "统一下单与回调数据流图",
4
+ "subtitle": "Jeepay 源码与配置证据",
5
+ "sourceRef": "jeequan/jeepay@e1ac9086d679826bab593f20431b7ecd292eb685",
6
+ "scope": "请求、渠道结果与通知记录的数据流",
7
+ "diagramType": "dataflow",
8
+ "locale": "zh-CN",
9
+ "notes": [
10
+ "渠道内部数据转换未在本仓库中展开;图仅追踪本项目可见的请求与回调路径。",
11
+ "商户通知通过 MQ 发送;本图止于持久化通知记录,MQ 消费与重试未展开。"
12
+ ],
13
+ "viewId": "jeepay-dataflow"
14
+ },
15
+ "nodes": [
16
+ {
17
+ "id": "merchant",
18
+ "label": "商户系统",
19
+ "kind": "external"
20
+ },
21
+ {
22
+ "id": "verify",
23
+ "label": "getRQByWithMchSign",
24
+ "kind": "process",
25
+ "module": "payment",
26
+ "source": {
27
+ "file": "jeepay-payment/src/main/java/com/jeequan/jeepay/pay/ctrl/ApiController.java",
28
+ "lineStart": 58,
29
+ "lineEnd": 58,
30
+ "kind": "source"
31
+ }
32
+ },
33
+ {
34
+ "id": "order",
35
+ "label": "AbstractPayOrderController.unifiedOrder",
36
+ "kind": "process",
37
+ "module": "payment",
38
+ "source": {
39
+ "file": "jeepay-payment/src/main/java/com/jeequan/jeepay/pay/ctrl/payorder/AbstractPayOrderController.java",
40
+ "lineStart": 80,
41
+ "lineEnd": 80,
42
+ "kind": "source"
43
+ },
44
+ "tags": [
45
+ "core"
46
+ ]
47
+ },
48
+ {
49
+ "id": "channel",
50
+ "label": "支付渠道",
51
+ "kind": "external",
52
+ "module": "channel"
53
+ },
54
+ {
55
+ "id": "paydb",
56
+ "label": "t_pay_order",
57
+ "kind": "dataStore",
58
+ "module": "payment",
59
+ "source": {
60
+ "file": "docs/sql/init.sql",
61
+ "lineStart": 251,
62
+ "lineEnd": 251,
63
+ "kind": "schema"
64
+ }
65
+ },
66
+ {
67
+ "id": "callback",
68
+ "label": "ChannelNoticeController.doNotify",
69
+ "kind": "process",
70
+ "module": "payment",
71
+ "source": {
72
+ "file": "jeepay-payment/src/main/java/com/jeequan/jeepay/pay/ctrl/payorder/ChannelNoticeController.java",
73
+ "lineStart": 170,
74
+ "lineEnd": 170,
75
+ "kind": "source"
76
+ }
77
+ },
78
+ {
79
+ "id": "notify",
80
+ "label": "PayMchNotifyService.payOrderNotify",
81
+ "kind": "process",
82
+ "module": "notification",
83
+ "source": {
84
+ "file": "jeepay-payment/src/main/java/com/jeequan/jeepay/pay/service/PayMchNotifyService.java",
85
+ "lineStart": 53,
86
+ "lineEnd": 53,
87
+ "kind": "source"
88
+ }
89
+ },
90
+ {
91
+ "id": "notifydb",
92
+ "label": "t_mch_notify_record",
93
+ "kind": "dataStore",
94
+ "module": "notification",
95
+ "source": {
96
+ "file": "docs/sql/init.sql",
97
+ "lineStart": 296,
98
+ "lineEnd": 296,
99
+ "kind": "schema"
100
+ }
101
+ }
102
+ ],
103
+ "edges": [
104
+ {
105
+ "id": "df1",
106
+ "source": "merchant",
107
+ "target": "verify",
108
+ "kind": "data",
109
+ "label": "商户号、应用ID、签名和下单参数",
110
+ "evidence": "source",
111
+ "site": {
112
+ "file": "jeepay-payment/src/main/java/com/jeequan/jeepay/pay/ctrl/payorder/UnifiedOrderController.java",
113
+ "lineStart": 56,
114
+ "lineEnd": 56
115
+ }
116
+ },
117
+ {
118
+ "id": "df2",
119
+ "source": "verify",
120
+ "target": "order",
121
+ "kind": "data",
122
+ "label": "已校验 UnifiedOrderRQ",
123
+ "evidence": "source",
124
+ "site": {
125
+ "file": "jeepay-payment/src/main/java/com/jeequan/jeepay/pay/ctrl/payorder/UnifiedOrderController.java",
126
+ "lineStart": 61,
127
+ "lineEnd": 61
128
+ }
129
+ },
130
+ {
131
+ "id": "df3",
132
+ "source": "order",
133
+ "target": "paydb",
134
+ "kind": "data",
135
+ "label": "支付订单与初始状态",
136
+ "evidence": "source",
137
+ "site": {
138
+ "file": "jeepay-payment/src/main/java/com/jeequan/jeepay/pay/ctrl/payorder/AbstractPayOrderController.java",
139
+ "lineStart": 201,
140
+ "lineEnd": 201
141
+ }
142
+ },
143
+ {
144
+ "id": "df4",
145
+ "source": "order",
146
+ "target": "channel",
147
+ "kind": "data",
148
+ "label": "支付请求与渠道参数",
149
+ "evidence": "source",
150
+ "site": {
151
+ "file": "jeepay-payment/src/main/java/com/jeequan/jeepay/pay/ctrl/payorder/AbstractPayOrderController.java",
152
+ "lineStart": 205,
153
+ "lineEnd": 205
154
+ }
155
+ },
156
+ {
157
+ "id": "df5",
158
+ "source": "channel",
159
+ "target": "callback",
160
+ "kind": "data",
161
+ "label": "渠道通知参数",
162
+ "evidence": "source",
163
+ "site": {
164
+ "file": "jeepay-payment/src/main/java/com/jeequan/jeepay/pay/ctrl/payorder/ChannelNoticeController.java",
165
+ "lineStart": 170,
166
+ "lineEnd": 170
167
+ }
168
+ },
169
+ {
170
+ "id": "df6",
171
+ "source": "callback",
172
+ "target": "paydb",
173
+ "kind": "data",
174
+ "label": "渠道订单号与成功状态",
175
+ "evidence": "source",
176
+ "site": {
177
+ "file": "jeepay-payment/src/main/java/com/jeequan/jeepay/pay/ctrl/payorder/ChannelNoticeController.java",
178
+ "lineStart": 237,
179
+ "lineEnd": 237
180
+ }
181
+ },
182
+ {
183
+ "id": "df7",
184
+ "source": "paydb",
185
+ "target": "notify",
186
+ "kind": "data",
187
+ "label": "支付订单和通知地址",
188
+ "evidence": "source",
189
+ "site": {
190
+ "file": "jeepay-payment/src/main/java/com/jeequan/jeepay/pay/service/PayOrderProcessService.java",
191
+ "lineStart": 51,
192
+ "lineEnd": 51
193
+ }
194
+ },
195
+ {
196
+ "id": "df8",
197
+ "source": "notify",
198
+ "target": "notifydb",
199
+ "kind": "data",
200
+ "label": "商户通知记录",
201
+ "evidence": "source",
202
+ "site": {
203
+ "file": "jeepay-payment/src/main/java/com/jeequan/jeepay/pay/service/PayMchNotifyService.java",
204
+ "lineStart": 88,
205
+ "lineEnd": 88
206
+ }
207
+ }
208
+ ],
209
+ "layout": {
210
+ "direction": "right"
211
+ }
212
+ }
@@ -0,0 +1,222 @@
1
+ {
2
+ "meta": {
3
+ "title": "Jeepay Docker Compose 部署图",
4
+ "subtitle": "Jeepay 源码与配置证据",
5
+ "sourceRef": "jeequan/jeepay@e1ac9086d679826bab593f20431b7ecd292eb685",
6
+ "scope": "docker-compose.yml 默认后端服务",
7
+ "diagramType": "deployment",
8
+ "locale": "zh-CN",
9
+ "notes": [
10
+ "图示为 Compose 声明的服务和依赖,未验证容器实际运行。",
11
+ "RabbitMQ 与 ActiveMQ 在此 Compose 中是注释的可选配置,未作为默认运行服务绘制。"
12
+ ],
13
+ "viewId": "jeepay-deployment"
14
+ },
15
+ "nodes": [
16
+ {
17
+ "id": "mysql",
18
+ "label": "mysql",
19
+ "kind": "database",
20
+ "module": "data",
21
+ "source": {
22
+ "file": "docker-compose.yml",
23
+ "lineStart": 11,
24
+ "lineEnd": 11,
25
+ "kind": "config"
26
+ },
27
+ "groupId": "network",
28
+ "layout": {
29
+ "tier": "data"
30
+ }
31
+ },
32
+ {
33
+ "id": "redis",
34
+ "label": "redis",
35
+ "kind": "database",
36
+ "module": "cache",
37
+ "source": {
38
+ "file": "docker-compose.yml",
39
+ "lineStart": 142,
40
+ "lineEnd": 142,
41
+ "kind": "config"
42
+ },
43
+ "groupId": "network",
44
+ "layout": {
45
+ "tier": "data"
46
+ }
47
+ },
48
+ {
49
+ "id": "namesrv",
50
+ "label": "rocketmq-namesrv",
51
+ "kind": "container",
52
+ "module": "mq",
53
+ "source": {
54
+ "file": "docker-compose.yml",
55
+ "lineStart": 39,
56
+ "lineEnd": 39,
57
+ "kind": "config"
58
+ },
59
+ "groupId": "network",
60
+ "layout": {
61
+ "tier": "infrastructure"
62
+ }
63
+ },
64
+ {
65
+ "id": "broker",
66
+ "label": "rocketmq-broker",
67
+ "kind": "container",
68
+ "module": "mq",
69
+ "source": {
70
+ "file": "docker-compose.yml",
71
+ "lineStart": 65,
72
+ "lineEnd": 65,
73
+ "kind": "config"
74
+ },
75
+ "groupId": "network",
76
+ "layout": {
77
+ "tier": "infrastructure"
78
+ }
79
+ },
80
+ {
81
+ "id": "payment",
82
+ "label": "payment",
83
+ "kind": "container",
84
+ "module": "payment",
85
+ "source": {
86
+ "file": "docker-compose.yml",
87
+ "lineStart": 162,
88
+ "lineEnd": 162,
89
+ "kind": "config"
90
+ },
91
+ "tags": [
92
+ "core"
93
+ ],
94
+ "groupId": "network",
95
+ "layout": {
96
+ "tier": "application"
97
+ }
98
+ },
99
+ {
100
+ "id": "manager",
101
+ "label": "manager",
102
+ "kind": "container",
103
+ "module": "manager",
104
+ "source": {
105
+ "file": "docker-compose.yml",
106
+ "lineStart": 192,
107
+ "lineEnd": 192,
108
+ "kind": "config"
109
+ },
110
+ "groupId": "network",
111
+ "layout": {
112
+ "tier": "application"
113
+ }
114
+ },
115
+ {
116
+ "id": "merchant",
117
+ "label": "merchant",
118
+ "kind": "container",
119
+ "module": "merchant",
120
+ "source": {
121
+ "file": "docker-compose.yml",
122
+ "lineStart": 222,
123
+ "lineEnd": 222,
124
+ "kind": "config"
125
+ },
126
+ "groupId": "network",
127
+ "layout": {
128
+ "tier": "application"
129
+ }
130
+ }
131
+ ],
132
+ "edges": [
133
+ {
134
+ "id": "d1",
135
+ "source": "broker",
136
+ "target": "namesrv",
137
+ "kind": "depends",
138
+ "label": "NameServer",
139
+ "evidence": "config",
140
+ "site": {
141
+ "file": "docker-compose.yml",
142
+ "lineStart": 78,
143
+ "lineEnd": 78
144
+ }
145
+ },
146
+ {
147
+ "id": "d2",
148
+ "source": "payment",
149
+ "target": "mysql",
150
+ "kind": "depends",
151
+ "label": "MySQL",
152
+ "evidence": "config",
153
+ "site": {
154
+ "file": "docker-compose.yml",
155
+ "lineStart": 179,
156
+ "lineEnd": 179
157
+ }
158
+ },
159
+ {
160
+ "id": "d3",
161
+ "source": "payment",
162
+ "target": "redis",
163
+ "kind": "depends",
164
+ "label": "Redis",
165
+ "evidence": "config",
166
+ "site": {
167
+ "file": "docker-compose.yml",
168
+ "lineStart": 181,
169
+ "lineEnd": 181
170
+ }
171
+ },
172
+ {
173
+ "id": "d4",
174
+ "source": "payment",
175
+ "target": "broker",
176
+ "kind": "depends",
177
+ "label": "RocketMQ",
178
+ "evidence": "config",
179
+ "site": {
180
+ "file": "docker-compose.yml",
181
+ "lineStart": 183,
182
+ "lineEnd": 183
183
+ }
184
+ },
185
+ {
186
+ "id": "d5",
187
+ "source": "manager",
188
+ "target": "mysql",
189
+ "kind": "depends",
190
+ "label": "MySQL",
191
+ "evidence": "config",
192
+ "site": {
193
+ "file": "docker-compose.yml",
194
+ "lineStart": 209,
195
+ "lineEnd": 209
196
+ }
197
+ },
198
+ {
199
+ "id": "d6",
200
+ "source": "merchant",
201
+ "target": "mysql",
202
+ "kind": "depends",
203
+ "label": "MySQL",
204
+ "evidence": "config",
205
+ "site": {
206
+ "file": "docker-compose.yml",
207
+ "lineStart": 239,
208
+ "lineEnd": 239
209
+ }
210
+ }
211
+ ],
212
+ "groups": [
213
+ {
214
+ "id": "network",
215
+ "label": "jeepay 网络",
216
+ "kind": "network"
217
+ }
218
+ ],
219
+ "layout": {
220
+ "direction": "down"
221
+ }
222
+ }
@@ -0,0 +1,277 @@
1
+ {
2
+ "meta": {
3
+ "title": "Jeepay 工程分层架构",
4
+ "subtitle": "Jeepay 源码与配置证据",
5
+ "sourceRef": "jeequan/jeepay@e1ac9086d679826bab593f20431b7ecd292eb685",
6
+ "scope": "Maven 模块与编译期依赖",
7
+ "diagramType": "architecture",
8
+ "locale": "zh-CN",
9
+ "notes": [
10
+ "箭头表示 pom.xml 声明的模块依赖,不表示运行时 HTTP 调用。",
11
+ "jeepay-z-codegen 是独立代码生成模块,不在支付主干分层中。"
12
+ ],
13
+ "architectureView": "engineering",
14
+ "viewId": "jeepay-engineering"
15
+ },
16
+ "nodes": [
17
+ {
18
+ "id": "manager",
19
+ "label": "jeepay-manager",
20
+ "kind": "component",
21
+ "module": "manager",
22
+ "source": {
23
+ "file": "jeepay-manager/pom.xml",
24
+ "lineStart": 7,
25
+ "lineEnd": 7,
26
+ "kind": "config"
27
+ },
28
+ "subtitle": "Maven 模块",
29
+ "overviewText": [
30
+ "运营管理端应用模块"
31
+ ]
32
+ },
33
+ {
34
+ "id": "merchant",
35
+ "label": "jeepay-merchant",
36
+ "kind": "component",
37
+ "module": "merchant",
38
+ "source": {
39
+ "file": "jeepay-merchant/pom.xml",
40
+ "lineStart": 7,
41
+ "lineEnd": 7,
42
+ "kind": "config"
43
+ },
44
+ "subtitle": "Maven 模块",
45
+ "overviewText": [
46
+ "商户管理端应用模块"
47
+ ]
48
+ },
49
+ {
50
+ "id": "payment",
51
+ "label": "jeepay-payment",
52
+ "kind": "business",
53
+ "module": "payment",
54
+ "source": {
55
+ "file": "jeepay-payment/pom.xml",
56
+ "lineStart": 7,
57
+ "lineEnd": 7,
58
+ "kind": "config"
59
+ },
60
+ "subtitle": "Maven 模块",
61
+ "tags": [
62
+ "core"
63
+ ],
64
+ "overviewText": [
65
+ "统一支付网关应用模块"
66
+ ]
67
+ },
68
+ {
69
+ "id": "service",
70
+ "label": "jeepay-service",
71
+ "kind": "component",
72
+ "module": "service",
73
+ "source": {
74
+ "file": "jeepay-service/pom.xml",
75
+ "lineStart": 7,
76
+ "lineEnd": 7,
77
+ "kind": "config"
78
+ },
79
+ "subtitle": "Maven 模块",
80
+ "overviewText": [
81
+ "数据库服务与持久化访问模块"
82
+ ]
83
+ },
84
+ {
85
+ "id": "core",
86
+ "label": "jeepay-core",
87
+ "kind": "component",
88
+ "module": "core",
89
+ "source": {
90
+ "file": "jeepay-core/pom.xml",
91
+ "lineStart": 7,
92
+ "lineEnd": 7,
93
+ "kind": "config"
94
+ },
95
+ "subtitle": "Maven 模块",
96
+ "overviewText": [
97
+ "公共实体、模型与工具模块"
98
+ ]
99
+ },
100
+ {
101
+ "id": "mq",
102
+ "label": "jeepay-components-mq",
103
+ "kind": "component",
104
+ "module": "mq",
105
+ "source": {
106
+ "file": "jeepay-components/jeepay-components-mq/pom.xml",
107
+ "lineStart": 7,
108
+ "lineEnd": 7,
109
+ "kind": "config"
110
+ },
111
+ "subtitle": "Maven 模块",
112
+ "overviewText": [
113
+ "消息队列抽象与实现模块"
114
+ ]
115
+ },
116
+ {
117
+ "id": "oss",
118
+ "label": "jeepay-components-oss",
119
+ "kind": "component",
120
+ "module": "oss",
121
+ "source": {
122
+ "file": "jeepay-components/jeepay-components-oss/pom.xml",
123
+ "lineStart": 7,
124
+ "lineEnd": 7,
125
+ "kind": "config"
126
+ },
127
+ "subtitle": "Maven 模块",
128
+ "overviewText": [
129
+ "对象存储组件模块"
130
+ ]
131
+ }
132
+ ],
133
+ "edges": [
134
+ {
135
+ "id": "e1",
136
+ "source": "manager",
137
+ "target": "service",
138
+ "kind": "depends",
139
+ "label": "Maven 依赖",
140
+ "evidence": "source",
141
+ "site": {
142
+ "file": "jeepay-manager/pom.xml",
143
+ "lineStart": 24,
144
+ "lineEnd": 24
145
+ }
146
+ },
147
+ {
148
+ "id": "e2",
149
+ "source": "merchant",
150
+ "target": "service",
151
+ "kind": "depends",
152
+ "label": "Maven 依赖",
153
+ "evidence": "source",
154
+ "site": {
155
+ "file": "jeepay-merchant/pom.xml",
156
+ "lineStart": 24,
157
+ "lineEnd": 24
158
+ }
159
+ },
160
+ {
161
+ "id": "e3",
162
+ "source": "payment",
163
+ "target": "service",
164
+ "kind": "depends",
165
+ "label": "Maven 依赖",
166
+ "evidence": "source",
167
+ "site": {
168
+ "file": "jeepay-payment/pom.xml",
169
+ "lineStart": 30,
170
+ "lineEnd": 30
171
+ }
172
+ },
173
+ {
174
+ "id": "e4",
175
+ "source": "payment",
176
+ "target": "mq",
177
+ "kind": "depends",
178
+ "label": "Maven 依赖",
179
+ "evidence": "source",
180
+ "site": {
181
+ "file": "jeepay-payment/pom.xml",
182
+ "lineStart": 42,
183
+ "lineEnd": 42
184
+ }
185
+ },
186
+ {
187
+ "id": "e5",
188
+ "source": "payment",
189
+ "target": "oss",
190
+ "kind": "depends",
191
+ "label": "Maven 依赖",
192
+ "evidence": "source",
193
+ "site": {
194
+ "file": "jeepay-payment/pom.xml",
195
+ "lineStart": 36,
196
+ "lineEnd": 36
197
+ }
198
+ },
199
+ {
200
+ "id": "e6",
201
+ "source": "service",
202
+ "target": "core",
203
+ "kind": "depends",
204
+ "label": "Maven 依赖",
205
+ "evidence": "source",
206
+ "site": {
207
+ "file": "jeepay-service/pom.xml",
208
+ "lineStart": 24,
209
+ "lineEnd": 24
210
+ }
211
+ },
212
+ {
213
+ "id": "e7",
214
+ "source": "mq",
215
+ "target": "core",
216
+ "kind": "depends",
217
+ "label": "Maven 依赖",
218
+ "evidence": "source",
219
+ "site": {
220
+ "file": "jeepay-components/jeepay-components-mq/pom.xml",
221
+ "lineStart": 25,
222
+ "lineEnd": 25
223
+ }
224
+ }
225
+ ],
226
+ "layout": {
227
+ "sections": [
228
+ {
229
+ "id": "app",
230
+ "title": "应用入口",
231
+ "mode": "grid",
232
+ "columns": 3,
233
+ "tone": "blue",
234
+ "items": [
235
+ {
236
+ "nodeId": "manager"
237
+ },
238
+ {
239
+ "nodeId": "merchant"
240
+ },
241
+ {
242
+ "nodeId": "payment"
243
+ }
244
+ ]
245
+ },
246
+ {
247
+ "id": "domain",
248
+ "title": "持久化与公共模型",
249
+ "mode": "stack",
250
+ "tone": "green",
251
+ "items": [
252
+ {
253
+ "nodeId": "service"
254
+ },
255
+ {
256
+ "nodeId": "core"
257
+ }
258
+ ]
259
+ },
260
+ {
261
+ "id": "components",
262
+ "title": "可复用组件",
263
+ "mode": "row",
264
+ "tone": "lavender",
265
+ "items": [
266
+ {
267
+ "nodeId": "mq"
268
+ },
269
+ {
270
+ "nodeId": "oss"
271
+ }
272
+ ]
273
+ }
274
+ ],
275
+ "direction": "down"
276
+ }
277
+ }