w-flowchart 1.0.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 (135) hide show
  1. package/.editorconfig +9 -0
  2. package/.eslintignore +3 -0
  3. package/.eslintrc.js +55 -0
  4. package/.jsdoc +25 -0
  5. package/LICENSE +21 -0
  6. package/README.md +49 -0
  7. package/SECURITY.md +5 -0
  8. package/babel.config.js +16 -0
  9. package/dist/w-flowchart.umd.js +7 -0
  10. package/dist/w-flowchart.umd.js.map +1 -0
  11. package/docs/fonts/Montserrat/Montserrat-Bold.eot +0 -0
  12. package/docs/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
  13. package/docs/fonts/Montserrat/Montserrat-Bold.woff +0 -0
  14. package/docs/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
  15. package/docs/fonts/Montserrat/Montserrat-Regular.eot +0 -0
  16. package/docs/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
  17. package/docs/fonts/Montserrat/Montserrat-Regular.woff +0 -0
  18. package/docs/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
  19. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
  20. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +978 -0
  21. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
  22. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
  23. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
  24. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
  25. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1049 -0
  26. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
  27. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
  28. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
  29. package/docs/index.html +84 -0
  30. package/docs/scripts/collapse.js +39 -0
  31. package/docs/scripts/commonNav.js +28 -0
  32. package/docs/scripts/linenumber.js +25 -0
  33. package/docs/scripts/nav.js +12 -0
  34. package/docs/scripts/polyfill.js +4 -0
  35. package/docs/scripts/prettify/Apache-License-2.0.txt +202 -0
  36. package/docs/scripts/prettify/lang-css.js +2 -0
  37. package/docs/scripts/prettify/prettify.js +28 -0
  38. package/docs/scripts/search.js +99 -0
  39. package/docs/styles/jsdoc.css +776 -0
  40. package/docs/styles/prettify.css +80 -0
  41. package/package.json +49 -0
  42. package/script.txt +17 -0
  43. package/src/WFlowchart.mjs +0 -0
  44. package/src/common/derive.mjs +7 -0
  45. package/src/common/palette.mjs +34 -0
  46. package/src/common/pkg.mjs +31 -0
  47. package/src/p1/README.md +65 -0
  48. package/src/p1/gen.mjs +203 -0
  49. package/src/p10/README.md +31 -0
  50. package/src/p10/gen.mjs +228 -0
  51. package/src/p2/README.md +87 -0
  52. package/src/p2/gen.mjs +210 -0
  53. package/src/p3/README.md +99 -0
  54. package/src/p3/gen.mjs +188 -0
  55. package/src/p4/README.md +84 -0
  56. package/src/p4/gen.mjs +82 -0
  57. package/src/p5/README.md +90 -0
  58. package/src/p5/gen.mjs +182 -0
  59. package/src/p6/README.md +87 -0
  60. package/src/p6/gen.mjs +186 -0
  61. package/src/p7/README.md +84 -0
  62. package/src/p7/gen.mjs +386 -0
  63. package/src/p8/README.md +92 -0
  64. package/src/p8/gen.mjs +416 -0
  65. package/src/p9/README.md +90 -0
  66. package/src/p9/gen.mjs +63 -0
  67. package/src/p9/page9.html +420 -0
  68. package/test/cases.mjs +349 -0
  69. package/test/data//344/275/234/346/245/255/346/265/201/347/250/213/345/234/226.json +92 -0
  70. package/test/data//345/211/215/347/253/257/346/236/266/346/247/213/350/210/207/350/263/207/346/226/231/346/265/201/345/234/226.json +112 -0
  71. package/test/data//345/276/214/347/253/257/346/234/215/345/213/231/347/265/204/346/210/220/345/234/226.json +116 -0
  72. package/test/data//346/211/271/346/254/241/344/270/212/345/202/263/350/231/225/347/220/206/346/265/201/347/250/213/345/234/226.json +251 -0
  73. package/test/data//347/250/213/345/274/217/345/205/203/344/273/266/347/265/204/346/210/220/345/234/226.json +126 -0
  74. package/test/data//347/250/213/345/274/217/345/210/206/345/261/244/346/236/266/346/247/213/345/234/226.json +133 -0
  75. package/test/data//347/263/273/347/265/261/346/236/266/346/247/213/345/234/226.json +102 -0
  76. package/test/data//347/263/273/347/265/261/351/227/234/350/201/257/345/234/226.json +117 -0
  77. package/test/data//347/267/232/344/270/212/347/225/253/351/235/242/351/227/234/350/201/257/345/234/226.json +162 -0
  78. package/test/figures.mjs +10 -0
  79. package/test/lib.mjs +116 -0
  80. package/test/p10.test.mjs +89 -0
  81. package/test/pics/cycle.png +0 -0
  82. package/test/pics/cycle.svg +1 -0
  83. package/test/pics/deep-nest.png +0 -0
  84. package/test/pics/deep-nest.svg +1 -0
  85. package/test/pics/diamond.png +0 -0
  86. package/test/pics/diamond.svg +1 -0
  87. package/test/pics/edges-mix.png +0 -0
  88. package/test/pics/edges-mix.svg +1 -0
  89. package/test/pics/english.png +0 -0
  90. package/test/pics/english.svg +1 -0
  91. package/test/pics/flat-tb.png +0 -0
  92. package/test/pics/flat-tb.svg +1 -0
  93. package/test/pics/fold-tall.png +0 -0
  94. package/test/pics/fold-tall.svg +1 -0
  95. package/test/pics/fold-wide.png +0 -0
  96. package/test/pics/fold-wide.svg +1 -0
  97. package/test/pics/group-edge.png +0 -0
  98. package/test/pics/group-edge.svg +1 -0
  99. package/test/pics/items-node.png +0 -0
  100. package/test/pics/items-node.svg +1 -0
  101. package/test/pics/long-label.png +0 -0
  102. package/test/pics/long-label.svg +1 -0
  103. package/test/pics/lr-flat.png +0 -0
  104. package/test/pics/lr-flat.svg +1 -0
  105. package/test/pics/nested-group.png +0 -0
  106. package/test/pics/nested-group.svg +1 -0
  107. package/test/pics/no-edges.png +0 -0
  108. package/test/pics/no-edges.svg +1 -0
  109. package/test/pics/title-overflow.png +0 -0
  110. package/test/pics/title-overflow.svg +1 -0
  111. package/test/pics/valign.png +0 -0
  112. package/test/pics/valign.svg +1 -0
  113. package/test/pics//344/275/234/346/245/255/346/265/201/347/250/213/345/234/226.png +0 -0
  114. package/test/pics//344/275/234/346/245/255/346/265/201/347/250/213/345/234/226.svg +1 -0
  115. package/test/pics//345/211/215/347/253/257/346/236/266/346/247/213/350/210/207/350/263/207/346/226/231/346/265/201/345/234/226.png +0 -0
  116. package/test/pics//345/211/215/347/253/257/346/236/266/346/247/213/350/210/207/350/263/207/346/226/231/346/265/201/345/234/226.svg +1 -0
  117. package/test/pics//345/276/214/347/253/257/346/234/215/345/213/231/347/265/204/346/210/220/345/234/226.png +0 -0
  118. package/test/pics//345/276/214/347/253/257/346/234/215/345/213/231/347/265/204/346/210/220/345/234/226.svg +1 -0
  119. package/test/pics//346/211/271/346/254/241/344/270/212/345/202/263/350/231/225/347/220/206/346/265/201/347/250/213/345/234/226.png +0 -0
  120. package/test/pics//346/211/271/346/254/241/344/270/212/345/202/263/350/231/225/347/220/206/346/265/201/347/250/213/345/234/226.svg +1 -0
  121. package/test/pics//347/250/213/345/274/217/345/205/203/344/273/266/347/265/204/346/210/220/345/234/226.png +0 -0
  122. package/test/pics//347/250/213/345/274/217/345/205/203/344/273/266/347/265/204/346/210/220/345/234/226.svg +1 -0
  123. package/test/pics//347/250/213/345/274/217/345/210/206/345/261/244/346/236/266/346/247/213/345/234/226.png +0 -0
  124. package/test/pics//347/250/213/345/274/217/345/210/206/345/261/244/346/236/266/346/247/213/345/234/226.svg +1 -0
  125. package/test/pics//347/263/273/347/265/261/346/236/266/346/247/213/345/234/226.png +0 -0
  126. package/test/pics//347/263/273/347/265/261/346/236/266/346/247/213/345/234/226.svg +1 -0
  127. package/test/pics//347/263/273/347/265/261/351/227/234/350/201/257/345/234/226.png +0 -0
  128. package/test/pics//347/263/273/347/265/261/351/227/234/350/201/257/345/234/226.svg +1 -0
  129. package/test/pics//347/267/232/344/270/212/347/225/253/351/235/242/351/227/234/350/201/257/345/234/226.png +0 -0
  130. package/test/pics//347/267/232/344/270/212/347/225/253/351/235/242/351/227/234/350/201/257/345/234/226.svg +1 -0
  131. package/test/wflowchart.test.mjs +41 -0
  132. package/toolg/addVersion.mjs +4 -0
  133. package/toolg/cleanFolder.mjs +4 -0
  134. package/toolg/gDistRollup.mjs +51 -0
  135. package/toolg/modifyReadme.mjs +4 -0
