@microi.net/cli 4.9.0 → 4.9.1

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.
@@ -1,13 +1,13 @@
1
1
  {
2
- "builtAt": "2026-08-10T16:08:59.027Z",
2
+ "builtAt": "2026-08-11T01:07:42.259Z",
3
3
  "source": "../microi.skills",
4
4
  "extension": {
5
5
  "name": "v8-engine",
6
- "version": "4.9.0",
6
+ "version": "4.9.1",
7
7
  "publisher": "Microi"
8
8
  },
9
9
  "skills": {
10
- "version": "4.9.0",
10
+ "version": "4.9.1",
11
11
  "versionRule": "Microi version uses three numeric parts. Each publish increments the last part; when a part exceeds 9 it carries to the previous part: 1.0.9 -> 1.1.0, 1.9.9 -> 2.0.0.",
12
12
  "managedBy": "Microi.VSCode/bump-version.js"
13
13
  },
@@ -15,10 +15,10 @@
15
15
  "dir": "dist/microi.skills",
16
16
  "files": 108,
17
17
  "skills": 60,
18
- "bytes": 1698860
18
+ "bytes": 1708480
19
19
  },
20
20
  "fileHashes": {
21
- ".microi-skills-version.json": "12a369d587a33db27db9f348c1cc9495ad8c4a53cbcb7a7abc353ca25c62bf06",
21
+ ".microi-skills-version.json": "00d7b33d0165e4a7ef4c72afebc462ec5c7b8271a415d80026adb21383f1b781",
22
22
  "README.md": "020086cc87e3f1c02cdaac86fe1a0ae58f16f0b1bb854d7a52f3e8f966f58bd7",
23
23
  "ai-engine/SKILL.md": "be814942df611fa72fbd86ad67ac2cd0aa519cd348bcc085dd03e8ac81b7ec4b",
24
24
  "ai-engine/agents/openai.yaml": "40deb07801006a46b9a7f0020d13251955eeadd04c8e591160210479936f8b5b",
@@ -39,7 +39,7 @@
39
39
  "microi-ai-application/SKILL.md": "ae4f7768b4f70038ee67fd5844b6e4f9ca3243516cd0aaf795f40ffe3add9505",
40
40
  "microi-ai-application/agents/openai.yaml": "d3dfc4d0f2fda3391e90e661ca9d8d051cb43824b011d1a88e99db135870454f",
41
41
  "microi-ai-application/references/frontend-baseline.md": "c21a2d38292fd8d445a7538afb45d609881f624f32d39c0fc4bbbb3c2fa64a74",
42
- "microi-client-frontend/SKILL.md": "8e9f3392bb94c74d43b252cc9238b6ea38742a3ee8403d241643e738edcac899",
42
+ "microi-client-frontend/SKILL.md": "35e17e23abeab6784c0e04d3d41a1617e055edaf4db0113120c43fd53ca13faa",
43
43
  "microi-codex-installer/SKILL.md": "ae7ab91948227a165094e5f88380e264c19c51d42f22ec2a92bd13507f8fce36",
44
44
  "microi-codex-installer/agents/openai.yaml": "e531219b74a70204893a156b1c22c69013a4c9d24b132ead912746b1b312cf80",
45
45
  "microi-datasource-mapping/SKILL.md": "1626bdf242038838028aa1235c5a6262e22680984583c47a8fc4e5fffb24b7df",
@@ -55,24 +55,24 @@
55
55
  "microi-docs-coverage/SKILL.md": "36cefec16edc68f52682a93a1179b6c7d20f55ea8d217a7708136440be768ac2",
56
56
  "microi-docs-coverage/references/capability-map.md": "2cfc6a10ca017519b1b6ba9d4a33c2055f6793162a36b511ba319945f08972e1",
57
57
  "microi-docs-coverage/scripts/audit-doc-skill-coverage.mjs": "ebd57f17f2ebae499bfa59ad17830db458590feb76f7f0f20219ff0987b33af3",
58
- "microi-form-engine/SKILL.md": "e2bff491312643b16383c91280d81e3985cf81a70c10c5c366623601df7325ed",
58
+ "microi-form-engine/SKILL.md": "6daa341083974bdb09f85a3615e3a9ccb985f66878e6d4737cc6f9635ff9cc7f",
59
59
  "microi-form-engine/references/component-catalog.md": "68963c2d5211a4610c09fab1fa127a349339abbb7427509b183d4be72e977c7b",
60
60
  "microi-form-engine/references/data-source-events.md": "59a95a36624476b12cdc84e4c23975d074b1f115df19992fd0fd075bb982e7cb",
61
61
  "microi-form-layout/SKILL.md": "48814c2c138e2c0fb6a11d39cf458df6a1cc28a3156c7540db1fa482a2ce6aec",
62
62
  "microi-frontend-sdk/SKILL.md": "06f5d51605c6cceef35b986062dcfae76a8fe4efce28a93f267ec1fd2dc28372",
63
63
  "microi-left-right-layout/SKILL.md": "d8c482224846477b6c3068bdf94930cca6d699570f59b09f946601b0a65715f6",
64
- "microi-microservice/SKILL.md": "5f73a351d7ed17395c631524defab72155c7fe2db576785a2926d639453b659a",
65
- "microi-microservice/references/runtime-delivery.md": "f6f90258a8be86e5d10837c68de70cbad4d2efb4333966891105da7ddc0c5ca5",
64
+ "microi-microservice/SKILL.md": "475f9bb41c2ad7c1fd90cadc7cd9e7ffe3e5d2c6cd2ea99f242fd0705da49388",
65
+ "microi-microservice/references/runtime-delivery.md": "d21e759aee023dd3a1e9a3dd3bba26a38a5be6c2342d5aecf27901cd97a8ab6d",
66
66
  "microi-mobile-app-quality/SKILL.md": "3d7c4e89a5abe98658ebce0a31f3db05ff5e38b3f1ac5957aa44ebef9ae282ee",
67
67
  "microi-solution-quotation/SKILL.md": "1bd47bd019a62bdc904612a7d8e2501c76df66eed9ef247544dd7fe38eba02e4",
68
68
  "microi-solution-quotation/agents/openai.yaml": "9e3f994cc842c927ca25e23216f6ce5e8f8313fc39b1c7142d9b652ca73e7dd1",
69
69
  "microi-solution-quotation/scripts/build_solution_quote.py": "2a8a90ed95308b900da3db433402d857f838b594df624f5a83b62307471a31e7",
70
- "microi-system-delivery/SKILL.md": "1b54fa69f9469a177076cefac46e17a4e867a81d77d8b7379185fa1ce70cb3f2",
70
+ "microi-system-delivery/SKILL.md": "e82f269d81b8a0775baa66dd894a37787e9735b341b8db84ab07c035b69da1de",
71
71
  "microi-ui/SKILL.md": "606a9cfc2e9cbcb41e9e26ef9c09bb2ca31c4edc24af00058aa059b54a01f2fe",
72
72
  "microi-uniapp-frontend/SKILL.md": "546dff148306ab94beb57e12f303770eeb6959475d3005954e0314c11271fac2",
73
73
  "microi.v8.js": "25ff9e9aca3ff5167a1f3f06e262e3389a6d732cb12b9a3ddb4f218fb331ef53",
74
- "module-engine/SKILL.md": "1dff1029df854cddc39d721cd2b91723d4c919662f493de7efbf9d0361f5424c",
75
- "module-engine/references/module-config.md": "3d88cf18f97d08279bc73f2f9a16d23cdce657b171e58dcc2ab277d617bb53fc",
74
+ "module-engine/SKILL.md": "6c74925a8d7597266b0e7c01e78972a4afa9ef5a294c7f2cb4bff78dd91ef513",
75
+ "module-engine/references/module-config.md": "900f3baf7ae8d1311b1e1b8553aeae2ece4d8260fea29a1bd4237f3f9f35fe7d",
76
76
  "ocr-engine/SKILL.md": "16f7ee8d3485f47d2cb524f0c3fdea609f7de5581ba46da9f34d32772422c050",
77
77
  "ocr-engine/agents/openai.yaml": "3a6cc9984a246c41332c5f53d1badef31b78f81324333ea0d6337cb20c7fc898",
78
78
  "page-engine/SKILL.md": "8e8dfd456c8925db9ed6a483e2f4e3a8c7317194ec81b75195385ad267e7961b",
@@ -112,7 +112,7 @@
112
112
  "v8-image-processing/SKILL.md": "69fc700953ceec455604666e15a46a5d665cfc1e7c5134d0d47f2b0f938197cb",
113
113
  "v8-image-processing/agents/openai.yaml": "009d8b643bea6203a8056c7323b68fbe6a92c594809415cf657868074e52a576",
114
114
  "v8-image-processing/references/api-reference.md": "f8f293f64749d9681a1d4d5c25d5ef85ae1cfb7523487c43d08a03e9ebe36fb6",
115
- "v8-menu-buttons/SKILL.md": "fc933bf7685db029517f05df5e75560118ceb90a4a9d52922f046d34334a3082",
115
+ "v8-menu-buttons/SKILL.md": "ee1485e85b967c5b51e43d90d37aa17097d20b2d40cda49fe24f4de12a8e5ebd",
116
116
  "v8-mongodb/SKILL.md": "7da703b5dc9fb9613cca1929fd854e3d333ad7d86200b839bb78ccdc8e0cc6cf",
117
117
  "v8-mq-mqtt/SKILL.md": "3894fc353a3e9896b16b54b9e12758f0aea950968f80b7f3ec86c6652040341c",
118
118
  "v8-saas-multi-tenant/SKILL.md": "92663c00834d0070e145a84da15519d1d5c6aa77d733df09b51bdd221a262bdf",
@@ -128,114 +128,114 @@
128
128
  "workspace-conventions/SKILL.md": "a8bb98c6abc109394208af83052b5cf646ce4c91c969a8358a1265c5e61b314b"
129
129
  },
