@microi.net/cli 6.2.2 → 6.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.codebuddy-plugin/marketplace.json +2 -2
- package/.codebuddy-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/.workbuddy-plugin/marketplace.json +2 -2
- package/.workbuddy-plugin/plugin.json +1 -1
- package/assets/build-meta.json +5 -5
- package/cordis.patch.yml +1 -1
- package/package.json +1 -1
- package/scripts/mcp-server.js +111 -110
- package/scripts/microi-cli.js +63 -63
- package/scripts/microi-skills.meta.json +254 -248
- package/skills/.microi-skills-version.json +2 -2
- package/skills/.progressive-disclosure-manifest.json +66 -66
- package/skills/app-store/SKILL.md +7 -6
- package/skills/microi-ai-application/SKILL.md +5 -5
- package/skills/microi-client-frontend/SKILL.md +2 -2
- package/skills/microi-codex-installer/SKILL.md +6 -0
- package/skills/microi-datasource-mapping/SKILL.md +1 -0
- package/skills/microi-db-schema/SKILL.md +8 -0
- package/skills/microi-docs-coverage/references/capability-map.md +8 -8
- package/skills/microi-form-engine/SKILL.md +25 -0
- package/skills/microi-form-engine/references/data-source-events.md +6 -1
- package/skills/microi-form-layout/SKILL.md +1 -1
- package/skills/microi-frontend-sdk/references/progressive-01-token-/345/275/223/345/211/215/347/231/273/345/275/225/347/224/250/346/210/267/344/270/216/345/275/223/345/211/215/347/273/210/347/253/257/347/231/273/345/275/225/345/215/217/350/256/256.md +6 -0
- package/skills/microi-microservice/SKILL.md +387 -382
- package/skills/microi-microservice/references/runtime-delivery.md +15 -0
- package/skills/microi-ui/SKILL.md +192 -192
- package/skills/microi-ui/references/progressive-01-/347/247/273/345/212/250/347/253/257/345/234/272/346/231/257/350/223/235/345/233/276.md +183 -183
- package/skills/module-engine/SKILL.md +5 -1
- package/skills/ui-design/SKILL.md +227 -223
- package/skills/ui-design/assets/pattern-showcase/index.html +2 -2
- package/skills/ui-design/assets/templates/MCI-DESIGN.md +221 -206
- package/skills/ui-design/references/data-workspace-density.md +77 -0
- package/skills/ui-design/references/design-pattern-library.md +186 -184
- package/skills/ui-design/references/mci-design-contract.md +163 -163
- package/skills/ui-design/references/progressive-02-/345/255/227/344/275/223.md +165 -164
- package/skills/ui-design/references/progressive-03-/345/212/250/346/225/210/350/247/204/350/214/203-/344/270/260/345/257/214/344/275/206/344/270/215/345/215/241.md +237 -235
- package/skills/ui-design/references/progressive-04-/347/273/204/344/273/266/351/243/216/346/240/274/351/200/237/346/237/245.md +154 -152
- package/skills/ui-design/references/progressive-07-/351/200/237/346/237/245-/344/273/216/345/244/264/346/220/255/345/273/272/344/270/200/344/270/252/347/247/273/345/212/250/347/253/257/351/241/265/351/235/242.md +207 -207
- package/skills/uniapp-mall-assets/SKILL.md +7 -2
- package/skills/v8-crud-api/SKILL.md +2 -1
- package/skills/v8-explorer-tree/SKILL.md +22 -1
- package/skills/v8-saas-multi-tenant/SKILL.md +6 -0
- package/skills/v8-security/SKILL.md +11 -1
- package/skills/v8-sql-query/SKILL.md +38 -1
- package/skills/v8-sql-query/examples/business-query.js +18 -0
- package/skills/v8-table-event/SKILL.md +51 -2
- package/skills/v8-table-event/references/progressive-02-/345/211/215/347/253/257/344/272/213/344/273/266/345/220/215-v8-eventname-/345/217/257/350/203/275/347/232/204/345/200/274.md +3 -1
- package/skills/vision-engine/references/video-timeline.md +52 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "6.2.
|
|
2
|
+
"version": "6.2.3",
|
|
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.Agent/bump-version.js",
|
|
5
|
-
"updatedAt": "2026-11-
|
|
5
|
+
"updatedAt": "2026-11-05T18:18:34.017Z"
|
|
6
6
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 1,
|
|
3
|
-
"generatedAt": "2026-11-
|
|
3
|
+
"generatedAt": "2026-11-05T16:51:15.354Z",
|
|
4
4
|
"policy": {
|
|
5
5
|
"maxEntryLines": 285,
|
|
6
6
|
"referenceBudgetLines": 245,
|
|
@@ -169,7 +169,7 @@
|
|
|
169
169
|
]
|
|
170
170
|
},
|
|
171
171
|
"microi-client-frontend": {
|
|
172
|
-
"originalSha256": "
|
|
172
|
+
"originalSha256": "a4d629bd56a871123f43b4fa92ea05d2a685f908168e9f1b1e1fff911c310ff6",
|
|
173
173
|
"originalLines": 747,
|
|
174
174
|
"prefixSha256": "578d60fc1b769bff36396db2c0c6b2affa61ad02e956d8ad574e8238764b4008",
|
|
175
175
|
"prefixBytes": 2231,
|
|
@@ -195,7 +195,7 @@
|
|
|
195
195
|
"id": "microi-client-frontend-002",
|
|
196
196
|
"ordinal": 2,
|
|
197
197
|
"destination": "microi-client-frontend/SKILL.md",
|
|
198
|
-
"sha256": "
|
|
198
|
+
"sha256": "162a8ec35c74cce48d108093dc3bfc05cc97866e067469487587ecccc020e7e9",
|
|
199
199
|
"lines": 139,
|
|
200
200
|
"heading": "2. 表单引擎三层结构"
|
|
201
201
|
},
|
|
@@ -316,10 +316,10 @@
|
|
|
316
316
|
]
|
|
317
317
|
},
|
|
318
318
|
"microi-form-layout": {
|
|
319
|
-
"originalSha256": "
|
|
319
|
+
"originalSha256": "2a402ea3d2db1d8d23ee4a5705e5be962955e52d0c54bab3f4487303fbf0e8bf",
|
|
320
320
|
"originalLines": 412,
|
|
321
|
-
"prefixSha256": "
|
|
322
|
-
"prefixBytes":
|
|
321
|
+
"prefixSha256": "61191c1175ae3f5c511212d820378df72838a58ff5e23f4167fd03b32da93c58",
|
|
322
|
+
"prefixBytes": 4503,
|
|
323
323
|
"entryLines": 206,
|
|
324
324
|
"chunks": [
|
|
325
325
|
{
|
|
@@ -877,17 +877,17 @@
|
|
|
877
877
|
]
|
|
878
878
|
},
|
|
879
879
|
"microi-ui": {
|
|
880
|
-
"originalSha256": "
|
|
880
|
+
"originalSha256": "76e5aec46ca55d1e8707578e1b475ffa1ab66783eb9b4c35f940c71efc099e56",
|
|
881
881
|
"originalLines": 343,
|
|
882
|
-
"prefixSha256": "
|
|
883
|
-
"prefixBytes":
|
|
882
|
+
"prefixSha256": "3ead290dee4a8e42582aa01a9d5de7ce81612222fbed81674bf9f783c907ed84",
|
|
883
|
+
"prefixBytes": 1538,
|
|
884
884
|
"entryLines": 193,
|
|
885
885
|
"chunks": [
|
|
886
886
|
{
|
|
887
887
|
"id": "microi-ui-000",
|
|
888
888
|
"ordinal": 0,
|
|
889
889
|
"destination": "microi-ui/SKILL.md",
|
|
890
|
-
"sha256": "
|
|
890
|
+
"sha256": "a400da7a05d4e24e763880a997f27c1fcd859bcbe01693765695f02214bdb550",
|
|
891
891
|
"lines": 15,
|
|
892
892
|
"heading": "核心承诺"
|
|
893
893
|
},
|
|
@@ -895,7 +895,7 @@
|
|
|
895
895
|
"id": "microi-ui-001",
|
|
896
896
|
"ordinal": 1,
|
|
897
897
|
"destination": "microi-ui/SKILL.md",
|
|
898
|
-
"sha256": "
|
|
898
|
+
"sha256": "33d0fbc900090983a0e5959e10f611a3ebb3b9b2c0dc1d13ce7569cfc4701211",
|
|
899
899
|
"lines": 22,
|
|
900
900
|
"heading": "内置设计模式"
|
|
901
901
|
},
|
|
@@ -903,7 +903,7 @@
|
|
|
903
903
|
"id": "microi-ui-002",
|
|
904
904
|
"ordinal": 2,
|
|
905
905
|
"destination": "microi-ui/SKILL.md",
|
|
906
|
-
"sha256": "
|
|
906
|
+
"sha256": "37946ecc4b9c4cdca0be4279d6538070cbc9126d9d17305aaaddb0f0806d2fdc",
|
|
907
907
|
"lines": 9,
|
|
908
908
|
"heading": "源码结构"
|
|
909
909
|
},
|
|
@@ -911,7 +911,7 @@
|
|
|
911
911
|
"id": "microi-ui-003",
|
|
912
912
|
"ordinal": 3,
|
|
913
913
|
"destination": "microi-ui/SKILL.md",
|
|
914
|
-
"sha256": "
|
|
914
|
+
"sha256": "102a394c92631d141e4d3eebcaa1994fc6afca07f7f8d5fb65e59fb2c4ccd63c",
|
|
915
915
|
"lines": 23,
|
|
916
916
|
"heading": "默认要求"
|
|
917
917
|
},
|
|
@@ -919,7 +919,7 @@
|
|
|
919
919
|
"id": "microi-ui-004",
|
|
920
920
|
"ordinal": 4,
|
|
921
921
|
"destination": "microi-ui/SKILL.md",
|
|
922
|
-
"sha256": "
|
|
922
|
+
"sha256": "9a12f14587d90978ca676034d65422b7d63dd804c0120164a8e23be957937d64",
|
|
923
923
|
"lines": 33,
|
|
924
924
|
"heading": "组件选择"
|
|
925
925
|
},
|
|
@@ -927,7 +927,7 @@
|
|
|
927
927
|
"id": "microi-ui-005",
|
|
928
928
|
"ordinal": 5,
|
|
929
929
|
"destination": "microi-ui/SKILL.md",
|
|
930
|
-
"sha256": "
|
|
930
|
+
"sha256": "f46f6672b60d4faad4a0fc501036bcb7b9d04545952ad8acb716668aac699454",
|
|
931
931
|
"lines": 62,
|
|
932
932
|
"heading": "高品质移动端视觉标准"
|
|
933
933
|
},
|
|
@@ -935,7 +935,7 @@
|
|
|
935
935
|
"id": "microi-ui-006",
|
|
936
936
|
"ordinal": 6,
|
|
937
937
|
"destination": "microi-ui/references/progressive-01-移动端场景蓝图.md",
|
|
938
|
-
"sha256": "
|
|
938
|
+
"sha256": "40ae240fde9553bb813fcce576d090ade894cb920da1b3f4f45975f819a10d50",
|
|
939
939
|
"lines": 111,
|
|
940
940
|
"heading": "移动端场景蓝图"
|
|
941
941
|
},
|
|
@@ -943,7 +943,7 @@
|
|
|
943
943
|
"id": "microi-ui-007",
|
|
944
944
|
"ordinal": 7,
|
|
945
945
|
"destination": "microi-ui/references/progressive-01-移动端场景蓝图.md",
|
|
946
|
-
"sha256": "
|
|
946
|
+
"sha256": "cd73bb934f8531154f73f5ed197c7379c5d9c4f37c60d8275272df4a05bcbe81",
|
|
947
947
|
"lines": 11,
|
|
948
948
|
"heading": "网站/PC 站标准"
|
|
949
949
|
},
|
|
@@ -951,7 +951,7 @@
|
|
|
951
951
|
"id": "microi-ui-008",
|
|
952
952
|
"ordinal": 8,
|
|
953
953
|
"destination": "microi-ui/references/progressive-01-移动端场景蓝图.md",
|
|
954
|
-
"sha256": "
|
|
954
|
+
"sha256": "77e0a70e1131fe90354eba315727bbd2f49c5929a98c767cb3dfef71f0c55234",
|
|
955
955
|
"lines": 13,
|
|
956
956
|
"heading": "后台菜单配套"
|
|
957
957
|
},
|
|
@@ -959,7 +959,7 @@
|
|
|
959
959
|
"id": "microi-ui-009",
|
|
960
960
|
"ordinal": 9,
|
|
961
961
|
"destination": "microi-ui/references/progressive-01-移动端场景蓝图.md",
|
|
962
|
-
"sha256": "
|
|
962
|
+
"sha256": "2fe8adfc7c7d422a94ad667934c71113bbfced5df199a2a7ff0c14ceddb32373",
|
|
963
963
|
"lines": 19,
|
|
964
964
|
"heading": "AI 实施清单"
|
|
965
965
|
},
|
|
@@ -967,7 +967,7 @@
|
|
|
967
967
|
"id": "microi-ui-010",
|
|
968
968
|
"ordinal": 10,
|
|
969
969
|
"destination": "microi-ui/references/progressive-01-移动端场景蓝图.md",
|
|
970
|
-
"sha256": "
|
|
970
|
+
"sha256": "4cba6feaad134c973d51943e622199c944d12b67a860894a5415cfcd7eeb831f",
|
|
971
971
|
"lines": 20,
|
|
972
972
|
"heading": "禁止输出"
|
|
973
973
|
}
|
|
@@ -1654,17 +1654,17 @@
|
|
|
1654
1654
|
]
|
|
1655
1655
|
},
|
|
1656
1656
|
"ui-design": {
|
|
1657
|
-
"originalSha256": "
|
|
1658
|
-
"originalLines":
|
|
1659
|
-
"prefixSha256": "
|
|
1660
|
-
"prefixBytes":
|
|
1661
|
-
"entryLines":
|
|
1657
|
+
"originalSha256": "2255777495e1da72736089a89f940c4cc55224fbea92b922f88be3176c4cc6a3",
|
|
1658
|
+
"originalLines": 1652,
|
|
1659
|
+
"prefixSha256": "fe80f1234b699c315ae180876dd81f374516eee7d57455e4a4b2ffca488f7d9a",
|
|
1660
|
+
"prefixBytes": 1679,
|
|
1661
|
+
"entryLines": 228,
|
|
1662
1662
|
"chunks": [
|
|
1663
1663
|
{
|
|
1664
1664
|
"id": "ui-design-000",
|
|
1665
1665
|
"ordinal": 0,
|
|
1666
1666
|
"destination": "ui-design/SKILL.md",
|
|
1667
|
-
"sha256": "
|
|
1667
|
+
"sha256": "b8b3dedc3fc95b9d32189e094b8b90fbf67b9f7c2e4a0307fa3e58ccce6d5de1",
|
|
1668
1668
|
"lines": 37,
|
|
1669
1669
|
"heading": "整体风格定义"
|
|
1670
1670
|
},
|
|
@@ -1672,7 +1672,7 @@
|
|
|
1672
1672
|
"id": "ui-design-001",
|
|
1673
1673
|
"ordinal": 1,
|
|
1674
1674
|
"destination": "ui-design/SKILL.md",
|
|
1675
|
-
"sha256": "
|
|
1675
|
+
"sha256": "9593e1ab2bf4931cf4f0d96b87ce59c04a8d340dbf30c705f90375ec38d131fd",
|
|
1676
1676
|
"lines": 12,
|
|
1677
1677
|
"heading": "样式隔离与抗覆盖"
|
|
1678
1678
|
},
|
|
@@ -1680,7 +1680,7 @@
|
|
|
1680
1680
|
"id": "ui-design-002",
|
|
1681
1681
|
"ordinal": 2,
|
|
1682
1682
|
"destination": "ui-design/SKILL.md",
|
|
1683
|
-
"sha256": "
|
|
1683
|
+
"sha256": "72fea6fc01b6bd0de8b0c7a1766f45e9dc92a9a0dbb0e5ad9b38b626e0dfd27a",
|
|
1684
1684
|
"lines": 24,
|
|
1685
1685
|
"heading": "高端视觉标准"
|
|
1686
1686
|
},
|
|
@@ -1688,7 +1688,7 @@
|
|
|
1688
1688
|
"id": "ui-design-003",
|
|
1689
1689
|
"ordinal": 3,
|
|
1690
1690
|
"destination": "ui-design/SKILL.md",
|
|
1691
|
-
"sha256": "
|
|
1691
|
+
"sha256": "d744e6f89c17eb5e9e3a68214961f8db0b99ea68ed83832b1d0ad156d5388d64",
|
|
1692
1692
|
"lines": 13,
|
|
1693
1693
|
"heading": "PC 后台菜单宫格 / 入口页规范"
|
|
1694
1694
|
},
|
|
@@ -1696,7 +1696,7 @@
|
|
|
1696
1696
|
"id": "ui-design-004",
|
|
1697
1697
|
"ordinal": 4,
|
|
1698
1698
|
"destination": "ui-design/SKILL.md",
|
|
1699
|
-
"sha256": "
|
|
1699
|
+
"sha256": "5d3aebaa07bf0df572b5eadfbc567fa58138a78816f0edf25fcff1a93d914ac7",
|
|
1700
1700
|
"lines": 15,
|
|
1701
1701
|
"heading": "PC 后台数据卡片模式规范"
|
|
1702
1702
|
},
|
|
@@ -1704,7 +1704,7 @@
|
|
|
1704
1704
|
"id": "ui-design-005",
|
|
1705
1705
|
"ordinal": 5,
|
|
1706
1706
|
"destination": "ui-design/SKILL.md",
|
|
1707
|
-
"sha256": "
|
|
1707
|
+
"sha256": "60b6d9e8702a72f422c18fb7a4631953530f45d7d91e58bd816b20eb71311f0c",
|
|
1708
1708
|
"lines": 35,
|
|
1709
1709
|
"heading": "形态模式(圆角 / 扁平)"
|
|
1710
1710
|
},
|
|
@@ -1712,8 +1712,8 @@
|
|
|
1712
1712
|
"id": "ui-design-006",
|
|
1713
1713
|
"ordinal": 8,
|
|
1714
1714
|
"destination": "ui-design/SKILL.md",
|
|
1715
|
-
"sha256": "
|
|
1716
|
-
"lines":
|
|
1715
|
+
"sha256": "0a4c4dec4d1c268b067b71e931d77943277a691b9be023e03bc261789fbafcac",
|
|
1716
|
+
"lines": 26,
|
|
1717
1717
|
"heading": "圆角"
|
|
1718
1718
|
},
|
|
1719
1719
|
{
|
|
@@ -1736,23 +1736,23 @@
|
|
|
1736
1736
|
"id": "ui-design-009",
|
|
1737
1737
|
"ordinal": 9,
|
|
1738
1738
|
"destination": "ui-design/references/progressive-02-字体.md",
|
|
1739
|
-
"sha256": "
|
|
1740
|
-
"lines":
|
|
1739
|
+
"sha256": "b13e29dd73879a49db3ad5c4b60c4abf3e7e4e86d305b35e774e372a7db80ca8",
|
|
1740
|
+
"lines": 69,
|
|
1741
1741
|
"heading": "字体"
|
|
1742
1742
|
},
|
|
1743
1743
|
{
|
|
1744
1744
|
"id": "ui-design-010",
|
|
1745
1745
|
"ordinal": 10,
|
|
1746
1746
|
"destination": "ui-design/references/progressive-02-字体.md",
|
|
1747
|
-
"sha256": "
|
|
1748
|
-
"lines":
|
|
1747
|
+
"sha256": "8d26f2f07ca65b43dc38880b0b02299f233edb5378254f2982fa3cfc3a3c69d3",
|
|
1748
|
+
"lines": 47,
|
|
1749
1749
|
"heading": "间距与触摸目标"
|
|
1750
1750
|
},
|
|
1751
1751
|
{
|
|
1752
1752
|
"id": "ui-design-011",
|
|
1753
1753
|
"ordinal": 11,
|
|
1754
1754
|
"destination": "ui-design/references/progressive-02-字体.md",
|
|
1755
|
-
"sha256": "
|
|
1755
|
+
"sha256": "630bcd8d5ed6b208b446da2efb007821d0731e6fad84d106e85fbd0043d437b5",
|
|
1756
1756
|
"lines": 42,
|
|
1757
1757
|
"heading": "骨架屏 Loading 设计规范"
|
|
1758
1758
|
},
|
|
@@ -1760,15 +1760,15 @@
|
|
|
1760
1760
|
"id": "ui-design-012",
|
|
1761
1761
|
"ordinal": 12,
|
|
1762
1762
|
"destination": "ui-design/references/progressive-03-动效规范-丰富但不卡.md",
|
|
1763
|
-
"sha256": "
|
|
1764
|
-
"lines":
|
|
1763
|
+
"sha256": "b9ac274e5b98631c3262fc87ca294fd43a59dc226829a299d1db24321ad203df",
|
|
1764
|
+
"lines": 205,
|
|
1765
1765
|
"heading": "动效规范(丰富但不卡)"
|
|
1766
1766
|
},
|
|
1767
1767
|
{
|
|
1768
1768
|
"id": "ui-design-013",
|
|
1769
1769
|
"ordinal": 13,
|
|
1770
1770
|
"destination": "ui-design/references/progressive-03-动效规范-丰富但不卡.md",
|
|
1771
|
-
"sha256": "
|
|
1771
|
+
"sha256": "385528713388a28e0182e2df9e2ed828ddb7cccaf7a3a5e78354f46a588f6f1c",
|
|
1772
1772
|
"lines": 26,
|
|
1773
1773
|
"heading": "Vue 3 过渡动画"
|
|
1774
1774
|
},
|
|
@@ -1776,8 +1776,8 @@
|
|
|
1776
1776
|
"id": "ui-design-014",
|
|
1777
1777
|
"ordinal": 14,
|
|
1778
1778
|
"destination": "ui-design/references/progressive-04-组件风格速查.md",
|
|
1779
|
-
"sha256": "
|
|
1780
|
-
"lines":
|
|
1779
|
+
"sha256": "5d81e9cc239c08e67a573d80186f7e462fb7d929c609b2b6218cae97ef8f7f44",
|
|
1780
|
+
"lines": 149,
|
|
1781
1781
|
"heading": "组件风格速查"
|
|
1782
1782
|
},
|
|
1783
1783
|
{
|
|
@@ -1824,7 +1824,7 @@
|
|
|
1824
1824
|
"id": "ui-design-020",
|
|
1825
1825
|
"ordinal": 20,
|
|
1826
1826
|
"destination": "ui-design/references/progressive-07-速查-从头搭建一个移动端页面.md",
|
|
1827
|
-
"sha256": "
|
|
1827
|
+
"sha256": "8af48a2af341cf338cbb3937def060827f39f40795330c2cca7c342897f48ce7",
|
|
1828
1828
|
"lines": 53,
|
|
1829
1829
|
"heading": "速查:从头搭建一个移动端页面"
|
|
1830
1830
|
},
|
|
@@ -1832,7 +1832,7 @@
|
|
|
1832
1832
|
"id": "ui-design-021",
|
|
1833
1833
|
"ordinal": 21,
|
|
1834
1834
|
"destination": "ui-design/references/progressive-07-速查-从头搭建一个移动端页面.md",
|
|
1835
|
-
"sha256": "
|
|
1835
|
+
"sha256": "8a8884b0b064e7805cd03d904541b12da4539e73172d31f00d32c1ecfaee32f6",
|
|
1836
1836
|
"lines": 65,
|
|
1837
1837
|
"heading": "🚨 移动端低代码项目落地踩坑(必读,2026.5)"
|
|
1838
1838
|
},
|
|
@@ -1840,7 +1840,7 @@
|
|
|
1840
1840
|
"id": "ui-design-022",
|
|
1841
1841
|
"ordinal": 22,
|
|
1842
1842
|
"destination": "ui-design/references/progressive-07-速查-从头搭建一个移动端页面.md",
|
|
1843
|
-
"sha256": "
|
|
1843
|
+
"sha256": "4962a1ec7bc49ae1a2706c58fb6f929304ca254e3fd4d8b626fefbc17067bce2",
|
|
1844
1844
|
"lines": 42,
|
|
1845
1845
|
"heading": "🔗 关联字段:保存真实 Id,界面展示可读标签"
|
|
1846
1846
|
},
|
|
@@ -1848,7 +1848,7 @@
|
|
|
1848
1848
|
"id": "ui-design-023",
|
|
1849
1849
|
"ordinal": 23,
|
|
1850
1850
|
"destination": "ui-design/references/progressive-07-速查-从头搭建一个移动端页面.md",
|
|
1851
|
-
"sha256": "
|
|
1851
|
+
"sha256": "1c731f6915dae4de788e84af3f6a59cf5d116a4de1f9ca5541f13b55110521ca",
|
|
1852
1852
|
"lines": 39,
|
|
1853
1853
|
"heading": "表单布局规范(Column)"
|
|
1854
1854
|
},
|
|
@@ -1968,11 +1968,11 @@
|
|
|
1968
1968
|
]
|
|
1969
1969
|
},
|
|
1970
1970
|
"v8-crud-api": {
|
|
1971
|
-
"originalSha256": "
|
|
1972
|
-
"originalLines":
|
|
1971
|
+
"originalSha256": "768404707d7caa39865fa3887a575665fe7c8894dad3e818a36e05a48e368b22",
|
|
1972
|
+
"originalLines": 406,
|
|
1973
1973
|
"prefixSha256": "13f655834028b792eb87f441f2929a90688ca77dd56029bb932af229a9946162",
|
|
1974
1974
|
"prefixBytes": 818,
|
|
1975
|
-
"entryLines":
|
|
1975
|
+
"entryLines": 181,
|
|
1976
1976
|
"chunks": [
|
|
1977
1977
|
{
|
|
1978
1978
|
"id": "v8-crud-api-000",
|
|
@@ -1986,8 +1986,8 @@
|
|
|
1986
1986
|
"id": "v8-crud-api-001",
|
|
1987
1987
|
"ordinal": 1,
|
|
1988
1988
|
"destination": "v8-crud-api/SKILL.md",
|
|
1989
|
-
"sha256": "
|
|
1990
|
-
"lines":
|
|
1989
|
+
"sha256": "6aab6dc9a9cefda0938f29ca5f13c85c5c86ccfde52b9f31e8510465fc56a730",
|
|
1990
|
+
"lines": 17,
|
|
1991
1991
|
"heading": "核心规则"
|
|
1992
1992
|
},
|
|
1993
1993
|
{
|
|
@@ -2853,11 +2853,11 @@
|
|
|
2853
2853
|
]
|
|
2854
2854
|
},
|
|
2855
2855
|
"v8-security": {
|
|
2856
|
-
"originalSha256": "
|
|
2857
|
-
"originalLines":
|
|
2856
|
+
"originalSha256": "4a216e0bacba70e223f6ce0b0c9930e99515be41baea8613dbf7327006590b0f",
|
|
2857
|
+
"originalLines": 600,
|
|
2858
2858
|
"prefixSha256": "bf500844894621ccc29468c41013bc423fdc5768bfcc87e0cfe20675a0b0f1d8",
|
|
2859
2859
|
"prefixBytes": 8550,
|
|
2860
|
-
"entryLines":
|
|
2860
|
+
"entryLines": 265,
|
|
2861
2861
|
"chunks": [
|
|
2862
2862
|
{
|
|
2863
2863
|
"id": "v8-security-000",
|
|
@@ -2879,8 +2879,8 @@
|
|
|
2879
2879
|
"id": "v8-security-002",
|
|
2880
2880
|
"ordinal": 2,
|
|
2881
2881
|
"destination": "v8-security/SKILL.md",
|
|
2882
|
-
"sha256": "
|
|
2883
|
-
"lines":
|
|
2882
|
+
"sha256": "4fbec4fff91a887a9daa2386d60375e5b411e51fd305a3d89086bc4619231144",
|
|
2883
|
+
"lines": 38,
|
|
2884
2884
|
"heading": "1. 防 SQL 注入"
|
|
2885
2885
|
},
|
|
2886
2886
|
{
|
|
@@ -2995,11 +2995,11 @@
|
|
|
2995
2995
|
]
|
|
2996
2996
|
},
|
|
2997
2997
|
"v8-table-event": {
|
|
2998
|
-
"originalSha256": "
|
|
2999
|
-
"originalLines":
|
|
3000
|
-
"prefixSha256": "
|
|
3001
|
-
"prefixBytes":
|
|
3002
|
-
"entryLines":
|
|
2998
|
+
"originalSha256": "92247553f3c7315c6522fbeadc64ad79ee5cc48deaa12c9a4c2a93273b509576",
|
|
2999
|
+
"originalLines": 448,
|
|
3000
|
+
"prefixSha256": "e5e476797c36afccdac42a3e05d9ecb50415013274b84f4f89212b0b1a6b7621",
|
|
3001
|
+
"prefixBytes": 778,
|
|
3002
|
+
"entryLines": 226,
|
|
3003
3003
|
"chunks": [
|
|
3004
3004
|
{
|
|
3005
3005
|
"id": "v8-table-event-000",
|
|
@@ -3021,8 +3021,8 @@
|
|
|
3021
3021
|
"id": "v8-table-event-002",
|
|
3022
3022
|
"ordinal": 2,
|
|
3023
3023
|
"destination": "v8-table-event/SKILL.md",
|
|
3024
|
-
"sha256": "
|
|
3025
|
-
"lines":
|
|
3024
|
+
"sha256": "470d1827cce01a45e424639cc7273c7b838c8e158f125bff524466393c1e4b41",
|
|
3025
|
+
"lines": 58,
|
|
3026
3026
|
"heading": "事件触发规则"
|
|
3027
3027
|
},
|
|
3028
3028
|
{
|
|
@@ -3093,8 +3093,8 @@
|
|
|
3093
3093
|
"id": "v8-table-event-011",
|
|
3094
3094
|
"ordinal": 11,
|
|
3095
3095
|
"destination": "v8-table-event/references/progressive-02-前端事件名-v8-eventname-可能的值.md",
|
|
3096
|
-
"sha256": "
|
|
3097
|
-
"lines":
|
|
3096
|
+
"sha256": "e2ae9d89779e1f31eef74faa34a9e5a35ac1ba2b9f86cd5c112875eeae5a42e0",
|
|
3097
|
+
"lines": 24,
|
|
3098
3098
|
"heading": "前端事件名(V8.EventName 可能的值)"
|
|
3099
3099
|
},
|
|
3100
3100
|
{
|
|
@@ -294,7 +294,7 @@ staged 行、请求参数、`StableFilePathName` 或外部 CDN URL 推断版本
|
|
|
294
294
|
- 商城来源以 `ApiBase + OsClient` 唯一定位。添加来源先只读发现系统标题、验证码策略和公开应用数;需要私有应用时再登录。帐号、密码、Token 不能写浏览器配置或商城来源 JSON;密码只用于本次登录,长会话 Token 以 `MCP/Mobile` 非 PC 客户端签发,并由当前租户后端加密保存到 `mci_system_setting`,浏览器只持有不具备取密能力的凭据 Key。
|
|
295
295
|
- 后端来源代理必须固定已保存的 `ApiBase + OsClient`,拒绝过期 Token、访问密钥会话、非超级管理员、非 HTTPS 外网地址、重定向漂移和超限响应;Token 不得返回浏览器、日志、审计或应用包。退出登录同步删除服务端密文。
|
|
296
296
|
- 商城源业务由 `app.microi.store` 单一拥有的 `platform-marketplace-source`(`Managed`)编排,租户扩展只写 `platform-marketplace-source-hook`(`CreateIfMissing`,默认可执行正文精确为 `return { Code : 1 };`)。登录必须在远端配置读取、密码发送和凭据保存之前执行 `BeforeMarketplaceSourceLogin`;断开必须在删除服务端凭据之前执行 `BeforeMarketplaceSourceDisconnect`。Hook 失败直接阻断操作。Before Hook 仅允许 `Stage / SourceApiEngineKey / Action / SourceId`,不得传 `ApiBase`、远端 `OsClient`、账号、密码、Token、签名地址或凭据密文;协议、加密和密钥隔离继续由可信网关负责。
|
|
297
|
-
- 商城主页面统一承载应用市场、已安装、我发布的应用、安装离线包和来源管理,不能再通过独立菜单或路由割裂上下文。来源增删改启停逐项自动保存;来源管理、详情和复杂配置使用平台统一 `80%`
|
|
297
|
+
- 商城主页面统一承载应用市场、已安装、我发布的应用、安装离线包和来源管理,不能再通过独立菜单或路由割裂上下文。来源增删改启停逐项自动保存;来源管理、详情和复杂配置使用平台统一 `80%` 可拖动 Dialog,圆角遵循当前宿主与 ui-design 的紧凑适度约束,遮罩服从正向开关 `sys_config.FormMaskBlur`,缺失或 `0/false` 默认关闭毛玻璃。
|
|
298
298
|
- 每张应用卡必须显示预览图、公开范围、分类、最新版本、当前租户已安装版本及状态色。来源卡必须显示其公开数和当前授权可访问总数;平台官方发布节点只显示“平台官方应用源”身份标记,不显示安装、更新或重新安装操作。
|
|
299
299
|
- 安装可明确选择 `sys_microistore` 当前版本或 `mic_data_version` 中仍含完整包正文或已验证包指针的历史快照;后台任务在首次取包时必须把计划中的 `AppVersion` 解析为匹配且可安装的不可变 `StoreVersionId`,写入 checkpoint,并在全部后续分片一直传到详情取包。发布方中途升版时继续完成已锁定快照,新版留给下一轮盘点;快照缺失、版本不匹配、身份变化或快照 Id 漂移必须失败关闭,禁止退回易变当前行。实际安装版本写回 `sys_microistoreversion`。回退旧版属于重新安装,不得静默换成最新版。
|
|
300
300
|
- 应用详情的版本选择必须服务端分页和搜索,默认每页不超过 20 条;当前版本固定置顶,历史版本只返回含完整旧包或有效 HDFS 指针的可安装状态。禁止用 `_PageSize:500` 或一次加载全部版本后在浏览器过滤。翻页、搜索与页大小切换都必须保持已选版本语义并显示总数。
|
|
@@ -336,9 +336,10 @@ staged 行、请求参数、`StableFilePathName` 或外部 CDN URL 推断版本
|
|
|
336
336
|
## 版本与回滚
|
|
337
337
|
|
|
338
338
|
- 版本号单调递增,保存变更清单和前后哈希。
|
|
339
|
-
-
|
|
340
|
-
-
|
|
341
|
-
-
|
|
339
|
+
- 当前公开 Web、UniApp、MicroService 的体验入口统一为 `{可信ApiBase}/micro-app/{tenantLower}/{权威AppKey}/index.html`,租户段取当前可信连接 OsClient 小写;入口直接返回已提交 HTML,地址栏不顶层 30x 跳到 typed v3、CDN/NAS 或版本目录。公开性、应用类型与 AppKey 取同源权威记录;已安装应用取目标租户记录,不按源商城或显示名称猜身份。公有桶固定根 `/{tenantLower}/micro-app/{AppKey}/index.html` 仍是 CDN 投影,不作为当前体验链接;内部 `/micro-app/v3/tenants/...` 与原始 `microi/application-assets/v3/...` 校验对象也不作为用户当前入口。
|
|
340
|
+
- 历史预览只用已回读版本的实际 `{可信FileServer}/{tenantLower}/micro-app/{AppKey}/{exactPublishedVersion}/index.html`,保留 FileServer 的路径前缀。不能从数字 `CurrentVersion` 推算 `AppVersion`,不能宣称旧 `/{version}/...` 短 API 或 `?version=` 支持通用 V3 历史。签名 URL、显式历史和私有/未知公开性保持原访问语义,不改成 current。私有桶仍保存各版本源码;编译包没有源码时明确记为 `NotIncluded`。已验证历史目录不得覆写成不同字节,缺失时报告未恢复。
|
|
341
|
+
- 发布顺序仍为完整上传并验证版本目录、复制私有源码快照、提升固定根的非入口资源、最后提升固定 `index.html`。适用的 CDN 精确刷新完成并回读入口及引用资源后,才提交 `sys_microistore.PreviewUrl/PublicPublishPath`;任一步失败保留旧商城入口并进入可恢复状态。官网列表、详情、二维码和“立即体验”在展示层使用 API 固定入口,不带版本、请求指纹或缓存绕过参数;清单内 JS/CSS/图片可按原规则分流到 CDN/NAS。
|
|
342
|
+
- v3 数据库中的 `PreviewUrl/PublicPublishPath` 继续保留以 `/` 开头的对象路径,完成态检查依赖此相对值;`StableResolverPath` 保留 typed v3 内部协议。官网接口和商城工作台只转换已确认公开的当前体验 URL,不直接改写 v3 记录、历史快照或安装身份。
|
|
342
343
|
- 官方 CDN 凭据按当前租户系统设置 `Integration.Cdn.Aliyun.*`、`Integration.Dns.Aliyun.*`、历史 SaaS `AlidnsKeyId/AlidnsKeySecret` 顺序读取;半配置失败关闭,不静默跳过刷新。阿里云可能把并发 URL 合并为同一任务号,需等待该任务返回的全部 URL 完成并按原始字节哈希回读。批量迁移应按每日刷新配额限速或分日执行。
|
|
343
344
|
- 旧版对象若已丢失,只能从商城编译包、仍可访问的当前体验路由或本地归档取得逐文件匹配冻结清单的原始字节后补齐;哈希或长度不符时拒绝写入。历史版本无法恢复时保留原版本记录和链接并列出待补清单,可独立迁移已完整校验的当前版本,但不得把未恢复的历史目录标为已归档。
|
|
344
345
|
- stage 前回读并冻结应用的 `CurrentVersion + AppVersion`;finalize 必须同时传 `ExpectedCurrentVersion + ExpectedAppVersion`,在以不可变 AppId 加锁后再次 compare-and-set。缺失前置条件、AppId/AppKey 漂移或旧请求晚到一律失败关闭;重新发布必须重新盘点,不能静默回退。
|
|
@@ -353,9 +354,9 @@ staged 行、请求参数、`StableFilePathName` 或外部 CDN URL 推断版本
|
|
|
353
354
|
- [ ] 同一包重复安装无重复表/字段/菜单/任务
|
|
354
355
|
- [ ] 客户自定义 V8 与非包拥有配置保持不变
|
|
355
356
|
- [ ] 源码包、构建包、Manifest 和数据库版本一致且哈希可核
|
|
356
|
-
- [ ]
|
|
357
|
+
- [ ] API 固定入口返回当前已提交版本且加载后地址栏不跳到 typed v3、CDN/NAS 或版本目录;已回读的精确历史 CDN URL 独立验证,不用当前版本替代
|
|
357
358
|
- [ ] 安装到不同 ApiBase/OsClient 后,入口 HTML 使用目标租户上下文且分享 URL 无运行参数
|
|
358
|
-
- [ ] Web/UniApp
|
|
359
|
+
- [ ] Web/UniApp 安装后的内部 `PreviewUrl` 保留原协议及目标租户绑定,已确认公开的当前体验由展示层转为目标租户 API 固定入口,不含 OSS/S3 内网域名或临时签名;即使发布包漏选菜单,也会幂等生成可直接在线使用的 Iframe 入口,已有入口则重绑到目标租户地址
|
|
359
360
|
- [ ] 只更新菜单/说明/声明式资源且复用旧运行时的版本,`sys_microistore.AppVersion` 跟随安装包版本,运行版本表保留真实构建版本;商城安装状态不能因两种版本合同合法分离而显示异常
|
|
360
361
|
- [ ] 中断/重启后可恢复,两个节点不会重复副作用
|
|
361
362
|
- [ ] 普通角色不能安装、升级、卸载或读取私有源码
|
|
@@ -90,13 +90,13 @@ UniApp 使用 Vue 3 + TypeScript 的官方 Vite 工具链,并同时遵守 `mic
|
|
|
90
90
|
4. 同步私有源码,再流式发布公有构建目录;源码同步失败不得继续发布。发布前回读并冻结应用的 `CurrentVersion` 与 `AppVersion`,stage 只上传不可变版本资产,finalize 必须同时提交 `ExpectedCurrentVersion` 与 `ExpectedAppVersion` 做 compare-and-set;缺一项、状态漂移或回读不一致都停止,不能自动覆盖较新发布。
|
|
91
91
|
- v3 的应用基线、fence、应用行版本及 active/committed 指针是原始请求的不可变事实;stage 后只按回读更新版本行的 `ExpectedVersionRowVersion`。已提交但仍为 `ProjectionPending` 时,先回读版本与应用,保留原 `RequestId / RequestFingerprint / DeliveryBatchId` 和首次 finalize 的应用基线,重放原请求取得幂等完成回执;禁止把提交后的新指针或 fence 拼入旧请求。只有 `Completed=true` 与 CDN 文件完整性回读同时通过,才继续发布安装包。
|
|
92
92
|
5. 每次创建、修改、升级或重新发布 AI 应用,必须在任何源码同步、stage、finalize 或商城制包之前,为目标精确 `AppVersion` 写入 `sys_microistore_changelog`。日志的 `StoreId / Version / Title / ChangeType / Content / ReleaseTime` 必须完整;发布工具显式传入含义一致且非空的 `changeSummary`,发布后同时回读商城子表与 `mci_ai_app_version.ChangeSummary`。缺日志或版本不一致必须停止发布。
|
|
93
|
-
6.
|
|
93
|
+
6. 当前公开 Web、UniApp、MicroService 的体验地址统一为 `{可信ApiBase}/micro-app/{tenantLower}/{权威AppKey}/index.html`;租户段取当前连接 OsClient 小写,应用身份与公开范围来自同源权威记录。入口直接返回当前已提交 HTML,页面加载后地址栏仍保持固定入口,不作顶层 30x 跳转到 typed v3、CDN/NAS 或版本目录。清单内的 JS/CSS/图片仍可按原协议分流。公有桶 `{tenantLower}/micro-app/{AppKey}/` 固定根和 `/{exactPublishedVersion}/` 历史目录继续作为 CDN 发布投影,历史目录一旦验证不得覆写成不同字节。
|
|
94
94
|
7. 同一版本私有源码文件使用相同的租户、应用、版本相对路径写入私有桶;固定根保存最近一次已完成发布的源码。确实不含源码的编译包在包声明中记录 `Source=NotIncluded`,运行时版本的 `SourceSnapshotPath` 保持空值,不得从公有产物伪造源码。先校验完整公有版本与私有源码快照,再提升固定根的非入口资产和 `index.html`;固定入口切换后提交 CDN 精确路径刷新,回读刷新任务终态和公有入口及引用资源,再更新商城 `PreviewUrl/PublicPublishPath`。刷新任务仅提交成功、单个 CDN 节点 200 或本地构建成功都不算完成。
|
|
95
|
-
8.
|
|
96
|
-
v3 的 `sys_microistore.PreviewUrl/PublicPublishPath` 和版本 `PreviewUrl` 在数据库内保留以 `/`
|
|
95
|
+
8. 官网、二维码、分享链接和商城“立即体验”使用上方 API 固定入口。显式历史预览使用已回读版本的实际 `{可信FileServer}/{tenantLower}/micro-app/{AppKey}/{exactPublishedVersion}/index.html`,保留 FileServer 的路径前缀;不能从数字 `CurrentVersion` 推算语义 `AppVersion`,也不能把旧 `/{version}/...` 短 API 或 `?version=` 当作通用 V3 历史读取。签名 URL、明确历史版本、私有或未知公开性的入口不规范化成 current。CDN 直接读取公有桶对象,不要求其做动态版本解析;发布器仍须在切换前确保 HTML 引用的 JS/CSS 已存在,并核对业务请求使用目标租户的 ApiBase。
|
|
96
|
+
v3 的 `sys_microistore.PreviewUrl/PublicPublishPath` 和版本 `PreviewUrl` 在数据库内保留以 `/` 开头的对象路径,后端完成态检查会与投影路径逐字比较;`StableResolverPath` 继续保留 typed v3 内部协议。官网接口与商城工作台只在展示层转换已确认公开的当前入口,不为统一展示批量改写这些字段或安装身份。
|
|
97
97
|
9. 新的官方 Web、UniApp、MicroService 发布统一使用支持固定 CDN 投影的 v3 目录流式发布;旧 `ai_app_build` 只保留历史兼容和迁移读取,不作为新版本发布入口。目标 API 的 `ApplicationCdnProjectionSupported` 未启用时先部署后端并停止新发布,不回退到 `ai-app-publish`。
|
|
98
|
-
10.
|
|
99
|
-
11. `SharedPublicRuntime.EntryUrl`
|
|
98
|
+
10. 命中 `static.itdos.com` 官方 CDN 刷新分支时,凭据从当前租户后端系统设置 `Integration.Cdn.Aliyun.*` 读取,兼容旧的 `Integration.Dns.Aliyun.*` 与 SaaS `AlidnsKeyId/AlidnsKeySecret`;必须成对配置并具备刷新及任务查询权限。刷新任务可能合并多个 URL 到同一任务号,应以全部任务 `Complete` 和 CDN 文件哈希回读为准;不得仅凭提交成功切换商城入口。批量发布须考虑 CDN 每日刷新配额。该投影步骤不把 CDN 地址改成用户当前体验入口。
|
|
99
|
+
11. `SharedPublicRuntime.EntryUrl` 仍用于共享不可变运行资源,历史版本目录用于显式历史预览、回滚、摘要校验与审计,不能替代当前公开固定入口。回读应用、版本、active 文件清单和 SHA-256;旧清单文件只能可逆归档,不能删除。再分别直接请求 API 当前入口、已核验历史入口及主要 JS/CSS,并在真实浏览器断言当前入口加载后地址栏未跳到 typed v3、CDN/NAS 或版本段。历史对象缺失时报告未恢复,不以当前字节冒充历史。
|
|
100
100
|
|
|
101
101
|
## 完成定义
|
|
102
102
|
|
|
@@ -62,7 +62,7 @@ description: Microi.Client 源码架构指南。用于修改 Microi.Client Vue
|
|
|
62
62
|
| 通用 V8/低代码工具 | `src/utils/diy.common.js`、`src/utils/v8-*.js` |
|
|
63
63
|
|
|
64
64
|
<!-- /microi-progressive:chunk -->
|
|
65
|
-
<!-- microi-progressive:chunk id=microi-client-frontend-002 sha256=
|
|
65
|
+
<!-- microi-progressive:chunk id=microi-client-frontend-002 sha256=162a8ec35c74cce48d108093dc3bfc05cc97866e067469487587ecccc020e7e9 -->
|
|
66
66
|
## 2. 表单引擎三层结构
|
|
67
67
|
|
|
68
68
|
### 模块级跨端视图
|
|
@@ -170,7 +170,7 @@ description: Microi.Client 源码架构指南。用于修改 Microi.Client Vue
|
|
|
170
170
|
|
|
171
171
|
- 微服务和定制组件的来源标识必须由 Microi.Client 宿主统一渲染,子应用不得各自实现。微服务来源入口只向当前登录用户 `Level >= 9999` 展示,普通用户、未知或非法等级、受限访问密钥会话不显示标签、关闭按钮及源码详情;不从账号名称、`_IsAdmin` 或子应用元数据推断权限。定制组件的原有来源展示保持兼容,不新增 `RenderSourceBadgeMode`、自动收起或全局关闭配置。
|
|
172
172
|
- `V8.OpenAppDialog` / Drawer 等标准弹层的来源标识放在标题文字之后,不提供关闭按钮;菜单/整页微服务由 `micro-app/host.vue` 在内容区右上角直接渲染,管理员可手动关闭当前页面实例的标识,切换实例或账号后恢复。当前用户等级降低后立即隐藏入口并关闭已展开详情;这只控制来源辅助工具,不能改变业务菜单、关闭 Tab、弹层或后端源码/MCP 鉴权。不得依赖外围路由组件猜测菜单微服务。修改时运行 `tests/microservice-source-badge-permission.spec.mjs` 与既有来源及宿主契约回归。
|
|
173
|
-
- 来源标识使用可点击的 `button` 语义,普通按钮为 `cursor:pointer`,可拖动菜单胶囊使用 `grab/grabbing`;拖动阈值、边界和 Tab 右键详情遵守 `microi-microservice
|
|
173
|
+
- 来源标识使用可点击的 `button` 语义,普通按钮为 `cursor:pointer`,可拖动菜单胶囊使用 `grab/grabbing`;拖动阈值、边界和 Tab 右键详情遵守 `microi-microservice`。点击后用可拖动、居中、亮/暗色适配的宿主 Element Plus 弹层展示(圆角遵循 ui-design,不强制大圆角) AppKey、PageKey、应用内/框架路由、版本、源码定位、运行入口、发布/挂载状态和租户坐标,并生成可复制的 MCP 修改指令;公开详情不得包含 DiyToken、访问密钥、私有配置或用户敏感字段。
|
|
174
174
|
- 框架水印覆盖 `100vw × 100vh` 且固定 `pointer-events:none`。开启后内容空值默认 `$SysTitle$ - $UserName$`(用户名为空回退账号)、方向默认 `DiagonalUp`、密度默认 `Comfortable`、字号空值/0 默认 14,透明度空值/0 默认 30;亮色、深色、弹层、键盘和减少动态效果模式都要验收。
|
|
175
175
|
|
|
176
176
|
### 用户级界面偏好(强制)
|
|
@@ -53,6 +53,12 @@ microi update --background --workspace "<工作区绝对路径>" --json
|
|
|
53
53
|
|
|
54
54
|
后台进程会依次检查/安装全局 CLI、幂等更新 Codex 插件与已存在 DSH 宿主的 profile bundle、执行 `microi ai init`、`microi doctor`、`microi codex status` 和 `microi dsh status`。`codex install --yes` 的 `--yes` 只保留给旧脚本兼容,不再表示必须先取得用户授权。VS Code 扩展同时使用官方扩展宿主的 `workbench.extensions.installExtension` / 自动更新机制;当前 Extension Host 不强制重载。
|
|
55
55
|
|
|
56
|
+
自动更新验收必须区分全局包、宿主插件与每个已连接工作区:
|
|
57
|
+
|
|
58
|
+
- `skills/` 必须包含当次发行的全部 Skill 正文、参考文件、脚本与资产;逐文件清单和摘要参与验收,不能只比较包版本或入口文件。目标路径不可写、复制失败或正文不完整时,`ai init` 必须返回失败,后台记录待重试或带警告状态,不能报告全部同步完成。本地自定义、源码检出及较新 bundle 按既有归属保护保留,并明确其边界。
|
|
59
|
+
- 更新节流必须识别目标工作区。工作区 A 已完成不能成为工作区 B 跳过同步的依据;B 已有连接时仍应投递自己的 AI/Skills/MCP 初始化,未配置连接的目录继续跳过。
|
|
60
|
+
- Codex 插件同样遵守较新提供者优先:旧 CLI 不得把已安装的较新版插件降级;同版插件还需核对内容,损坏不能仅凭版本号认定已同步。连接、模型配置及非吾码插件保持原值,运行中的会话仍按下一段规则处理。
|
|
61
|
+
|
|
56
62
|
当前运行中的扩展、CLI、Codex Router、DSH 会话与 MCP 必须继续使用已加载版本,禁止为了升级终止进程、强制重载窗口、结束对话或拒绝新任务。新版本写入版本隔离目录,只在后续新进程或宿主自然重启时接管。npm registry 不可用、版本无法解析、权限不足、文件被占用或安装失败时,写入 `~/.microi/updater/status.json` 并延后重试;可非模态提示“立即重试/查看日志”,但无论用户是否处理,当前、正在进行和新建工作都必须继续。禁止改用第三方 registry 或不明镜像冒充最新版。
|
|
57
63
|
|
|
58
64
|
## 自然语言入口规则
|
|
@@ -63,6 +63,7 @@ export function createOptionLabel(options = []) {
|
|
|
63
63
|
- 通过已授权接口取得当前关联记录的名称后,同时更新字段选项和同Key显示对象。仅补名称时用 `V8.Form.字段名 = {Key, Value}` 静默赋值,避免 `FormSet` 触发部门/人员等字段的异步联动或把纯查看标记为业务修改。存储字段仍为原Key,不能改成名称或默认第一条。
|
|
64
64
|
- 详情解析以持久主记录和真实权限为依据,不能靠请求传入的任意关联Id读取人员或外站资料。首屏之外的当前关联须单独授权解析,不扩大候选全集;返回仅包含选择器所需字段。
|
|
65
65
|
- 异步回填前核对表单实例、记录Id、依赖值和当前选择;换记录、换部门、改选后的迟到响应丢弃。失败不得伪造名称或清空已有业务关联。
|
|
66
|
+
- 候选数据异步返回或已选值补查后,还要刷新控件本地选中显示对象;`NeedResetDataSourse`、本地搜索候选缓存只能控制候选重置,不能阻止同保存键的 Label 更新。平台实现使用 `RefreshSelectedOptionLabels` 与 `resolveCurrentSelectOption`,只更新显示不发 `ModelChange`、不触发字段 V8、不写回旧记录。候选/补查缓存继续按身份、记录、配置与选中代次隔离,保留原授权补查协议;不得改保存格式或扩大候选全集来修复回显。
|
|
66
67
|
- 验收覆盖新增检索、编辑、只读详情、首屏外已有值、停用/越权关联和迟到响应;必须实际截图核对可读名称,不能仅看控件类型或接口返回成功。
|
|
67
68
|
|
|
68
69
|
### 生成 SQL 配置的字面量安全
|
|
@@ -18,7 +18,15 @@ description: Microi 吾码数据库结构与字典指南。用于通过实时 MC
|
|
|
18
18
|
## 核心模型
|
|
19
19
|
|
|
20
20
|
- `diy_table` 存储表单/表元数据和表级 V8 事件。
|
|
21
|
+
日志、评论、版本的十二个写入事件为顶层 `Data{Log|Comment|Version}{BeforeClient|BeforeServer|AfterServer|AfterClient}V8`,
|
|
22
|
+
类型 mediumtext、CodeEditor;不能写进字段 Config 或模块事件。先读实时 Schema,再由标准 MCP
|
|
23
|
+
发现/保存/回读和代码版本链维护,触发与事务边界见 `../v8-table-event/SKILL.md`。
|
|
24
|
+
`diy_comment.RequestHash` 为可空 varchar(64)、隐藏只读的服务器原评论请求摘要,
|
|
25
|
+
用于 BeforeServer 加工后的幂等核验;不作为客户端可配置写入字段或普通输出。
|
|
21
26
|
- `diy_field` 存储每张 DIY 表的字段,包括组件类型、校验、可见性、数据源、字段事件和模板 V8。
|
|
27
|
+
- 列表单元格对齐是顶层 `diy_field.TableAlign=auto/left/center/right`(空/null 自动),
|
|
28
|
+
普通字段说明的显示模式是顶层 `diy_table.FieldDescriptionMode=inline/tooltip`(空/null 为 inline)。
|
|
29
|
+
使用标准字段/表 MCP 更新和 Manifest 同名小驼峰属性;不放进 Config/DiyConfig,也不复用复合列 Align。
|
|
22
30
|
- DIY 表固定物理字段 `Id/CreateTime/UpdateTime/UserId/UserName/IsDeleted` 也必须有正常的 `diy_field` 元数据;设计器通过 `DisplayDefaultField` 默认隐藏,而不是把它们当异常字段。自然语言“修复审计字段/默认字段异常”应调用 `microi_repair_audit_fields`,由平台幂等补元数据,禁止直接用 SQL 临时修租户数据。
|
|
23
31
|
- `sys_menu` 将 DIY 表转换为菜单/模块页面,并存储查询、按钮、导入导出、卡片/移动端、工作流和权限相关的模块配置。
|
|
24
32
|
- `sys_apiengine` 存储接口引擎定义;通过 `V8.ApiEngine.Run(ApiEngineKey, params)` 调用。
|