@@ -0,0 +1,251 @@
1
+ {
2
+ "dir": "TB",
3
+ "nodes": [
4
+ {
5
+ "id": "IN",
6
+ "title": "batchUploadCntrRun",
7
+ "items": [
8
+ "mode",
9
+ "fdName"
10
+ ],
11
+ "cls": "blue"
12
+ },
13
+ {
14
+ "id": "CTRL",
15
+ "title": "Controller",
16
+ "items": [
17
+ "串列佇列"
18
+ ],
19
+ "cls": "blue"
20
+ },
21
+ {
22
+ "id": "WK",
23
+ "title": "Worker Thread",
24
+ "items": [
25
+ "獨立執行"
26
+ ],
27
+ "cls": "blue"
28
+ },
29
+ {
30
+ "id": "CORE",
31
+ "label": "core 流程",
32
+ "cls": "orangeG"
33
+ },
34
+ {
35
+ "id": "DET",
36
+ "label": "格式偵測(kpFun 依欄位路由)",
37
+ "cls": "greenG2",
38
+ "group": "CORE"
39
+ },
40
+ {
41
+ "id": "c1",
42
+ "title": "readSys",
43
+ "items": [
44
+ "讀現有全表 kpOld"
45
+ ],
46
+ "cls": "green",
47
+ "group": "CORE"
48
+ },
49
+ {
50
+ "id": "c2",
51
+ "title": "readXlsx",
52
+ "items": [
53
+ "解析+keyTable 識別"
54
+ ],
55
+ "cls": "green",
56
+ "group": "CORE"
57
+ },
58
+ {
59
+ "id": "d1",
60
+ "label": "kpSetFiles",
61
+ "cls": "green",
62
+ "group": "DET"
63
+ },
64
+ {
65
+ "id": "d2",
66
+ "label": "kpSetParams",
67
+ "cls": "green",
68
+ "group": "DET"
69
+ },
70
+ {
71
+ "id": "d3",
72
+ "label": "kpCheckProjects",
73
+ "cls": "green",
74
+ "group": "DET"
75
+ },
76
+ {
77
+ "id": "d4",
78
+ "label": "kpCheckMds",
79
+ "cls": "green",
80
+ "group": "DET"
81
+ },
82
+ {
83
+ "id": "d5",
84
+ "label": "kpCheckTabs",
85
+ "cls": "green",
86
+ "group": "DET"
87
+ },
88
+ {
89
+ "id": "d6",
90
+ "label": "kpCheckHashs",
91
+ "cls": "green",
92
+ "group": "DET"
93
+ },
94
+ {
95
+ "id": "d7",
96
+ "label": "kpCheckRelation",
97
+ "cls": "green",
98
+ "group": "DET"
99
+ },
100
+ {
101
+ "id": "d8",
102
+ "label": "kpCheckValue",
103
+ "cls": "green",
104
+ "group": "DET"
105
+ },
106
+ {
107
+ "id": "c3",
108
+ "title": "generateReport",
109
+ "items": [
110
+ "HTML 檢測報告"
111
+ ],
112
+ "cls": "green",
113
+ "group": "CORE"
114
+ },
115
+ {
116
+ "id": "c4",
117
+ "title": "save",
118
+ "items": [
119
+ "以預產 id 直接 insert"
120
+ ],
121
+ "cls": "green",
122
+ "group": "CORE"
123
+ },
124
+ {
125
+ "id": "Q",
126
+ "label": "進度查詢 batchUploadCntrGet(id)",
127
+ "cls": "done"
128
+ },
129
+ {
130
+ "id": "ST",
131
+ "label": "狀態",
132
+ "cls": "diamond"
133
+ },
134
+ {
135
+ "id": "w",
136
+ "title": "等待中",
137
+ "items": [
138
+ "waiting"
139
+ ],
140
+ "cls": "done"
141
+ },
142
+ {
143
+ "id": "do",
144
+ "title": "執行中",
145
+ "items": [
146
+ "doing"
147
+ ],
148
+ "cls": "done"
149
+ },
150
+ {
151
+ "id": "su",
152
+ "title": "完成",
153
+ "items": [
154
+ "success"
155
+ ],
156
+ "cls": "done"
157
+ },
158
+ {
159
+ "id": "er",
160
+ "title": "錯誤",
161
+ "items": [
162
+ "error"
163
+ ],
164
+ "cls": "done"
165
+ }
166
+ ],
167
+ "edges": [
168
+ {
169
+ "from": "IN",
170
+ "to": "CTRL"
171
+ },
172
+ {
173
+ "from": "CTRL",
174
+ "to": "WK"
175
+ },
176
+ {
177
+ "from": "WK",
178
+ "to": "c1"
179
+ },
180
+ {
181
+ "from": "c1",
182
+ "to": "c2"
183
+ },
184
+ {
185
+ "from": "c2",
186
+ "to": "d1"
187
+ },
188
+ {
189
+ "from": "d1",
190
+ "to": "d2"
191
+ },
192
+ {
193
+ "from": "d2",
194
+ "to": "d3"
195
+ },
196
+ {
197
+ "from": "d3",
198
+ "to": "d4"
199
+ },
200
+ {
201
+ "from": "d4",
202
+ "to": "d5"
203
+ },
204
+ {
205
+ "from": "d5",
206
+ "to": "d6"
207
+ },
208
+ {
209
+ "from": "d6",
210
+ "to": "d7"
211
+ },
212
+ {
213
+ "from": "d7",
214
+ "to": "d8"
215
+ },
216
+ {
217
+ "from": "d8",
218
+ "to": "c3"
219
+ },
220
+ {
221
+ "from": "c3",
222
+ "to": "c4"
223
+ },
224
+ {
225
+ "from": "WK",
226
+ "to": "Q",
227
+ "label": "進度回報",
228
+ "kind": "dashed"
229
+ },
230
+ {
231
+ "from": "Q",
232
+ "to": "ST"
233
+ },
234
+ {
235
+ "from": "ST",
236
+ "to": "w"
237
+ },
238
+ {
239
+ "from": "ST",
240
+ "to": "do"
241
+ },
242
+ {
243
+ "from": "ST",
244
+ "to": "su"
245
+ },
246
+ {
247
+ "from": "ST",
248
+ "to": "er"
249
+ }
250
+ ]
251
+ }
@@ -0,0 +1,126 @@
1
+ {
2
+ "dir": "TB",
3
+ "nodes": [
4
+ {
5
+ "id": "G3",
6
+ "label": "前端頁面元件",
7
+ "cls": "purpleG"
8
+ },
9
+ {
10
+ "id": "G4",
11
+ "label": "前端共用",
12
+ "cls": "blueG"
13
+ },
14
+ {
15
+ "id": "G1",
16
+ "label": "後端服務程式",
17
+ "cls": "orangeG"
18
+ },
19
+ {
20
+ "id": "G2",
21
+ "label": "後端共用模組",
22
+ "cls": "greenG"
23
+ },
24
+ {
25
+ "id": "g3a",
26
+ "title": "15 個 LayoutContent*",
27
+ "items": [
28
+ "主要資訊",
29
+ "計畫資料管理",
30
+ "需求",
31
+ "知識…"
32
+ ],
33
+ "cls": "purple",
34
+ "group": "G3"
35
+ },
36
+ {
37
+ "id": "g4a",
38
+ "title": "plugins",
39
+ "items": [
40
+ "$fapi",
41
+ "$d1sm",
42
+ "$d3rl",
43
+ "$d4sp",
44
+ "$s",
45
+ "$prm",
46
+ "$ui",
47
+ "$ll"
48
+ ],
49
+ "cls": "blue",
50
+ "group": "G4"
51
+ },
52
+ {
53
+ "id": "g4b",
54
+ "title": "共用元件",
55
+ "items": [
56
+ "Common",
57
+ "Meta",
58
+ "Property"
59
+ ],
60
+ "cls": "blue",
61
+ "group": "G4"
62
+ },
63
+ {
64
+ "id": "g1a",
65
+ "label": "srv 主服務",
66
+ "cls": "orange",
67
+ "group": "G1"
68
+ },
69
+ {
70
+ "id": "g1b",
71
+ "label": "srvApi 對外",
72
+ "cls": "orange",
73
+ "group": "G1"
74
+ },
75
+ {
76
+ "id": "g1c",
77
+ "label": "srvBatch 批次",
78
+ "cls": "orange",
79
+ "group": "G1"
80
+ },
81
+ {
82
+ "id": "g1d",
83
+ "label": "srvProvide 推送",
84
+ "cls": "orange",
85
+ "group": "G1"
86
+ },
87
+ {
88
+ "id": "g2a",
89
+ "label": "mOrm",
90
+ "cls": "green",
91
+ "group": "G2"
92
+ },
93
+ {
94
+ "id": "g2b",
95
+ "label": "mUsers",
96
+ "cls": "green",
97
+ "group": "G2"
98
+ },
99
+ {
100
+ "id": "g2c",
101
+ "label": "batchUpload 系列",
102
+ "cls": "green",
103
+ "group": "G2"
104
+ },
105
+ {
106
+ "id": "g2d",
107
+ "label": "provide 系列",
108
+ "cls": "green",
109
+ "group": "G2"
110
+ }
111
+ ],
112
+ "edges": [
113
+ {
114
+ "from": "G3",
115
+ "to": "G4"
116
+ },
117
+ {
118
+ "from": "G4",
119
+ "to": "G1"
120
+ },
121
+ {
122
+ "from": "G1",
123
+ "to": "G2"
124
+ }
125
+ ]
126
+ }
@@ -0,0 +1,133 @@
1
+ {
2
+ "dir": "TB",
3
+ "nodes": [
4
+ {
5
+ "id": "FE",
6
+ "label": "前端層",
7
+ "cls": "blueG"
8
+ },
9
+ {
10
+ "id": "IF",
11
+ "label": "前後端介面層",
12
+ "cls": "greenG"
13
+ },
14
+ {
15
+ "id": "BE",
16
+ "label": "後端層",
17
+ "cls": "orangeG"
18
+ },
19
+ {
20
+ "id": "fe1",
21
+ "title": "前端應用",
22
+ "items": [
23
+ "App",
24
+ "AppMod"
25
+ ],
26
+ "cls": "blue",
27
+ "group": "FE"
28
+ },
29
+ {
30
+ "id": "FES",
31
+ "label": "前端共用",
32
+ "cls": "blueG2",
33
+ "group": "FE"
34
+ },
35
+ {
36
+ "id": "fes1",
37
+ "title": "通用組件",
38
+ "items": [
39
+ "共用組件庫"
40
+ ],
41
+ "cls": "blue",
42
+ "group": "FES"
43
+ },
44
+ {
45
+ "id": "fes2",
46
+ "title": "資料驅動框架",
47
+ "items": [
48
+ "plugins"
49
+ ],
50
+ "cls": "blue",
51
+ "group": "FES"
52
+ },
53
+ {
54
+ "id": "fes3",
55
+ "title": "狀態管理",
56
+ "items": [
57
+ "Vuex"
58
+ ],
59
+ "cls": "blue",
60
+ "group": "FES"
61
+ },
62
+ {
63
+ "id": "if1",
64
+ "title": "單一登入",
65
+ "items": [
66
+ "SSO"
67
+ ],
68
+ "cls": "green",
69
+ "group": "IF"
70
+ },
71
+ {
72
+ "id": "if2",
73
+ "label": "權限管控",
74
+ "cls": "green",
75
+ "group": "IF"
76
+ },
77
+ {
78
+ "id": "if3",
79
+ "label": "API 管理",
80
+ "cls": "green",
81
+ "group": "IF"
82
+ },
83
+ {
84
+ "id": "be1",
85
+ "title": "Hapi 應用服務",
86
+ "items": [
87
+ "srv",
88
+ "srvApi",
89
+ "srvBatch",
90
+ "srvProvide"
91
+ ],
92
+ "cls": "orange",
93
+ "group": "BE"
94
+ },
95
+ {
96
+ "id": "be2",
97
+ "title": "ORM 層",
98
+ "items": [
99
+ "物件關聯對映"
100
+ ],
101
+ "cls": "orange",
102
+ "group": "BE"
103
+ },
104
+ {
105
+ "id": "be3",
106
+ "title": "資料庫",
107
+ "items": [
108
+ "LMDB",
109
+ "可切換 SQL Server 等"
110
+ ],
111
+ "cls": "orange",
112
+ "group": "BE"
113
+ }
114
+ ],
115
+ "edges": [
116
+ {
117
+ "from": "FE",
118
+ "to": "IF"
119
+ },
120
+ {
121
+ "from": "IF",
122
+ "to": "BE"
123
+ },
124
+ {
125
+ "from": "be1",
126
+ "to": "be2"
127
+ },
128
+ {
129
+ "from": "be2",
130
+ "to": "be3"
131
+ }
132
+ ]
133
+ }
@@ -0,0 +1,102 @@
1
+ {
2
+ "dir": "TB",
3
+ "nodes": [
4
+ {
5
+ "id": "FE",
6
+ "label": "前端層",
7
+ "cls": "blueG"
8
+ },
9
+ {
10
+ "id": "IF",
11
+ "label": "前後端介面層",
12
+ "cls": "greenG"
13
+ },
14
+ {
15
+ "id": "BE",
16
+ "label": "後端層",
17
+ "cls": "orangeG"
18
+ },
19
+ {
20
+ "id": "fe1",
21
+ "label": "Vue 應用服務",
22
+ "cls": "blue",
23
+ "group": "FE"
24
+ },
25
+ {
26
+ "id": "fe2",
27
+ "title": "前端共用",
28
+ "items": [
29
+ "通用組件",
30
+ "資料驅動框架",
31
+ "狀態管理 Vuex"
32
+ ],
33
+ "cls": "blue",
34
+ "group": "FE"
35
+ },
36
+ {
37
+ "id": "if1",
38
+ "label": "單一登入 SSO",
39
+ "cls": "green",
40
+ "group": "IF"
41
+ },
42
+ {
43
+ "id": "if2",
44
+ "label": "權限管控",
45
+ "cls": "green",
46
+ "group": "IF"
47
+ },
48
+ {
49
+ "id": "if3",
50
+ "label": "API 管理",
51
+ "cls": "green",
52
+ "group": "IF"
53
+ },
54
+ {
55
+ "id": "be1",
56
+ "label": "Hapi 應用服務",
57
+ "cls": "orange",
58
+ "group": "BE"
59
+ },
60
+ {
61
+ "id": "be2",
62
+ "title": "中間服務",
63
+ "items": [
64
+ "佇列",
65
+ "消息通知",
66
+ "事件紀錄"
67
+ ],
68
+ "cls": "orange",
69
+ "group": "BE"
70
+ },
71
+ {
72
+ "id": "be3",
73
+ "title": "基礎服務",
74
+ "items": [
75
+ "檔案儲存 File Server",
76
+ "圖資/靜態資源"
77
+ ],
78
+ "cls": "orange",
79
+ "group": "BE"
80
+ },
81
+ {
82
+ "id": "be4",
83
+ "title": "資料庫",
84
+ "items": [
85
+ "LMDB",
86
+ "可切換 SQL Server 等"
87
+ ],
88
+ "cls": "orange",
89
+ "group": "BE"
90
+ }
91
+ ],
92
+ "edges": [
93
+ {
94
+ "from": "FE",
95
+ "to": "IF"
96
+ },
97
+ {
98
+ "from": "IF",
99
+ "to": "BE"
100
+ }
101
+ ]
102
+ }