130
130
  "fileVersions": {
131
- ".microi-skills-version.json": "4.9.0",
132
- "README.md": "4.9.0",
133
- "ai-engine/SKILL.md": "4.9.0",
134
- "ai-engine/agents/openai.yaml": "4.9.0",
135
- "ai-platform-governance/SKILL.md": "4.9.0",
136
- "app-store/SKILL.md": "4.9.0",
137
- "app-store/agents/openai.yaml": "4.9.0",
138
- "business-blueprint/SKILL.md": "4.9.0",
139
- "datasource-engine/SKILL.md": "4.9.0",
140
- "datasource-engine/agents/openai.yaml": "4.9.0",
141
- "dos-orm/SKILL.md": "4.9.0",
142
- "dos-orm/references/api-reference.md": "4.9.0",
143
- "job-engine/SKILL.md": "4.9.0",
144
- "job-engine/agents/openai.yaml": "4.9.0",
145
- "message-notification/SKILL.md": "4.9.0",
146
- "message-notification/agents/openai.yaml": "4.9.0",
147
- "message-notification/references/contracts.md": "4.9.0",
148
- "microi-ai-app-auth.js": "4.9.0",
149
- "microi-ai-application/SKILL.md": "4.9.0",
150
- "microi-ai-application/agents/openai.yaml": "4.9.0",
151
- "microi-ai-application/references/frontend-baseline.md": "4.9.0",
152
- "microi-client-frontend/SKILL.md": "4.9.0",
153
- "microi-codex-installer/SKILL.md": "4.9.0",
154
- "microi-codex-installer/agents/openai.yaml": "4.9.0",
155
- "microi-datasource-mapping/SKILL.md": "4.9.0",
156
- "microi-db-schema/SKILL.md": "4.9.0",
157
- "microi-db-schema/agents/openai.yaml": "4.9.0",
158
- "microi-db-schema/references/core-tables.md": "4.9.0",
159
- "microi-db-schema/references/form-component-options.md": "4.9.0",
160
- "microi-db-schema/references/schema-overview.md": "4.9.0",
161
- "microi-db-schema/references/schema.md": "4.9.0",
162
- "microi-db-schema/references/table-catalog.md": "4.9.0",
163
- "microi-deployment/SKILL.md": "4.9.0",
164
- "microi-deployment/references/deployment-matrix.md": "4.9.0",
165
- "microi-docs-coverage/SKILL.md": "4.9.0",
166
- "microi-docs-coverage/references/capability-map.md": "4.9.0",
167
- "microi-docs-coverage/scripts/audit-doc-skill-coverage.mjs": "4.9.0",
168
- "microi-form-engine/SKILL.md": "4.9.0",
169
- "microi-form-engine/references/component-catalog.md": "4.9.0",
170
- "microi-form-engine/references/data-source-events.md": "4.9.0",
171
- "microi-form-layout/SKILL.md": "4.9.0",
172
- "microi-frontend-sdk/SKILL.md": "4.9.0",
173
- "microi-left-right-layout/SKILL.md": "4.9.0",
174
- "microi-microservice/SKILL.md": "4.9.0",
175
- "microi-microservice/references/runtime-delivery.md": "4.9.0",
176
- "microi-mobile-app-quality/SKILL.md": "4.9.0",
177
- "microi-solution-quotation/SKILL.md": "4.9.0",
178
- "microi-solution-quotation/agents/openai.yaml": "4.9.0",
179
- "microi-solution-quotation/scripts/build_solution_quote.py": "4.9.0",
180
- "microi-system-delivery/SKILL.md": "4.9.0",
181
- "microi-ui/SKILL.md": "4.9.0",
182
- "microi-uniapp-frontend/SKILL.md": "4.9.0",
183
- "microi.v8.js": "4.9.0",
184
- "module-engine/SKILL.md": "4.9.0",
185
- "module-engine/references/module-config.md": "4.9.0",
186
- "ocr-engine/SKILL.md": "4.9.0",
187
- "ocr-engine/agents/openai.yaml": "4.9.0",
188
- "page-engine/SKILL.md": "4.9.0",
189
- "performance-testing/SKILL.md": "4.9.0",
190
- "playwright-e2e/SKILL.md": "4.9.0",
191
- "print-engine/SKILL.md": "4.9.0",
192
- "production-readonly-audit/SKILL.md": "4.9.0",
193
- "report-engine/SKILL.md": "4.9.0",
194
- "report-engine/agents/openai.yaml": "4.9.0",
195
- "search-engine/SKILL.md": "4.9.0",
196
- "search-engine/agents/openai.yaml": "4.9.0",
197
- "spider-engine/SKILL.md": "4.9.0",
198
- "translate-engine/SKILL.md": "4.9.0",
199
- "translate-engine/agents/openai.yaml": "4.9.0",
200
- "ui-design/SKILL.md": "4.9.0",
201
- "ui-design/assets/pattern-showcase/app.js": "4.9.0",
202
- "ui-design/assets/pattern-showcase/index.html": "4.9.0",
203
- "ui-design/assets/pattern-showcase/styles.css": "4.9.0",
204
- "ui-design/assets/templates/MCI-DESIGN.md": "4.9.0",
205
- "ui-design/references/design-pattern-library.md": "4.9.0",
206
- "ui-design/references/mci-design-contract.md": "4.9.0",
207
- "ui-design/references/motion-and-media.md": "4.9.0",
208
- "ui-design/references/product-flow-recipes.md": "4.9.0",
209
- "uniapp-mall-assets/SKILL.md": "4.9.0",
210
- "v8-api-config/SKILL.md": "4.9.0",
211
- "v8-cache-pattern/SKILL.md": "4.9.0",
212
- "v8-crud-api/SKILL.md": "4.9.0",
213
- "v8-debugging/SKILL.md": "4.9.0",
214
- "v8-explorer-tree/SKILL.md": "4.9.0",
215
- "v8-export-import/SKILL.md": "4.9.0",
216
- "v8-file-upload/SKILL.md": "4.9.0",
217
- "v8-formengine-http/SKILL.md": "4.9.0",
218
- "v8-frontend-events/SKILL.md": "4.9.0",
219
- "v8-frontend-events/references/bluetooth-print-api.md": "4.9.0",
220
- "v8-frontend-events/references/bluetooth-print.md": "4.9.0",
221
- "v8-http-integration/SKILL.md": "4.9.0",
222
- "v8-image-processing/SKILL.md": "4.9.0",
223
- "v8-image-processing/agents/openai.yaml": "4.9.0",
224
- "v8-image-processing/references/api-reference.md": "4.9.0",
225
- "v8-menu-buttons/SKILL.md": "4.9.0",
226
- "v8-mongodb/SKILL.md": "4.9.0",
227
- "v8-mq-mqtt/SKILL.md": "4.9.0",
228
- "v8-saas-multi-tenant/SKILL.md": "4.9.0",
229
- "v8-security/SKILL.md": "4.9.0",
230
- "v8-sql-query/SKILL.md": "4.9.0",
231
- "v8-table-event/SKILL.md": "4.9.0",
232
- "v8-template-engine/SKILL.md": "4.9.0",
233
- "v8-utilities/SKILL.md": "4.9.0",
234
- "v8-utilities/references/client-api-index.md": "4.9.0",
235
- "v8-utilities/references/platform-http-routes.md": "4.9.0",
236
- "v8-utilities/references/server-api-index.md": "4.9.0",
237
- "v8-workflow/SKILL.md": "4.9.0",
238
- "workspace-conventions/SKILL.md": "4.9.0"
131
+ ".microi-skills-version.json": "4.9.1",
132
+ "README.md": "4.9.1",
133
+ "ai-engine/SKILL.md": "4.9.1",
134
+ "ai-engine/agents/openai.yaml": "4.9.1",
135
+ "ai-platform-governance/SKILL.md": "4.9.1",
136
+ "app-store/SKILL.md": "4.9.1",
137
+ "app-store/agents/openai.yaml": "4.9.1",
138
+ "business-blueprint/SKILL.md": "4.9.1",
139
+ "datasource-engine/SKILL.md": "4.9.1",
140
+ "datasource-engine/agents/openai.yaml": "4.9.1",
141
+ "dos-orm/SKILL.md": "4.9.1",
142
+ "dos-orm/references/api-reference.md": "4.9.1",
143
+ "job-engine/SKILL.md": "4.9.1",
144
+ "job-engine/agents/openai.yaml": "4.9.1",
145
+ "message-notification/SKILL.md": "4.9.1",
146
+ "message-notification/agents/openai.yaml": "4.9.1",
147
+ "message-notification/references/contracts.md": "4.9.1",
148
+ "microi-ai-app-auth.js": "4.9.1",
149
+ "microi-ai-application/SKILL.md": "4.9.1",
150
+ "microi-ai-application/agents/openai.yaml": "4.9.1",
151
+ "microi-ai-application/references/frontend-baseline.md": "4.9.1",
152
+ "microi-client-frontend/SKILL.md": "4.9.1",
153
+ "microi-codex-installer/SKILL.md": "4.9.1",
154
+ "microi-codex-installer/agents/openai.yaml": "4.9.1",
155
+ "microi-datasource-mapping/SKILL.md": "4.9.1",
156
+ "microi-db-schema/SKILL.md": "4.9.1",
157
+ "microi-db-schema/agents/openai.yaml": "4.9.1",
158
+ "microi-db-schema/references/core-tables.md": "4.9.1",
159
+ "microi-db-schema/references/form-component-options.md": "4.9.1",
160
+ "microi-db-schema/references/schema-overview.md": "4.9.1",
161
+ "microi-db-schema/references/schema.md": "4.9.1",
162
+ "microi-db-schema/references/table-catalog.md": "4.9.1",
163
+ "microi-deployment/SKILL.md": "4.9.1",
164
+ "microi-deployment/references/deployment-matrix.md": "4.9.1",
165
+ "microi-docs-coverage/SKILL.md": "4.9.1",
166
+ "microi-docs-coverage/references/capability-map.md": "4.9.1",
167
+ "microi-docs-coverage/scripts/audit-doc-skill-coverage.mjs": "4.9.1",
168
+ "microi-form-engine/SKILL.md": "4.9.1",
169
+ "microi-form-engine/references/component-catalog.md": "4.9.1",
170
+ "microi-form-engine/references/data-source-events.md": "4.9.1",
171
+ "microi-form-layout/SKILL.md": "4.9.1",
172
+ "microi-frontend-sdk/SKILL.md": "4.9.1",
173
+ "microi-left-right-layout/SKILL.md": "4.9.1",
174
+ "microi-microservice/SKILL.md": "4.9.1",
175
+ "microi-microservice/references/runtime-delivery.md": "4.9.1",
176
+ "microi-mobile-app-quality/SKILL.md": "4.9.1",
177
+ "microi-solution-quotation/SKILL.md": "4.9.1",
178
+ "microi-solution-quotation/agents/openai.yaml": "4.9.1",
179
+ "microi-solution-quotation/scripts/build_solution_quote.py": "4.9.1",
180
+ "microi-system-delivery/SKILL.md": "4.9.1",
181
+ "microi-ui/SKILL.md": "4.9.1",
182
+ "microi-uniapp-frontend/SKILL.md": "4.9.1",
183
+ "microi.v8.js": "4.9.1",
184
+ "module-engine/SKILL.md": "4.9.1",
185
+ "module-engine/references/module-config.md": "4.9.1",
186
+ "ocr-engine/SKILL.md": "4.9.1",
187
+ "ocr-engine/agents/openai.yaml": "4.9.1",
188
+ "page-engine/SKILL.md": "4.9.1",
189
+ "performance-testing/SKILL.md": "4.9.1",
190
+ "playwright-e2e/SKILL.md": "4.9.1",
191
+ "print-engine/SKILL.md": "4.9.1",
192
+ "production-readonly-audit/SKILL.md": "4.9.1",
193
+ "report-engine/SKILL.md": "4.9.1",
194
+ "report-engine/agents/openai.yaml": "4.9.1",
195
+ "search-engine/SKILL.md": "4.9.1",
196
+ "search-engine/agents/openai.yaml": "4.9.1",
197
+ "spider-engine/SKILL.md": "4.9.1",
198
+ "translate-engine/SKILL.md": "4.9.1",
199
+ "translate-engine/agents/openai.yaml": "4.9.1",
200
+ "ui-design/SKILL.md": "4.9.1",
201
+ "ui-design/assets/pattern-showcase/app.js": "4.9.1",
202
+ "ui-design/assets/pattern-showcase/index.html": "4.9.1",
203
+ "ui-design/assets/pattern-showcase/styles.css": "4.9.1",
204
+ "ui-design/assets/templates/MCI-DESIGN.md": "4.9.1",
205
+ "ui-design/references/design-pattern-library.md": "4.9.1",
206
+ "ui-design/references/mci-design-contract.md": "4.9.1",
207
+ "ui-design/references/motion-and-media.md": "4.9.1",
208
+ "ui-design/references/product-flow-recipes.md": "4.9.1",
209
+ "uniapp-mall-assets/SKILL.md": "4.9.1",
210
+ "v8-api-config/SKILL.md": "4.9.1",
211
+ "v8-cache-pattern/SKILL.md": "4.9.1",
212
+ "v8-crud-api/SKILL.md": "4.9.1",
213
+ "v8-debugging/SKILL.md": "4.9.1",
214
+ "v8-explorer-tree/SKILL.md": "4.9.1",
215
+ "v8-export-import/SKILL.md": "4.9.1",
216
+ "v8-file-upload/SKILL.md": "4.9.1",
217
+ "v8-formengine-http/SKILL.md": "4.9.1",
218
+ "v8-frontend-events/SKILL.md": "4.9.1",
219
+ "v8-frontend-events/references/bluetooth-print-api.md": "4.9.1",
220
+ "v8-frontend-events/references/bluetooth-print.md": "4.9.1",
221
+ "v8-http-integration/SKILL.md": "4.9.1",
222
+ "v8-image-processing/SKILL.md": "4.9.1",
223
+ "v8-image-processing/agents/openai.yaml": "4.9.1",
224
+ "v8-image-processing/references/api-reference.md": "4.9.1",
225
+ "v8-menu-buttons/SKILL.md": "4.9.1",
226
+ "v8-mongodb/SKILL.md": "4.9.1",
227
+ "v8-mq-mqtt/SKILL.md": "4.9.1",
228
+ "v8-saas-multi-tenant/SKILL.md": "4.9.1",
229
+ "v8-security/SKILL.md": "4.9.1",
230
+ "v8-sql-query/SKILL.md": "4.9.1",
231
+ "v8-table-event/SKILL.md": "4.9.1",
232
+ "v8-template-engine/SKILL.md": "4.9.1",
233
+ "v8-utilities/SKILL.md": "4.9.1",
234
+ "v8-utilities/references/client-api-index.md": "4.9.1",
235
+ "v8-utilities/references/platform-http-routes.md": "4.9.1",
236
+ "v8-utilities/references/server-api-index.md": "4.9.1",
237
+ "v8-workflow/SKILL.md": "4.9.1",
238
+ "workspace-conventions/SKILL.md": "4.9.1"
239
239
  },
240
240
  "files": [
241
241
  ".microi-skills-version.json",
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "4.9.0",
2
+ "version": "4.9.1",
3
3
  "versionRule": "Microi version uses three numeric parts. Each publish increments the last part; when a part exceeds 9 it carries to the previous part: 1.0.9 -> 1.1.0, 1.9.9 -> 2.0.0.",
4
4
  "managedBy": "Microi.VSCode/bump-version.js",
5
- "updatedAt": "2026-08-10T16:08:41.170Z"
5
+ "updatedAt": "2026-08-11T01:07:26.871Z"
6
6
  }
@@ -43,6 +43,8 @@ description: Microi.Client 源码架构指南。用于修改 Microi.Client Vue
43
43
 
44
44
  - Detail/Edit/List/Card 视图属于 `sys_menu`,使用物理字段 `EnableViewSchema`、`ViewSchemaVersion`、`ViewConfigVersion`、`ViewSchema`。其中 `EnableViewSchema` 只控制 Detail/Edit 自定义表单视图,List/Card 有有效配置时始终生效;两个版本字段可空,默认按 `1.0/1` 处理。
45
45
  - 顶层 PC `diy-table` 即使没有 List ViewSchema,也默认显示约 40 至 52px 的紧凑模块标题。`selectModuleView()` 只能对 List/Card 绕过 `EnableViewSchema`;Detail/Edit 必须继续显式启用,不能被列表 fallback 误接管。
46
+ - 存量模块没有 Hero 配置时,PC/移动端从真实 `StatisticsFields`、`DataCount/PageCount`、当前页数值求和或当前页真实状态分布生成兜底指标;当前页口径必须写进标签,严禁随机值或伪造全表汇总。
47
+ - `Layout.List.Columns[].MinWidth` 优先于普通 `diy_field.TableWidth` 和末列自适应;缺少持久宽度时按标题/地址、日期/编码、数值、状态等字段语义稳定推断。
46
48
  - `diy_table.DiyConfig`、`diy_field.DiyConfig`、`sys_menu.DiyConfig` 均为废弃兼容字段;禁止向其中写入任何新功能配置。
47
49
  - Text、Select、ImgUpload、Map 等数据控件继续放在 `diy-field-component`。
48
50
  - EntityHero、MetricStrip、ActionGrid、ResponsiveSection 是独立展示区块,放在 `form-view-blocks`,禁止用虚拟字段或 DevComponent 模拟。
@@ -372,7 +374,7 @@ DiyCommon.FormEngine.AddFormData("table_name", { Field: "value" }, function (res
372
374
  - 官方文档:`microi.doc/docs/doc/v8-engine/v8-client.md`。
373
375
  - Skills:`v8-frontend-events`、`v8-table-event`、`v8-menu-buttons`、`v8-template-engine`、`v8-formengine-http` 和本 Skill。
374
376
 
375
- `sys_menu.ViewSchema` 使用 `DiyModulePresentationDesigner` 作为配置入口,聚合 `EnableViewSchema / ViewSchemaVersion / ViewConfigVersion / ViewSchema`。设计器可视化编辑默认 List-PC 与 Card-Mobile 视图,以独立的自定义表单视图 JSON 编辑 Detail/Edit,并由高级 JSON 保留完整协议、角色视图和未知字段;运行时的 EntityHero/MetricStrip 等仍是独立展示区块,不由 DevComponent 参与渲染。
377
+ `sys_menu.ViewSchema` 使用 `DiyModulePresentationDesigner` 作为配置入口,聚合 `EnableViewSchema / ViewSchemaVersion / ViewConfigVersion / ViewSchema`。设计器固定提供“模块标题与统计 / PC 复合列 / 移动端卡片 / 自定义表单 / 高级 JSON”五个 Tab;可视化编辑默认 List-PC 与 Card-Mobile 视图,以独立的“自定义表单”JSON 编辑 Detail/Edit,并由高级 JSON 保留完整协议、角色视图和未知字段;运行时的 EntityHero/MetricStrip 等仍是独立展示区块,不由 DevComponent 参与渲染。
376
378
 
377
379
  固定高度的 `diy-form-full` 弹窗只能有一个纵向滚动容器:由弹窗直属 `.el-dialog__body` 承载滚动,Element Plus 的 overlay 和表单顶层 `.el-tabs__content` 必须禁用独立滚动。禁止同时保留 overlay、dialog body、tabs content 三层纵向滚动条;切换表单 Tab 时弹窗外框高度不得变化。
378
380
 
@@ -164,10 +164,13 @@ MCP 建模只使用:
164
164
  优先使用现有 44 类标准控件。只有标准控件无法表达交互、且该交互会长期复用时,
165
165
  才使用 `DevComponent`:
166
166
 
167
- - Vue 组件路径必须稳定并纳入 `Microi.Client` 源码/构建。
167
+ - 多租户共用且与主框架强耦合的 Vue 组件,路径必须稳定并纳入 `Microi.Client` 源码/构建。
168
168
  - 支持 Add/Edit/View、只读、必填、清空、校验、移动端和暗色主题。
169
169
  - 不在组件内绕过 FormEngine 权限直接访问任意表。
170
- - 复杂但租户独有的页面优先使用 MicroService + `V8.OpenAppDialog`,避免把客户逻辑打进主前端。
170
+ - 复杂但租户独有、需要固定嵌入表单的区域,优先使用 `DevComponent` + MicroService 路由;临时打开的复杂页面使用 `V8.OpenAppDialog`,都避免把客户逻辑打进主前端。
171
+ - MicroService 表单嵌入使用 `microi.routes.json` 页面级 `LegacyComponentPaths` 作为稳定别名,字段 `Config.DevComponentPath` 与其匹配。主前端存在同路径 Vue 文件时本地优先;不存在时平台自动加载对应 `sys_microiservice_page.RoutePath`。新别名不得与 `/src/views` 真实文件冲突。
172
+ - 组件宿主下发 `componentMode=true`、可序列化 `componentData` 与 `permissionContext`;子应用用 `dev-component:resize` 同步高度,用 `dev-component:event` 回传 `update:modelValue`、`CallbackFormValueChange`、`FormSet` 或 `ParentFormSet`。不传 Vue 实例、函数、循环引用或 `ParentV8`,不直接操作父页面 DOM。
173
+ - 表单嵌入验收必须覆盖 Add/Edit/View/只读、初始值与回写、自动高度、窄屏、暗色主题,以及当前菜单 `ModuleEngineKey` 下的有权/无权账号。
171
174
  - `DevComponent` 配置了非空字段标题时必须正常渲染 Label;只有标题本身为空时才允许隐藏,
172
175
  不能按组件类型全局吞掉业务标题。`el-form--label-top` 下的字段级 `Button` 仍保留与其它
173
176
  控件等高的不可见 Label 占位,使按钮对齐控件区而不是对齐标题行。
@@ -19,6 +19,7 @@ description: Microi 前端微服务 MicroService 开发与交付指南。用于
19
19
  | 标准单表新增/编辑/查看 | FormEngine / `V8.OpenAnyForm` |
20
20
  | 主前端已注册组件 | `V8.OpenDialog` |
21
21
  | 3 个以上字段、联动、上传、表格、Tab、步骤条、代码编辑 | MicroService + `V8.OpenAppDialog` |
22
+ | 复杂区域需要固定嵌入表单、独立发布且不进入主前端 | `DevComponent` + MicroService 路由 |
22
23
  | 独立菜单、多页面、AI 在线编辑、本地 Vite、独立发布 | MicroService |
23
24
 
24
25
  ## 默认发现顺序
@@ -101,22 +102,24 @@ AppKey 稳定且只含安全字符。`microi.routes.json` 是页面事实源,
101
102
  - 服务器暂未部署修复且产物很小时,可把 `StorageMode=db` 与内联 `ContentBase64` 作为短期恢复手段;必须明确记录为临时方案。修复部署后重新流式发布到公有 HDFS,并恢复 `StorageMode=file`,禁止长期把大 JS/CSS 放在数据库 JSON。
102
103
  - 子租户发布时,源码、版本资产、回读验签、页面与缓存全部绑定当前 Token 的 `OsClient`;禁止回退到主租户或宿主服务器默认租户。切换前必须由当前 API 节点通过该子租户 HDFS 配置读回每个版本文件并校验大小/SHA-256。
103
104
 
104
- ## 菜单与弹窗
105
+ ## 菜单、弹窗与表单嵌入
105
106
 
106
107
  菜单 `OpenType=MicroService` 时一次绑定 `MicroServiceId`、
107
108
  `MicroServicePageId`、`MicroServiceRoutePath`、`MicroServiceKey`。
108
109
  完整系统 Manifest 不得固化不同租户会变化的两个 Id;模块声明 `openType=MicroService`、`microServiceKey` 和 `microServiceRoutePath` 即可,由 `microi_generate_system` 在任何写入前回读 `sys_microiservice/sys_microiservice_page`,解析并校验当前租户的 `MicroServiceId/MicroServicePageId`。微服务或页面不存在时必须在首个写操作前失败,不能留下半套系统。
109
110
  复杂弹窗用 `V8.OpenAppDialog`,业务参数放 `Data`,回调放顶层。
110
111
 
111
- ### 独立、菜单与弹层三种入口
112
+ ### 独立、菜单、弹层与表单嵌入四种入口
112
113
 
113
- - 同一发布物必须支持:直接打开独立运行、`sys_menu` 使用 `/micro-app/{AppKey}/{RoutePath}` 打开指定路由、`V8.OpenAppDialog` 按 AppKey/RoutePath 以 Dialog 或 Drawer 打开。
114
- - 菜单路由必须同时回读并传入 `SysMenuId`、`ModuleEngineKey`、`DiyTableId`;弹层默认继承调用菜单,也允许跨模块时显式传真实授权模块。宿主统一下发 `{ sysMenuId, moduleEngineKey, diyTableId }` `permissionContext`。
114
+ - 同一发布物必须支持:直接打开独立运行、`sys_menu` 使用 `/micro-app/{AppKey}/{RoutePath}` 打开指定路由、`V8.OpenAppDialog` 按 AppKey/RoutePath 以 Dialog 或 Drawer 打开、表单 `DevComponent` 按组件路径别名嵌入指定 RoutePath。
115
+ - 表单嵌入时,在 `microi.routes.json` 的目标页面声明稳定、唯一的 `LegacyComponentPaths`;字段 `Config.DevComponentPath` 与其归一化后匹配。主前端存在同路径 Vue 文件时本地组件优先;不存在时 `DynamicComponentCache` 才交给 MicroService 组件宿主。新项目使用不与 `/src/views` 真实文件冲突的虚拟路径,历史字段无需逐租户改配置。
116
+ - 组件宿主必须下发 `componentMode=true`、可序列化的 `componentData`、当前路由和权限上下文;子应用用 `dev-component:resize` 同步 80~1600px 高度,用 `dev-component:event` 回传 `update:modelValue`、`CallbackFormValueChange`、`FormSet` 或 `ParentFormSet`。禁止依赖父页面 DOM、Vue 实例、函数或 `ParentV8` 跨 iframe 传递。
117
+ - 菜单路由必须同时回读并传入 `SysMenuId`、`ModuleEngineKey`、`DiyTableId`;弹层与表单组件默认继承调用菜单,也允许跨模块时显式传真实授权模块。宿主统一下发 `{ sysMenuId, moduleEngineKey, diyTableId }` 的 `permissionContext`。
115
118
  - `permissionContext` 只是选择正确 API 调用上下文,不是授权凭证。后端仍依据 DiyToken、OsClient、角色、菜单、表、按钮和数据范围校验;禁止删除权限参数、改成匿名接口或写死管理员 Token 来消除“没权限”。
116
119
 
117
120
  ### 独立运行的认证门
118
121
 
119
- - 嵌入菜单或 `V8.OpenAppDialog` 时直接复用宿主 Token,不显示第二套登录页;同一个 V8 SDK 实例继续处理 Token 轮换。
122
+ - 嵌入菜单、表单定制组件或 `V8.OpenAppDialog` 时直接复用宿主 Token,不显示第二套登录页;同一个 V8 SDK 实例继续处理 Token 轮换。
120
123
  - 独立访问时先配置当前 `apiBase/osClient` 并复用本地有效 Token;没有有效 Token 才显示吾码帐号密码登录。
121
124
  - 页面启动时调用 `V8.GetSysConfig(true)`,用统一 `isEnabledFlag` 解析 `EnableCaptcha`。开启时请求 `GET /api/Captcha/GetCaptcha?OsClient=...`、读取响应头 `captchaid`,登录提交 `_CaptchaId/_CaptchaValue`;关闭时不渲染、不提交验证码字段。
122
125
  - 登录使用统一 `V8.Login` 与 DiyToken,不创建第二套用户体系。Token 失效后回到认证门;禁止在 URL、日志、源码、`.env` 或业务数据中保存 Token。
@@ -177,6 +180,7 @@ AI 生成菜单微服务时,应优先封装一个 `callMicroiHost(action, data
177
180
  - 组合发布成功前,私有源码回读必须与本地源码在路径集合、文件数、字节数、逐文件 SHA-256 和规范化清单哈希上完全一致;任何缺失、多余或读取错误都要阻止运行版本切换。
178
181
  - 直接刷新友好路由与连续切换多个微应用不 404、白屏或实例名冲突。
179
182
  - Dialog/Drawer 成功、取消、错误和关闭协议正确。
183
+ - 表单 `DevComponentPath` 能匹配页面 `LegacyComponentPaths`,指定路由正常加载;Add/Edit/View/只读、字段值回写和自动高度均通过。
180
184
  - 独立地址覆盖“已有 Token 自动进入”和“无 Token 显示帐号密码”;`EnableCaptcha` 开/关各验一次,验证码响应头和登录参数正确。
181
185
  - 宿主 API 请求携带当前 Token/OsClient/`permissionContext`,普通用户用真实授权模块成功、未授权模块仍明确拒绝。
182
186
  - 至少验证桌面和窄屏;上传、表格、滚动、弹窗底部操作不被截断。
@@ -8,7 +8,7 @@
8
8
  ├─ 私有源码 -> mci_ai_app_file -> 私有 HDFS
9
9
  └─ 构建发布 -> sys_microiservice + sys_microiservice_page
10
10
  └-> 公有构建产物
11
- 后台菜单 / V8.OpenAppDialog -> 微应用宿主
11
+ 后台菜单 / 表单 DevComponent / V8.OpenAppDialog -> 微应用宿主
12
12
  ```
13
13
 
14
14
  `ApplicationType=MicroService` 表示运行类型;官方/社区来源是独立字段,不能混用。
@@ -51,7 +51,8 @@
51
51
  ```
52
52
 
53
53
  路径必须稳定并以 `/` 开头。迁移历史内置页面时可维护
54
- `LegacyMenuUrls/LegacyComponentPaths`,让新旧书签在过渡期共存。
54
+ `LegacyMenuUrls/LegacyComponentPaths`,让新旧书签在过渡期共存;
55
+ `LegacyComponentPaths` 也作为表单 `DevComponentPath` 到微服务页面 RoutePath 的稳定别名。
55
56
 
56
57
  ## MCP 读取/写入
57
58
 
@@ -124,6 +125,30 @@ V8.OpenAppDialog({
124
125
  回调函数必须在顶层,不放 `Data`。`OpenAppDialog` 只加载已发布 MicroService;
125
126
  `OpenDialog` 加载主前端注册组件。
126
127
 
128
+ ## 表单引擎定制组件
129
+
130
+ 需要把复杂区域固定嵌入表单时,字段使用 `Component=DevComponent`,并让
131
+ `Config.DevComponentPath` 匹配目标页面 `RouteMetaJson.LegacyComponentPaths`。主前端能找到
132
+ 同路径 Vue 文件时仍加载本地组件;找不到时才查询启用的 `sys_microiservice_page` 并由
133
+ `micro-app/dev-component.vue` 加载该页面 `RoutePath`。新项目应使用不会与 `/src/views` 真实文件
134
+ 冲突的虚拟路径。
135
+
136
+ 组件宿主下发 `componentMode=true`、`componentData`、`microRoute`、当前 Token/OsClient 和
137
+ `permissionContext`。`componentData` 仅包含可序列化表单上下文,不传函数、Vue 实例、循环引用或
138
+ `ParentV8`。子应用使用:
139
+
140
+ ```javascript
141
+ window.microApp.dispatch({ type: 'dev-component:resize', height: 520 });
142
+ window.microApp.dispatch({
143
+ type: 'dev-component:event',
144
+ event: 'update:modelValue',
145
+ args: [{ status: 'passed' }]
146
+ });
147
+ ```
148
+
149
+ 高度限制为 80~1600px;表单联动还可上报 `CallbackFormValueChange`、`FormSet`、
150
+ `ParentFormSet`。验收覆盖 Add/Edit/View/只读、字段值回写、窄屏/暗色以及有权/无权账号。
151
+
127
152
  ## 子应用宿主数据
128
153
 
129
154
  ```javascript
@@ -131,11 +156,12 @@ const host = window.microApp?.getData?.() || {};
131
156
  ```
132
157
 
133
158
  常见字段:`apiBase`、`osClient`、`token`、`menuId`、`moduleEngineKey`、`diyTableId`、
134
- `permissionContext`、`appKey`、`version`、`microRoute`、`dialog`、`dialogData`。只在内存中使用 Token。
159
+ `permissionContext`、`appKey`、`version`、`microRoute`、`dialog`、`dialogData`、
160
+ `componentMode`、`componentData`。只在内存中使用 Token。
135
161
 
136
162
  独立访问时没有宿主 Token:先配置清单中的 `apiBase/osClient`,读取 `V8.GetSysConfig(true)`,
137
163
  没有有效本地 Token 才显示吾码帐号密码登录;按 `EnableCaptcha` 动态请求验证码并向 `V8.Login`
138
- 提交 `_CaptchaId/_CaptchaValue`。嵌入菜单或弹层时复用宿主身份,不显示第二套登录。
164
+ 提交 `_CaptchaId/_CaptchaValue`。嵌入菜单、表单定制组件或弹层时复用宿主身份,不显示第二套登录。
139
165
 
140
166
  `permissionContext={sysMenuId,moduleEngineKey,diyTableId}` 只帮助子应用选择正确的 FormEngine
141
167
  模块上下文,不能授予权限。无权限时依次核对 Token/OsClient、模块 Key、宿主上下文和角色授权;
@@ -70,9 +70,17 @@ description: Microi 吾码从自然语言交付完整系统的总控规范。用
70
70
  - EntityHero、MetricStrip、ActionGrid、ResponsiveSection 是独立视图区块,不是 `diy_field` 数据字段,也不能用 DevComponent 或虚拟字段模拟。
71
71
  - 小程序仅执行白名单 ActionSchema 和声明式显隐/参数映射,不执行任意前端 V8。复杂业务动作调用接口引擎,重要校验进入后端表单事件。
72
72
 
73
- 绑定 `diyTableId` 创建 CRUD 菜单时,必须配置或允许 MCP/后端自动推断 `TableDiyFieldIds`、`SelectFields`、`SearchFieldIds`、`SortFieldIds`、`NotShowFields`、`StatisticsFields`、`MobileListFields`、`CardTitleTagFields`、`CardBottomTagFields`、`DefaultOrderBy`。列表列、搜索列、移动端卡片列不能为空白;`Id/XxxId/XxxIds`、系统字段、布局控件和富文本/上传/地图/子表等重字段默认不展示在列表。
74
-
75
- 搜索字段默认覆盖名称/标题/编号、状态/类型/分类、负责人/部门/客户、日期时间;金额、价格、数量、积分、余额、人数等数值字段默认进入 `StatisticsFields`。选择类、开关、部门、树、级联、地址等字段应尽量使用等值筛选。
73
+ 绑定 `diyTableId` 创建 CRUD 菜单时,必须配置或允许 MCP/后端自动推断 `TableDiyFieldIds`、`SelectFields`、`SearchFieldIds`、`SortFieldIds`、`NotShowFields`、`StatisticsFields`、`MobileListFields`、`CardTitleTagFields`、`CardBottomTagFields`、`DefaultOrderBy`。列表列、搜索列、移动端卡片列不能为空白;`Id/XxxId/XxxIds`、系统字段、布局控件和富文本/上传/地图/子表等重字段默认不展示在列表。
74
+
75
+ 搜索字段默认覆盖名称/标题/编号、状态/类型/分类、负责人/部门/客户、日期时间;金额、价格、数量、积分、余额、人数等数值字段默认进入 `StatisticsFields`。选择类、开关、部门、树、级联、地址等字段应尽量使用等值筛选。
76
+
77
+ 每个可见业务模块还必须通过视觉交付门禁:逐字段设置合理列表宽度;每个模块都有紧凑
78
+ 标题、业务副标题和 2~4 个真实动态指标;只给少量重要菜单设置行动型侧栏角标;为状态
79
+ PageTabs 和有决策价值的更多按钮设置批量统计角标;PC 至少一个合理宽度且去重普通列的
80
+ 复合主列;移动端按图片/标题/副标题/顶部/状态/右侧金额/正文/Meta/底部规划动态区域。
81
+ 自动生成只是最低兜底,AI 必须按业务表、状态机和数据口径精调。禁止用随机数、固定演示数
82
+ 或无来源值装饰指标;当前页求和必须明确标注“本页”。`EnableViewSchema` 只控制
83
+ Detail/Edit 自定义表单,不能用它关闭 List/Card 展示设计。
76
84
 
77
85
  字段较多的表单必须做视觉分组,但**优先用 `CollapseGroup` 折叠分组**,**只有大业务域(≥8 字段)才用 Tabs**。详细决策表、Config JSON 示例、字段数阈值和回读验收必须先读 `microi-form-layout/SKILL.md`,再按以下快速决策表执行:
78
86
 
@@ -48,6 +48,33 @@ description: Microi 模块引擎与 sys_menu 配置指南。用于创建或修
48
48
  普通状态、开关等低基数字段不能机械创建单列索引。只有真实查询、关联、唯一约束
49
49
  或扫描需要的索引才进入 Manifest 并通过 MCP 创建、回读。
50
50
 
51
+ ## AI 模块视觉交付门禁(强制)
52
+
53
+ 对每个 `Display=1` 或 `AppDisplay=1` 且绑定业务表的 Diy 模块,AI 不能只依赖 CRUD
54
+ 默认页,也不能只写 `Name/DiyTableId` 后结束。至少完成以下设计和回读:
55
+
56
+ 1. 每个列表字段都给出符合内容长度的 `TableWidth`;标题/名称/地址较宽,日期/编码居中,
57
+ 金额/数量/状态较紧凑。PC 复合列必须另给合理的 `MinWidth`,不得让末列自适应覆盖它。
58
+ 2. 每个模块都配置紧凑 Hero 的业务标题、简短副标题和 2~4 个动态指标。优先统计待处理、
59
+ 逾期、金额、容量、风险、完成率等当前表真正有意义的业务数据,不能全部退化为总记录数。
60
+ 3. 指标只能来自 `StatisticsFields`、当前列表 `DataCount/PageCount` 或一个批量聚合接口。
61
+ 禁止随机数、伪统计、静态演示数字和没有口径的“看起来好看”数值。无法推断时允许用
62
+ `DataCount + PageCount` 做诚实最低兜底,并在后续由业务人员补充口径。
63
+ 4. 左侧菜单角标只给少量有行动含义的重要菜单,例如待办、未读、逾期、低库存;禁止每个
64
+ 菜单都加。`PageTabs` 的状态数量、`MoreBtns/PageBtns/FormBtns/BatchSelectMoreBtns/
65
+ ExportMoreBtns` 的有用数量也应设计角标,但同页统计必须批量返回,禁止 N+1。
66
+ 5. PC 至少设计一个 `Field + Lines + TrailingFields` 复合主列。已放入次要行或右侧图标/
67
+ 状态的字段必须从普通独立列去重;主字段、次要行、右侧字段及其 `RequiredFields` 都要
68
+ 进入查询结果,宽度必须足以容纳多行和尾随标签。
69
+ 6. 移动端卡片按真实字段规划图片/头像、标题、副标题、顶部标签、状态、右侧金额、正文、
70
+ Meta、底部区域;同一字段不得在多个区域机械重复,空区域应隐藏而不是留下占位。
71
+ 7. `EnableViewSchema` 只控制 Detail/Edit 自定义表单。Hero、指标、列表密度、PC 复合列、
72
+ 移动端卡片只要有配置就始终生效;设计器必须提供独立的“自定义表单”Tab。
73
+
74
+ 平台自动生成的 List/Card 配置只是防止空白界面的最低值,不能替代 AI 对业务状态、金额、
75
+ 时效和操作路径的分析。显式配置优先于自动值;写后用 `microi_get_module` 回读 ViewSchema、
76
+ 列宽、统计列、卡片区域和角标配置。
77
+
51
78
  ## 打开方式
52
79
 
53
80
  | OpenType | 用途 |
@@ -113,6 +140,9 @@ PC 列表的固定结构顺序是“模块 Hero(标题/副标题/动态指标
113
140
  `Data.Buttons` 与 `Data.Rows`,禁止逐行调用。
114
141
  - 能直接用字段表达的信息优先配置复合列/卡片字段;只有确需 HTML 样式或组合逻辑时
115
142
  才使用字段的 `V8TmpEngineTable`,且仍需遵守 DOMPurify 和查询字段范围。
143
+ - 存量菜单没有 Hero.Metrics 时,客户端只允许根据真实后端汇总、当前筛选总数、本页加载数
144
+ 和本页真实状态分布生成兜底指标;不得用随机值装饰页面。字段聚合缺少全量口径时必须明确
145
+ 标注“本页”,不能把当前页求和冒充全表汇总。
116
146
 
117
147
  ### 表单布局协同
118
148
 
@@ -31,6 +31,16 @@
31
31
  默认搜索优先名称、标题、编号、状态、类型、分类、负责人和时间;统计优先金额、
32
32
  数量、价格、积分和余额。用户明确配置优先。
33
33
 
34
+ 每个可见且绑定表的 Diy 模块还必须有 List/Card 展示设计:所有普通列给合理
35
+ `TableWidth`,至少一个 PC 复合列给 `MinWidth`,Hero 有业务标题、副标题和 2~4 个
36
+ 真实指标,移动卡片覆盖可用的标题/副标题/顶部/状态/右侧/正文/Meta/底部区域。
37
+ 复合列和卡片区域使用过的字段不得继续机械显示为普通列或在多个区域重复。
38
+
39
+ 菜单角标只用于少量待办、未读、逾期、预警等重要入口;PageTabs 与按钮角标按业务价值
40
+ 选择。相同页面的一组指标/角标使用一个批量接口,不逐指标、逐按钮、逐行请求。
41
+ 自动默认值只保证旧库和漏配模块不出现空白标题,不替代业务设计;严禁用随机数或静态演示
42
+ 数字伪造统计。没有可推断业务指标时只使用真实 `DataCount/PageCount` 兜底。
43
+
34
44
  ## 打开方式细节
35
45
 
36
46
  ### Diy
@@ -86,6 +96,9 @@
86
96
 
87
97
  顶层 PC 列表不依赖 `EnableViewSchema` 才采用新样式:平台始终显示紧凑模块标题;ViewSchema 中有效的 List-PC 与 Card-Mobile 配置也不受该开关限制。模块表单中的 `DiyModulePresentationDesigner` 负责可视化编辑这些展示配置,以独立 JSON 编辑 Detail/Edit,并通过高级 JSON 保留角色视图及未知字段。
88
98
 
99
+ 设计器固定提供“模块标题与统计 / PC 复合列 / 移动端卡片 / 自定义表单 / 高级 JSON”五个
100
+ Tab;开关标签是“启用自定义表单视图”,只影响第四个 Tab 中的 Detail/Edit。
101
+
89
102
  视图项常用字段:`Key`、`Scene`、`Device`、`RoleIds`、`Priority`、`Layout`。
90
103
  标准区块包括 `EntityHero`、`MetricStrip`、`ActionGrid`、
91
104
  `ResponsiveSection`。声明式动作包括:
@@ -80,6 +80,17 @@ return {
80
80
  生命周期里单独查数量;后端应按 `Ids` 批量 `GROUP BY`,并继续应用租户、菜单和数据权限。
81
81
  统计失败只隐藏角标,不能阻断按钮本身或 PageTab 切换。
82
82
 
83
+ ### JsonTable 内嵌选择器的数据源代理
84
+
85
+ `PageTabs/MoreBtns/PageBtns/BatchSelectMoreBtns/ExportMoreBtns/FormBtns` 都是 `JsonTable` 字段,
86
+ 其中的列对象不是独立 `diy_field`。内嵌 `Select/Radio/Checkbox/Autocomplete/Cascader/SelectTree`
87
+ 一旦使用 `Sql/DataSource/ApiEngine` 服务端数据源,必须在列的 `Config.DataSourceFieldId` 中填写
88
+ 同租户、同表内一个真实且权限等价的 `diy_field.Id`。禁止把内嵌列的 `Key` 或列 `Id` 当成
89
+ 字段 Id,否则打开“模块设计-按钮”时会触发“DiyField 数据不存在”,并使同批字段数据加载失败。
90
+
91
+ 远程 SQL 搜索还应同时设置 `DataSourceSqlRemote=true`,使用 `$Keyword$` 参数并限制返回条数;
92
+ 应用包回归测试必须逐个校验所有按钮集合的代理字段真实存在、保存字段/显示字段一致。
93
+
83
94
  ### PageTabs 关联模块
84
95
 
85
96
  - 列表页固定顺序为“模块 Hero(标题/副标题/动态指标)→ PageTabs → 查询与表格”;PageTabs 不能渲染到 Hero 上方,也不能重复承担模块标题。