@oj-module/cli 0.2.64 → 0.2.67

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 (369) hide show
  1. package/bin/.oj-version +1 -0
  2. package/bin/oj +4 -0
  3. package/devkit/README.md +18 -4
  4. package/devkit/SKILL.md +35 -3
  5. package/devkit/framework-dev.md +22 -11
  6. package/devkit/manual.md +161 -68
  7. package/devkit/menu-rules.md +4 -1
  8. package/devkit/publish-walkthrough.md +110 -37
  9. package/devkit/wecom-internal-app.md +7 -2
  10. package/devkit/wecom-multi-corp-links.md +163 -0
  11. package/package.json +3 -2
  12. package/shell-dist/assets/ahooks.2l850ymmh0.js +18 -0
  13. package/shell-dist/assets/antd-es-locale-zh_CN.1gjjsvxbf0.js +1 -0
  14. package/shell-dist/assets/antd-img-crop.196rkty480.js +99 -0
  15. package/shell-dist/assets/antd-locale-en_US.561tozx860.js +1 -0
  16. package/shell-dist/assets/antd-locale-zh_CN.1cmpmgzh70.js +1 -0
  17. package/shell-dist/assets/antd.uw1coq15l0.js +348 -0
  18. package/shell-dist/assets/clsx.jotilrt2e0.js +1 -0
  19. package/shell-dist/assets/contract-errors.2o17vz9u50.js +1 -0
  20. package/shell-dist/assets/contract.3h327o3mj0.js +57 -0
  21. package/shell-dist/assets/cssinjs.atgmhan7m0.js +3 -0
  22. package/shell-dist/assets/dayjs-plugin-advancedFormat.3vsyd2eis0.js +1 -0
  23. package/shell-dist/assets/dayjs-plugin-customParseFormat.13xhghv1d0.js +1 -0
  24. package/shell-dist/assets/dayjs-plugin-isoWeek.1fn1tw82p0.js +1 -0
  25. package/shell-dist/assets/dayjs-plugin-localeData.2rwbjp9nk0.js +1 -0
  26. package/shell-dist/assets/dayjs-plugin-quarterOfYear.2oqo1lcx80.js +1 -0
  27. package/shell-dist/assets/dayjs-plugin-relativeTime.2pqs3et4y0.js +1 -0
  28. package/shell-dist/assets/dayjs-plugin-weekOfYear.gvn9iph080.js +1 -0
  29. package/shell-dist/assets/dayjs-plugin-weekYear.2u78l3ex10.js +1 -0
  30. package/shell-dist/assets/dayjs-plugin-weekday.2d56a4tml0.js +1 -0
  31. package/shell-dist/assets/dayjs.pa60l6wjo0.js +1 -0
  32. package/shell-dist/assets/dnd-kit-core.1xyreig6r0.js +5 -0
  33. package/shell-dist/assets/dnd-kit-sortable.s94qciuft0.js +1 -0
  34. package/shell-dist/assets/dnd-kit-utilities.1umw4xphb0.js +1 -0
  35. package/shell-dist/assets/i18next.33zqofapj0.js +1 -0
  36. package/shell-dist/assets/icons-es-components-Context.365qmflwg0.js +1 -0
  37. package/shell-dist/assets/icons.159wjwals0.js +57 -0
  38. package/shell-dist/assets/{index-xZhmujjM.js → index.6alqyx6ae0.js} +21 -1
  39. package/shell-dist/assets/jsx-dev-runtime.3uibuc82f0.js +14 -0
  40. package/shell-dist/assets/jsx-runtime.h40xu4o5b0.js +14 -0
  41. package/shell-dist/assets/keepalive-for-react.xenu5vam70.js +1 -0
  42. package/shell-dist/assets/kit.37kr8ui390.js +1 -0
  43. package/shell-dist/assets/ky.1cgch7gu60.js +6 -0
  44. package/shell-dist/assets/motion-react.pjsxytvjs0.js +12 -0
  45. package/shell-dist/assets/motion.21tciqutg0.js +4 -0
  46. package/shell-dist/assets/nprogress.2nz76n9ny0.js +7 -0
  47. package/shell-dist/assets/ojm-dayjs-locale-zh-cn.3vr3beiyp0.js +9 -0
  48. package/shell-dist/assets/pinyin-pro.3v0mnxczn0.js +1 -0
  49. package/shell-dist/assets/pro-components.2kyot1vcl0.js +83 -0
  50. package/shell-dist/assets/react-countup.2x8idnr8y0.js +10 -0
  51. package/shell-dist/assets/react-dom-client.ick0v05ob0.js +43 -0
  52. package/shell-dist/assets/react-dom.2so9uxg3f0.js +22 -0
  53. package/shell-dist/assets/react-error-boundary.2dncdfj3b0.js +1 -0
  54. package/shell-dist/assets/react-i18next.auhvjhqv00.js +1 -0
  55. package/shell-dist/assets/react-jss.1ei6dr9e00.js +29 -0
  56. package/shell-dist/assets/react-query.3rln45ow00.js +1 -0
  57. package/shell-dist/assets/react-router-dom.3c6zld8h40.js +44 -0
  58. package/shell-dist/assets/react-router.2h9rebcv50.js +56 -0
  59. package/shell-dist/assets/react.1ew63mwts0.js +14 -0
  60. package/shell-dist/assets/runtime.2dgstpjsu0.js +21702 -0
  61. package/shell-dist/assets/simplebar-react.2g739uvai0.js +1 -0
  62. package/shell-dist/assets/spin-delay.yjeyj6iwp0.js +9 -0
  63. package/shell-dist/assets/tailwind-merge.125ehiqjw0.js +1 -0
  64. package/shell-dist/assets/use-sync-external-store-shim.1nz1pi9bb0.js +22 -0
  65. package/shell-dist/assets/zustand-middleware.1xaxjueme0.js +6 -0
  66. package/shell-dist/assets/zustand-react-shallow.pybayv1hx0.js +1 -0
  67. package/shell-dist/assets/zustand-react.9fsl9brxy0.js +1 -0
  68. package/shell-dist/assets/zustand-shallow.6cz0yyv9x0.js +1 -0
  69. package/shell-dist/assets/zustand-vanilla-shallow.3424monv50.js +1 -0
  70. package/shell-dist/assets/zustand-vanilla.1mo3ka3g30.js +1 -0
  71. package/shell-dist/assets/zustand.3gjgzlnqo0.js +1 -0
  72. package/shell-dist/index.html +67 -118
  73. package/shell-dist/versions.json +3 -3
  74. package/src/__tests__/publish-keygen.test.ts +157 -0
  75. package/src/__tests__/templates-migration-schema-parity.test.ts +540 -0
  76. package/src/__tests__/templates-schema-columns.test.ts +15 -2
  77. package/src/__tests__/templates-tenant-scope.test.ts +6 -2
  78. package/src/bundle.ts +8 -3
  79. package/src/cli.ts +17 -5
  80. package/src/dev.ts +15 -10
  81. package/src/esm-exports.ts +152 -70
  82. package/src/install.ts +11 -4
  83. package/src/keygen.ts +54 -0
  84. package/src/lifecycle/__tests__/bundle.test.ts +21 -3
  85. package/src/lifecycle/__tests__/fixtures/fixture-valid/api/src/demo-solution/manifest.yaml +1 -1
  86. package/src/lifecycle/__tests__/fixtures/fixture-valid/api/src/demo-solution/migrations/0001__init.sql +2 -2
  87. package/src/lifecycle/__tests__/fixtures/fixture-valid/api/src/demo-solution/schema.yaml +5 -2
  88. package/src/lifecycle/__tests__/fixtures/fixture-valid/manifest.yaml +1 -1
  89. package/src/lifecycle/__tests__/manifest-contract.test.ts +75 -3
  90. package/src/lifecycle/__tests__/smoke.test.ts +2 -2
  91. package/src/manifest-contract.ts +91 -8
  92. package/src/market/bootstrap.ts +26 -2
  93. package/src/market/command.ts +1 -0
  94. package/src/market/publish.ts +5 -1
  95. package/src/market/walkthrough.ts +24 -8
  96. package/src/shared-deps.ts +69 -19
  97. package/src/site-base.ts +4 -0
  98. package/src/site.ts +2 -0
  99. package/src/usage.ts +8 -4
  100. package/src/vendor.ts +5 -1
  101. package/templates/config.yaml +4 -2
  102. package/templates/init.include.yaml +8 -3
  103. package/templates/openapi.json +460 -1
  104. package/templates/src/app/api/_platform/_lifecycle/compensate.ts +136 -0
  105. package/templates/src/app/api/_platform/_lifecycle/installer.ts +71 -22
  106. package/templates/src/app/api/_platform/_lifecycle/lock.ts +23 -0
  107. package/templates/src/app/api/_platform/_lifecycle/steps/deploy-web.ts +28 -0
  108. package/templates/src/app/api/_platform/_lifecycle/steps/preflight.ts +46 -0
  109. package/templates/src/app/api/_platform/_lifecycle/steps/reload.ts +100 -36
  110. package/templates/src/app/api/_platform/_lifecycle/steps/smoke.ts +7 -15
  111. package/templates/src/app/api/_platform/_lifecycle/text-edit.ts +71 -19
  112. package/templates/src/app/api/_platform/_lifecycle/types.ts +26 -2
  113. package/templates/src/app/api/_platform/_lifecycle/uninstall.ts +93 -14
  114. package/templates/src/app/api/_platform/_shared/service/domain/settings.ts +8 -4
  115. package/templates/src/app/api/_platform/manifest.yaml +1 -0
  116. package/templates/src/app/api/_platform/market/api.ts +235 -10
  117. package/templates/src/app/api/_platform/migrations/0001__baseline.mysql.sql +178 -0
  118. package/templates/src/app/api/_platform/migrations/0001__baseline.pg.sql +173 -0
  119. package/templates/src/app/api/_platform/migrations/0001__baseline.sql +188 -0
  120. package/templates/src/app/api/_platform/migrations/0002__market_release.mysql.sql +17 -0
  121. package/templates/src/app/api/_platform/migrations/0002__market_release.pg.sql +16 -0
  122. package/templates/src/app/api/_platform/migrations/0002__market_release.sql +33 -0
  123. package/templates/src/app/api/_platform/schema.yaml +18 -0
  124. package/templates/src/app/api/_platform/seed.mysql.sql +10 -0
  125. package/templates/src/app/api/_platform/seed.pg.sql +10 -0
  126. package/templates/src/app/api/auth/_shared/wecom/client.ts +24 -4
  127. package/templates/src/app/api/home/migrations/0001__create_home_tables.mysql.sql +14 -0
  128. package/templates/src/app/api/home/migrations/0001__create_home_tables.pg.sql +14 -0
  129. package/templates/src/app/api/home/migrations/0002__tenant.pg.sql +4 -0
  130. package/templates/src/app/api/home/seed.mysql.sql +71 -0
  131. package/templates/src/app/api/home/seed.pg.sql +71 -0
  132. package/templates/src/app/api/notification/_shared/notify.ts +6 -6
  133. package/templates/src/app/api/notification/migrations/0001__create_notifications.mysql.sql +11 -0
  134. package/templates/src/app/api/notification/migrations/0001__create_notifications.pg.sql +11 -0
  135. package/templates/src/app/api/notification/migrations/0002__notifications_user.mysql.sql +8 -0
  136. package/templates/src/app/api/notification/migrations/0003__notifications_broadcast.mysql.sql +21 -0
  137. package/templates/src/app/api/notification/migrations/0003__notifications_broadcast.pg.sql +22 -0
  138. package/templates/src/app/api/notification/migrations/0004__notifications_broadcast_hidden.mysql.sql +10 -0
  139. package/templates/src/app/api/notification/migrations/0004__notifications_broadcast_hidden.pg.sql +11 -0
  140. package/templates/src/app/api/notification/migrations/0005__tenant.pg.sql +6 -0
  141. package/templates/src/app/api/notification/seed.mysql.sql +8 -0
  142. package/templates/src/app/api/notification/seed.pg.sql +11 -0
  143. package/templates/src/app/api/publish/_shared/identity.ts +69 -0
  144. package/templates/src/app/api/publish/api.ts +349 -0
  145. package/templates/src/app/api/publish/manifest.yaml +8 -0
  146. package/templates/src/app/api/publish/migrations/0001__publish_credential.mysql.sql +23 -0
  147. package/templates/src/app/api/publish/migrations/0001__publish_credential.pg.sql +23 -0
  148. package/templates/src/app/api/publish/migrations/0001__publish_credential.sql +39 -0
  149. package/templates/src/app/api/publish/schema.yaml +33 -0
  150. package/templates/src/app/api/system/login-methods/api.ts +2 -1
  151. package/templates/src/app/web/_platform/__client/api.schemas.ts +15 -0
  152. package/templates/src/app/web/_platform/__client/index.ts +25 -1
  153. package/templates/src/app/web/entry.ts +9 -5
  154. package/templates/src/app/web/home/pages/components/bar-chart.tsx +5 -3
  155. package/templates/src/app/web/home/pages/components/echarts-setup.ts +30 -0
  156. package/templates/src/app/web/home/pages/components/line-chart.tsx +5 -3
  157. package/templates/src/app/web/home/pages/components/pie-chart.tsx +6 -3
  158. package/templates/src/app/web/home/pages/index.tsx +3 -2
  159. package/templates/src/app/web/home/routes.ts +8 -2
  160. package/templates/src/app/web/login/locales/en-US.json +7 -1
  161. package/templates/src/app/web/login/locales/zh-CN.json +7 -1
  162. package/templates/src/app/web/login/pages/login.tsx +79 -86
  163. package/templates/src/app/web/login/routes.ts +54 -1
  164. package/templates/src/app/web/personal-center/locales/en-US.json +1 -0
  165. package/templates/src/app/web/personal-center/locales/zh-CN.json +1 -0
  166. package/templates/src/app/web/personal-center/pages/my-profile/index.tsx +5 -0
  167. package/templates/src/app/web/system/__client/api.schemas.ts +2 -1
  168. package/templates/src/app/web/system/locales/en-US.json +1 -8
  169. package/templates/src/app/web/system/locales/zh-CN.json +1 -8
  170. package/templates/src/app/web/system/pages/settings/index.tsx +17 -4
  171. package/templates/src/app/web/system/routes.ts +0 -6
  172. package/templates/src/oj-market/web/__tests__/CardGrid.test.tsx +33 -0
  173. package/templates/src/oj-market/web/__tests__/DetailDrawer.test.tsx +69 -0
  174. package/templates/src/oj-market/web/__tests__/marketClient.fake.ts +7 -1
  175. package/templates/src/oj-market/web/api/client.ts +3 -0
  176. package/templates/src/oj-market/web/api/defaultClient.ts +5 -0
  177. package/templates/src/oj-market/web/components/CardItem.tsx +44 -1
  178. package/templates/src/oj-market/web/components/DetailDrawer.tsx +17 -1
  179. package/templates/src/oj-market/web/entry.ts +31 -2
  180. package/templates/src/oj-market/web/locales/en-US.json +5 -1
  181. package/templates/src/oj-market/web/locales/zh-CN.json +5 -1
  182. package/templates/src/oj-market/web/publish/__client/api.schemas.ts +61 -0
  183. package/templates/src/oj-market/web/publish/__client/index.ts +164 -0
  184. package/templates/src/oj-market/web/publish/locales/en-US.json +80 -0
  185. package/templates/src/oj-market/web/publish/locales/zh-CN.json +80 -0
  186. package/templates/src/oj-market/web/publish/pages/history.tsx +112 -0
  187. package/templates/src/oj-market/web/publish/pages/index.tsx +196 -0
  188. package/templates/src/oj-market/web/publish/pages/model.ts +52 -0
  189. package/templates/src/oj-market/web/publish/pages/token-modal.tsx +82 -0
  190. package/templates/src/oj-market/web/publish/routes.ts +41 -0
  191. package/templates/src/oj-market/web/types.ts +30 -0
  192. package/templates/tests/lifecycle/compensate.spec.ts +207 -0
  193. package/templates/tests/lifecycle/deploy-smoke.spec.ts +38 -14
  194. package/templates/tests/lifecycle/installer.spec.ts +28 -9
  195. package/templates/tests/lifecycle/market-api.spec.ts +164 -12
  196. package/templates/tests/lifecycle/preflight.spec.ts +68 -0
  197. package/templates/tests/lifecycle/role-title-translate.spec.ts +2 -32
  198. package/templates/tests/lifecycle/text-edit.spec.ts +45 -27
  199. package/templates/tests/lifecycle/uninstall.spec.ts +36 -0
  200. package/templates/tests/publish-credential.spec.ts +354 -0
  201. package/templates/tests/publish-identity.spec.ts +44 -0
  202. package/templates/tests/wecom-client-timeout.spec.ts +33 -3
  203. package/templates/tests/wecom-landing.spec.ts +63 -1
  204. package/templates/tsconfig.paths.json +1 -0
  205. package/templates/web.config.ts +6 -4
  206. package/vendor/host-versions.json +3 -3
  207. package/shell-dist/assets/ahooks.js +0 -6909
  208. package/shell-dist/assets/antd-es-locale-zh_CN.js +0 -257
  209. package/shell-dist/assets/antd-img-crop.js +0 -1495
  210. package/shell-dist/assets/antd-locale-en_US.js +0 -374
  211. package/shell-dist/assets/antd-locale-zh_CN.js +0 -379
  212. package/shell-dist/assets/antd.js +0 -106874
  213. package/shell-dist/assets/clsx.js +0 -33
  214. package/shell-dist/assets/contract-errors.js +0 -30
  215. package/shell-dist/assets/contract.js +0 -18900
  216. package/shell-dist/assets/cssinjs.js +0 -2595
  217. package/shell-dist/assets/dayjs-plugin-advancedFormat.js +0 -98
  218. package/shell-dist/assets/dayjs-plugin-customParseFormat.js +0 -173
  219. package/shell-dist/assets/dayjs-plugin-isoWeek.js +0 -77
  220. package/shell-dist/assets/dayjs-plugin-localeData.js +0 -126
  221. package/shell-dist/assets/dayjs-plugin-quarterOfYear.js +0 -77
  222. package/shell-dist/assets/dayjs-plugin-relativeTime.js +0 -92
  223. package/shell-dist/assets/dayjs-plugin-weekOfYear.js +0 -73
  224. package/shell-dist/assets/dayjs-plugin-weekYear.js +0 -63
  225. package/shell-dist/assets/dayjs-plugin-weekday.js +0 -63
  226. package/shell-dist/assets/dayjs.js +0 -326
  227. package/shell-dist/assets/dnd-kit-core.js +0 -3601
  228. package/shell-dist/assets/dnd-kit-sortable.js +0 -717
  229. package/shell-dist/assets/dnd-kit-utilities.js +0 -340
  230. package/shell-dist/assets/i18next.js +0 -2321
  231. package/shell-dist/assets/icons-es-components-Context.js +0 -20
  232. package/shell-dist/assets/icons.js +0 -34961
  233. package/shell-dist/assets/jsx-dev-runtime.js +0 -75
  234. package/shell-dist/assets/jsx-runtime.js +0 -97
  235. package/shell-dist/assets/keepalive-for-react.js +0 -283
  236. package/shell-dist/assets/kit.js +0 -151
  237. package/shell-dist/assets/ky.js +0 -1427
  238. package/shell-dist/assets/motion-react.js +0 -13589
  239. package/shell-dist/assets/motion.js +0 -9959
  240. package/shell-dist/assets/nprogress.js +0 -314
  241. package/shell-dist/assets/ojm--ant-design-icons-es-icons-BarsOutlined.js +0 -7
  242. package/shell-dist/assets/ojm--ant-design-icons-es-icons-CalendarOutlined.js +0 -7
  243. package/shell-dist/assets/ojm--ant-design-icons-es-icons-CaretDownFilled.js +0 -7
  244. package/shell-dist/assets/ojm--ant-design-icons-es-icons-CaretDownOutlined.js +0 -7
  245. package/shell-dist/assets/ojm--ant-design-icons-es-icons-CaretUpOutlined.js +0 -7
  246. package/shell-dist/assets/ojm--ant-design-icons-es-icons-CheckCircleFilled.js +0 -7
  247. package/shell-dist/assets/ojm--ant-design-icons-es-icons-CheckOutlined.js +0 -7
  248. package/shell-dist/assets/ojm--ant-design-icons-es-icons-ClockCircleOutlined.js +0 -7
  249. package/shell-dist/assets/ojm--ant-design-icons-es-icons-CloseCircleFilled.js +0 -7
  250. package/shell-dist/assets/ojm--ant-design-icons-es-icons-CloseOutlined.js +0 -7
  251. package/shell-dist/assets/ojm--ant-design-icons-es-icons-CopyOutlined.js +0 -7
  252. package/shell-dist/assets/ojm--ant-design-icons-es-icons-DeleteOutlined.js +0 -7
  253. package/shell-dist/assets/ojm--ant-design-icons-es-icons-DoubleLeftOutlined.js +0 -7
  254. package/shell-dist/assets/ojm--ant-design-icons-es-icons-DoubleRightOutlined.js +0 -7
  255. package/shell-dist/assets/ojm--ant-design-icons-es-icons-DownOutlined.js +0 -7
  256. package/shell-dist/assets/ojm--ant-design-icons-es-icons-DownloadOutlined.js +0 -7
  257. package/shell-dist/assets/ojm--ant-design-icons-es-icons-EditOutlined.js +0 -7
  258. package/shell-dist/assets/ojm--ant-design-icons-es-icons-EllipsisOutlined.js +0 -7
  259. package/shell-dist/assets/ojm--ant-design-icons-es-icons-EnterOutlined.js +0 -7
  260. package/shell-dist/assets/ojm--ant-design-icons-es-icons-ExclamationCircleFilled.js +0 -7
  261. package/shell-dist/assets/ojm--ant-design-icons-es-icons-EyeInvisibleOutlined.js +0 -7
  262. package/shell-dist/assets/ojm--ant-design-icons-es-icons-EyeOutlined.js +0 -7
  263. package/shell-dist/assets/ojm--ant-design-icons-es-icons-FileOutlined.js +0 -7
  264. package/shell-dist/assets/ojm--ant-design-icons-es-icons-FileTextOutlined.js +0 -7
  265. package/shell-dist/assets/ojm--ant-design-icons-es-icons-FilterFilled.js +0 -7
  266. package/shell-dist/assets/ojm--ant-design-icons-es-icons-FolderOpenOutlined.js +0 -7
  267. package/shell-dist/assets/ojm--ant-design-icons-es-icons-FolderOutlined.js +0 -7
  268. package/shell-dist/assets/ojm--ant-design-icons-es-icons-HolderOutlined.js +0 -7
  269. package/shell-dist/assets/ojm--ant-design-icons-es-icons-InfoCircleFilled.js +0 -7
  270. package/shell-dist/assets/ojm--ant-design-icons-es-icons-LeftOutlined.js +0 -7
  271. package/shell-dist/assets/ojm--ant-design-icons-es-icons-LoadingOutlined.js +0 -7
  272. package/shell-dist/assets/ojm--ant-design-icons-es-icons-MinusOutlined.js +0 -7
  273. package/shell-dist/assets/ojm--ant-design-icons-es-icons-MinusSquareOutlined.js +0 -7
  274. package/shell-dist/assets/ojm--ant-design-icons-es-icons-PaperClipOutlined.js +0 -7
  275. package/shell-dist/assets/ojm--ant-design-icons-es-icons-PictureOutlined.js +0 -7
  276. package/shell-dist/assets/ojm--ant-design-icons-es-icons-PlusOutlined.js +0 -7
  277. package/shell-dist/assets/ojm--ant-design-icons-es-icons-PlusSquareOutlined.js +0 -7
  278. package/shell-dist/assets/ojm--ant-design-icons-es-icons-QuestionCircleOutlined.js +0 -7
  279. package/shell-dist/assets/ojm--ant-design-icons-es-icons-ReloadOutlined.js +0 -7
  280. package/shell-dist/assets/ojm--ant-design-icons-es-icons-RightOutlined.js +0 -7
  281. package/shell-dist/assets/ojm--ant-design-icons-es-icons-RotateLeftOutlined.js +0 -7
  282. package/shell-dist/assets/ojm--ant-design-icons-es-icons-RotateRightOutlined.js +0 -7
  283. package/shell-dist/assets/ojm--ant-design-icons-es-icons-SearchOutlined.js +0 -7
  284. package/shell-dist/assets/ojm--ant-design-icons-es-icons-StarFilled.js +0 -7
  285. package/shell-dist/assets/ojm--ant-design-icons-es-icons-SwapOutlined.js +0 -7
  286. package/shell-dist/assets/ojm--ant-design-icons-es-icons-SwapRightOutlined.js +0 -7
  287. package/shell-dist/assets/ojm--ant-design-icons-es-icons-UpOutlined.js +0 -7
  288. package/shell-dist/assets/ojm--ant-design-icons-es-icons-VerticalAlignTopOutlined.js +0 -7
  289. package/shell-dist/assets/ojm--ant-design-icons-es-icons-WarningFilled.js +0 -7
  290. package/shell-dist/assets/ojm--ant-design-icons-es-icons-ZoomInOutlined.js +0 -7
  291. package/shell-dist/assets/ojm--ant-design-icons-es-icons-ZoomOutOutlined.js +0 -7
  292. package/shell-dist/assets/ojm-dayjs-locale-zh-cn.js +0 -81
  293. package/shell-dist/assets/pinyin-pro.js +0 -25175
  294. package/shell-dist/assets/pro-components.js +0 -44627
  295. package/shell-dist/assets/react-countup.js +0 -525
  296. package/shell-dist/assets/react-dom-client.js +0 -12134
  297. package/shell-dist/assets/react-dom.js +0 -266
  298. package/shell-dist/assets/react-error-boundary.js +0 -141
  299. package/shell-dist/assets/react-i18next.js +0 -1773
  300. package/shell-dist/assets/react-jss.js +0 -4089
  301. package/shell-dist/assets/react-query.js +0 -3072
  302. package/shell-dist/assets/react-router-dom.js +0 -9927
  303. package/shell-dist/assets/react-router.js +0 -14584
  304. package/shell-dist/assets/react.js +0 -590
  305. package/shell-dist/assets/runtime.js +0 -28311
  306. package/shell-dist/assets/simplebar-react.js +0 -1119
  307. package/shell-dist/assets/spin-delay.js +0 -111
  308. package/shell-dist/assets/tailwind-merge.js +0 -3364
  309. package/shell-dist/assets/use-sync-external-store-shim.js +0 -130
  310. package/shell-dist/assets/zustand-middleware.js +0 -513
  311. package/shell-dist/assets/zustand-react-shallow.js +0 -27
  312. package/shell-dist/assets/zustand-react.js +0 -39
  313. package/shell-dist/assets/zustand-shallow.js +0 -22
  314. package/shell-dist/assets/zustand-vanilla-shallow.js +0 -71
  315. package/shell-dist/assets/zustand-vanilla.js +0 -40
  316. package/shell-dist/assets/zustand.js +0 -32
  317. package/templates/seed.mysql.sql +0 -6
  318. package/templates/seed.pg.sql +0 -6
  319. package/templates/src/app/api/_platform/migrations/0001__create_users.mysql.sql +0 -9
  320. package/templates/src/app/api/_platform/migrations/0001__create_users.pg.sql +0 -9
  321. package/templates/src/app/api/_platform/migrations/0001__create_users.sql +0 -7
  322. package/templates/src/app/api/_platform/migrations/0002__add_users_avatar_base64.mysql.sql +0 -3
  323. package/templates/src/app/api/_platform/migrations/0002__add_users_avatar_base64.sql +0 -2
  324. package/templates/src/app/api/_platform/migrations/0003__users_source_display_name.mysql.sql +0 -5
  325. package/templates/src/app/api/_platform/migrations/0003__users_source_display_name.sql +0 -5
  326. package/templates/src/app/api/_platform/migrations/0004__sys_rbac.mysql.sql +0 -70
  327. package/templates/src/app/api/_platform/migrations/0004__sys_rbac.pg.sql +0 -67
  328. package/templates/src/app/api/_platform/migrations/0004__sys_rbac.sql +0 -67
  329. package/templates/src/app/api/_platform/migrations/0005__users_must_change.mysql.sql +0 -3
  330. package/templates/src/app/api/_platform/migrations/0005__users_must_change.sql +0 -2
  331. package/templates/src/app/api/_platform/migrations/0006__users_is_forbidden.mysql.sql +0 -3
  332. package/templates/src/app/api/_platform/migrations/0006__users_is_forbidden.sql +0 -3
  333. package/templates/src/app/api/_platform/migrations/0007__users_email.sql +0 -3
  334. package/templates/src/app/api/_platform/migrations/0008__sys_refresh_token.mysql.sql +0 -10
  335. package/templates/src/app/api/_platform/migrations/0008__sys_refresh_token.pg.sql +0 -10
  336. package/templates/src/app/api/_platform/migrations/0008__sys_refresh_token.sql +0 -11
  337. package/templates/src/app/api/_platform/migrations/0009__sys_throttle.mysql.sql +0 -12
  338. package/templates/src/app/api/_platform/migrations/0009__sys_throttle.pg.sql +0 -12
  339. package/templates/src/app/api/_platform/migrations/0009__sys_throttle.sql +0 -13
  340. package/templates/src/app/api/_platform/migrations/0010__sys_solution_route.mysql.sql +0 -17
  341. package/templates/src/app/api/_platform/migrations/0010__sys_solution_route.pg.sql +0 -16
  342. package/templates/src/app/api/_platform/migrations/0010__sys_solution_route.sql +0 -18
  343. package/templates/src/app/api/_platform/migrations/0011__sys_setting_group_label.mysql.sql +0 -2
  344. package/templates/src/app/api/_platform/migrations/0011__sys_setting_group_label.sql +0 -4
  345. package/templates/src/app/api/_platform/migrations/0012__market_history.mysql.sql +0 -13
  346. package/templates/src/app/api/_platform/migrations/0012__market_history.pg.sql +0 -12
  347. package/templates/src/app/api/_platform/migrations/0012__market_history.sql +0 -14
  348. package/templates/src/app/api/_platform/migrations/0013__users_profile.sql +0 -4
  349. package/templates/src/app/api/_platform/migrations/0014__reg_source_seq.mysql.sql +0 -9
  350. package/templates/src/app/api/_platform/migrations/0014__reg_source_seq.pg.sql +0 -7
  351. package/templates/src/app/api/_platform/migrations/0014__reg_source_seq.sql +0 -8
  352. package/templates/src/app/api/_platform/migrations/0015__tenant.mysql.sql +0 -12
  353. package/templates/src/app/api/_platform/migrations/0015__tenant.pg.sql +0 -11
  354. package/templates/src/app/api/_platform/migrations/0015__tenant.sql +0 -44
  355. package/templates/src/app/api/_platform/migrations/0016__org.mysql.sql +0 -41
  356. package/templates/src/app/api/_platform/migrations/0016__org.pg.sql +0 -40
  357. package/templates/src/app/api/_platform/migrations/0016__org.sql +0 -62
  358. package/templates/src/app/api/_platform/migrations/0017__users_employee_no.mysql.sql +0 -7
  359. package/templates/src/app/api/_platform/migrations/0017__users_employee_no.pg.sql +0 -4
  360. package/templates/src/app/api/_platform/migrations/0017__users_employee_no.sql +0 -8
  361. package/templates/src/app/api/_platform/migrations/0018__sys_role_title_key.mysql.sql +0 -3
  362. package/templates/src/app/api/_platform/migrations/0018__sys_role_title_key.pg.sql +0 -3
  363. package/templates/src/app/api/_platform/migrations/0018__sys_role_title_key.sql +0 -8
  364. package/templates/src/app/web/system/pages/login-methods/index.tsx +0 -30
  365. /package/shell-dist/assets/{nprogress-css.js → nprogress-css.1cq2pzkre0.js} +0 -0
  366. /package/shell-dist/assets/{ojm-antd-es-button.js → ojm-antd-es-button.2uriphio50.js} +0 -0
  367. /package/shell-dist/assets/{ojm-antd-es-modal.js → ojm-antd-es-modal.bf3tgdh8v0.js} +0 -0
  368. /package/shell-dist/assets/{ojm-antd-es-slider.js → ojm-antd-es-slider.xyvptuhid0.js} +0 -0
  369. /package/shell-dist/assets/{ojm-antd-es-upload.js → ojm-antd-es-upload.13gx45e0g0.js} +0 -0
@@ -1,39 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __export = (target, all) => {
3
- for (var name in all)
4
- __defProp(target, name, { get: all[name], enumerable: true });
5
- };
6
-
7
- // ../../node_modules/.pnpm/zustand@5.0.15_@types+react@19.2.18_react@19.2.8_use-sync-external-store@1.6.0_react@19.2.8_/node_modules/zustand/esm/react.mjs
8
- var react_exports = {};
9
- __export(react_exports, {
10
- create: () => create,
11
- useStore: () => useStore
12
- });
13
- import React from "react";
14
- import { createStore } from "zustand/vanilla";
15
- var identity = (arg) => arg;
16
- function useStore(api, selector = identity) {
17
- const slice = React.useSyncExternalStore(
18
- api.subscribe,
19
- React.useCallback(() => selector(api.getState()), [api, selector]),
20
- React.useCallback(() => selector(api.getInitialState()), [api, selector])
21
- );
22
- React.useDebugValue(slice);
23
- return slice;
24
- }
25
- var createImpl = (createState) => {
26
- const api = createStore(createState);
27
- const useBoundStore = (selector) => useStore(api, selector);
28
- Object.assign(useBoundStore, api);
29
- return useBoundStore;
30
- };
31
- var create = ((createState) => createState ? createImpl(createState) : createImpl);
32
-
33
- // shell/.ojm-shim-zustand-react.mjs
34
- var ojm_shim_zustand_react_default = void 0 ?? react_exports;
35
- export {
36
- create,
37
- ojm_shim_zustand_react_default as default,
38
- useStore
39
- };
@@ -1,22 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __export = (target, all) => {
3
- for (var name in all)
4
- __defProp(target, name, { get: all[name], enumerable: true });
5
- };
6
-
7
- // ../../node_modules/.pnpm/zustand@5.0.15_@types+react@19.2.18_react@19.2.8_use-sync-external-store@1.6.0_react@19.2.8_/node_modules/zustand/esm/shallow.mjs
8
- var shallow_exports = {};
9
- __export(shallow_exports, {
10
- shallow: () => shallow,
11
- useShallow: () => useShallow
12
- });
13
- import { shallow } from "zustand/vanilla/shallow";
14
- import { useShallow } from "zustand/react/shallow";
15
-
16
- // shell/.ojm-shim-zustand-shallow.mjs
17
- var ojm_shim_zustand_shallow_default = void 0 ?? shallow_exports;
18
- export {
19
- ojm_shim_zustand_shallow_default as default,
20
- shallow,
21
- useShallow
22
- };
@@ -1,71 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __export = (target, all) => {
3
- for (var name in all)
4
- __defProp(target, name, { get: all[name], enumerable: true });
5
- };
6
-
7
- // ../../node_modules/.pnpm/zustand@5.0.15_@types+react@19.2.18_react@19.2.8_use-sync-external-store@1.6.0_react@19.2.8_/node_modules/zustand/esm/vanilla/shallow.mjs
8
- var shallow_exports = {};
9
- __export(shallow_exports, {
10
- shallow: () => shallow
11
- });
12
- var isIterable = (obj) => Symbol.iterator in obj;
13
- var hasIterableEntries = (value) => (
14
- // HACK: avoid checking entries type
15
- "entries" in value
16
- );
17
- var compareEntries = (valueA, valueB) => {
18
- const mapA = valueA instanceof Map ? valueA : new Map(valueA.entries());
19
- const mapB = valueB instanceof Map ? valueB : new Map(valueB.entries());
20
- if (mapA.size !== mapB.size) {
21
- return false;
22
- }
23
- for (const [key, value] of mapA) {
24
- if (!mapB.has(key) || !Object.is(value, mapB.get(key))) {
25
- return false;
26
- }
27
- }
28
- return true;
29
- };
30
- var compareIterables = (valueA, valueB) => {
31
- const iteratorA = valueA[Symbol.iterator]();
32
- const iteratorB = valueB[Symbol.iterator]();
33
- let nextA = iteratorA.next();
34
- let nextB = iteratorB.next();
35
- while (!nextA.done && !nextB.done) {
36
- if (!Object.is(nextA.value, nextB.value)) {
37
- return false;
38
- }
39
- nextA = iteratorA.next();
40
- nextB = iteratorB.next();
41
- }
42
- return !!nextA.done && !!nextB.done;
43
- };
44
- function shallow(valueA, valueB) {
45
- if (Object.is(valueA, valueB)) {
46
- return true;
47
- }
48
- if (typeof valueA !== "object" || valueA === null || typeof valueB !== "object" || valueB === null) {
49
- return false;
50
- }
51
- if (Object.getPrototypeOf(valueA) !== Object.getPrototypeOf(valueB)) {
52
- return false;
53
- }
54
- if (isIterable(valueA) && isIterable(valueB)) {
55
- if (hasIterableEntries(valueA) && hasIterableEntries(valueB)) {
56
- return compareEntries(valueA, valueB);
57
- }
58
- return compareIterables(valueA, valueB);
59
- }
60
- return compareEntries(
61
- { entries: () => Object.entries(valueA) },
62
- { entries: () => Object.entries(valueB) }
63
- );
64
- }
65
-
66
- // shell/.ojm-shim-zustand-vanilla-shallow.mjs
67
- var ojm_shim_zustand_vanilla_shallow_default = void 0 ?? shallow_exports;
68
- export {
69
- ojm_shim_zustand_vanilla_shallow_default as default,
70
- shallow
71
- };
@@ -1,40 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __export = (target, all) => {
3
- for (var name in all)
4
- __defProp(target, name, { get: all[name], enumerable: true });
5
- };
6
-
7
- // ../../node_modules/.pnpm/zustand@5.0.15_@types+react@19.2.18_react@19.2.8_use-sync-external-store@1.6.0_react@19.2.8_/node_modules/zustand/esm/vanilla.mjs
8
- var vanilla_exports = {};
9
- __export(vanilla_exports, {
10
- createStore: () => createStore
11
- });
12
- var createStoreImpl = (createState) => {
13
- let state;
14
- const listeners = /* @__PURE__ */ new Set();
15
- const setState = (partial, replace) => {
16
- const nextState = typeof partial === "function" ? partial(state) : partial;
17
- if (!Object.is(nextState, state)) {
18
- const previousState = state;
19
- state = (replace != null ? replace : typeof nextState !== "object" || nextState === null) ? nextState : Object.assign({}, state, nextState);
20
- listeners.forEach((listener) => listener(state, previousState));
21
- }
22
- };
23
- const getState = () => state;
24
- const getInitialState = () => initialState;
25
- const subscribe = (listener) => {
26
- listeners.add(listener);
27
- return () => listeners.delete(listener);
28
- };
29
- const api = { setState, getState, getInitialState, subscribe };
30
- const initialState = state = createState(setState, getState, api);
31
- return api;
32
- };
33
- var createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);
34
-
35
- // shell/.ojm-shim-zustand-vanilla.mjs
36
- var ojm_shim_zustand_vanilla_default = void 0 ?? vanilla_exports;
37
- export {
38
- createStore,
39
- ojm_shim_zustand_vanilla_default as default
40
- };
@@ -1,32 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __copyProps = (to, from, except, desc) => {
6
- if (from && typeof from === "object" || typeof from === "function") {
7
- for (let key of __getOwnPropNames(from))
8
- if (!__hasOwnProp.call(to, key) && key !== except)
9
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
- }
11
- return to;
12
- };
13
- var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
14
-
15
- // ../../node_modules/.pnpm/zustand@5.0.15_@types+react@19.2.18_react@19.2.8_use-sync-external-store@1.6.0_react@19.2.8_/node_modules/zustand/esm/index.mjs
16
- var esm_exports = {};
17
- __reExport(esm_exports, vanilla_star);
18
- __reExport(esm_exports, react_star);
19
- import * as vanilla_star from "zustand/vanilla";
20
- import * as react_star from "zustand/react";
21
-
22
- // shell/.ojm-shim-zustand.mjs
23
- var create2 = esm_exports["create"];
24
- var createStore2 = esm_exports["createStore"];
25
- var useStore2 = esm_exports["useStore"];
26
- var ojm_shim_zustand_default = esm_exports.default ?? esm_exports;
27
- export {
28
- create2 as create,
29
- createStore2 as createStore,
30
- ojm_shim_zustand_default as default,
31
- useStore2 as useStore
32
- };
@@ -1,6 +0,0 @@
1
- -- 系统设置默认值(PRD §4.3;注释内禁英文分号)
2
- INSERT IGNORE INTO sys_setting (key, module, `group`, type, value, default_value, label_key, secret, update_time) VALUES ('framework.site_title', 'framework', 'general', 'string', 'React Antd Admin', 'React Antd Admin', 'system:setting.site_title', 0, 0);
3
- -- 系统设置默认值(PRD §4.3;注释内禁英文分号;framework.market_cdn_url 缺省 /cdn = 本站点自供,免 setup)
4
- INSERT IGNORE INTO sys_setting (key, module, `group`, type, value, default_value, label_key, secret, update_time) VALUES ('framework.market_cdn_url', 'framework', 'security', 'string', '/cdn', '/cdn', 'system:setting.market_cdn_url', 0, 0);
5
- INSERT IGNORE INTO sys_setting (key, module, `group`, type, value, default_value, label_key, secret, update_time) VALUES ('ldap.enabled', 'ldap', 'login', 'bool', '0', '0', 'system:setting.ldap_enabled', 0, 0);
6
- INSERT IGNORE INTO sys_setting (key, module, `group`, type, value, default_value, label_key, secret, update_time) VALUES ('sso.enabled', 'sso', 'login', 'bool', '0', '0', 'system:setting.sso_enabled', 0, 0);
@@ -1,6 +0,0 @@
1
- -- 系统设置默认值(PRD §4.3;注释内禁英文分号)
2
- INSERT INTO sys_setting (key, module, "group", type, value, default_value, label_key, secret, update_time) VALUES ('framework.site_title', 'framework', 'general', 'string', 'React Antd Admin', 'React Antd Admin', 'system:setting.site_title', 0, 0) ON CONFLICT DO NOTHING;
3
- -- 系统设置默认值(PRD §4.3;注释内禁英文分号;framework.market_cdn_url 缺省 /cdn = 本站点自供,免 setup)
4
- INSERT INTO sys_setting (key, module, "group", type, value, default_value, label_key, secret, update_time) VALUES ('framework.market_cdn_url', 'framework', 'security', 'string', '/cdn', '/cdn', 'system:setting.market_cdn_url', 0, 0) ON CONFLICT DO NOTHING;
5
- INSERT INTO sys_setting (key, module, "group", type, value, default_value, label_key, secret, update_time) VALUES ('ldap.enabled', 'ldap', 'login', 'bool', '0', '0', 'system:setting.ldap_enabled', 0, 0) ON CONFLICT DO NOTHING;
6
- INSERT INTO sys_setting (key, module, "group", type, value, default_value, label_key, secret, update_time) VALUES ('sso.enabled', 'sso', 'login', 'bool', '0', '0', 'system:setting.sso_enabled', 0, 0) ON CONFLICT DO NOTHING;
@@ -1,9 +0,0 @@
1
- -- users 表 mysql 方言覆盖(方言覆盖文件必胜,通用文件兜底,oj-bin docs/migration.md §3.1;约定同 oj-wiki 先例)。
2
- -- 差异:AUTOINCREMENT → BIGINT AUTO_INCREMENT;username TEXT 改 VARCHAR(255)(mysql TEXT 不能带 UNIQUE);
3
- -- roles TEXT 默认值写表达式 DEFAULT ('[]')(mysql ≥8.0.13 对 TEXT/BLOB 只允许表达式默认值)。
4
- CREATE TABLE IF NOT EXISTS users (
5
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
6
- username VARCHAR(255) NOT NULL UNIQUE,
7
- password_hash TEXT NOT NULL,
8
- roles TEXT NOT NULL DEFAULT ('[]')
9
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
@@ -1,9 +0,0 @@
1
- -- users 表 pg 方言覆盖(方言覆盖文件必胜,oj-bin docs/migration.md §3.1;约定同 oj-wiki 先例)。
2
- -- 差异:AUTOINCREMENT → BIGSERIAL(GENERATED ALWAYS 系显式插值受限,SERIAL 系允许 seed 显式 id);
3
- -- username TEXT UNIQUE 在 pg 合法,保留 TEXT。
4
- CREATE TABLE IF NOT EXISTS users (
5
- id BIGSERIAL PRIMARY KEY,
6
- username TEXT NOT NULL UNIQUE,
7
- password_hash TEXT NOT NULL,
8
- roles TEXT NOT NULL DEFAULT '[]'
9
- );
@@ -1,7 +0,0 @@
1
- -- users 表结构(归属 _platform;结构只进 migrations,seed.sql 只放数据,S006 纪律)
2
- CREATE TABLE IF NOT EXISTS users (
3
- id INTEGER PRIMARY KEY AUTOINCREMENT,
4
- username TEXT NOT NULL UNIQUE,
5
- password_hash TEXT NOT NULL,
6
- roles TEXT NOT NULL DEFAULT '[]'
7
- )
@@ -1,3 +0,0 @@
1
- -- users 补 avatar_base64 的 mysql 方言覆盖(oj-wiki 0002 先例逐字同型)。
2
- -- 差异:TEXT 列默认值必须写成表达式 DEFAULT ('')。
3
- ALTER TABLE users ADD COLUMN avatar_base64 TEXT NOT NULL DEFAULT ('');
@@ -1,2 +0,0 @@
1
- -- users 表补 avatar_base64:personal-center 头像上传回写(multipart→base64 data URL)。
2
- ALTER TABLE users ADD COLUMN avatar_base64 TEXT NOT NULL DEFAULT '';
@@ -1,5 +0,0 @@
1
- -- users 扩展列 mysql 方言覆盖(oj-wiki 0005/0006 先例同型)。
2
- -- 差异:TEXT 默认值写表达式 DEFAULT ('local');DROP COLUMN mysql 8 原生支持,与基线同语法。
3
- ALTER TABLE users ADD COLUMN source TEXT NOT NULL DEFAULT ('local');
4
- ALTER TABLE users ADD COLUMN display_name TEXT;
5
- ALTER TABLE users DROP COLUMN roles;
@@ -1,5 +0,0 @@
1
- -- RBAC 地基:users 扩展列 + 移除 roles JSON 列(D10:sys_user_role 表为唯一权威源)
2
- -- sqlite 方言(ALTER TABLE DROP COLUMN 需 sqlite ≥ 3.35,Node 22 内建满足)
3
- ALTER TABLE users ADD COLUMN source TEXT NOT NULL DEFAULT 'local';
4
- ALTER TABLE users ADD COLUMN display_name TEXT;
5
- ALTER TABLE users DROP COLUMN roles;
@@ -1,70 +0,0 @@
1
- -- 框架 RBAC 六表 mysql 方言覆盖(sqlite 版见 0004__sys_rbac.sql;oj-wiki 先例同型)。
2
- -- 差异:保留字反引号(mysql 默认 sql_mode 下双引号是字符串字面量);
3
- -- AUTO_INCREMENT 替 AUTOINCREMENT,id 取 BIGINT(与 users 同宽度口径);
4
- -- 主键/默认值 TEXT → VARCHAR(255) / 表达式默认值(mysql TEXT 不能作主键、不能直接带默认值)。
5
- CREATE TABLE IF NOT EXISTS sys_setting (
6
- `key` VARCHAR(255) PRIMARY KEY,
7
- module TEXT NOT NULL,
8
- `group` TEXT NOT NULL,
9
- type TEXT NOT NULL DEFAULT ('string'),
10
- value TEXT,
11
- default_value TEXT,
12
- label_key TEXT,
13
- options TEXT,
14
- secret BIGINT NOT NULL DEFAULT 0,
15
- update_time BIGINT NOT NULL DEFAULT 0
16
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
17
-
18
- CREATE TABLE IF NOT EXISTS sys_oplog (
19
- id BIGINT AUTO_INCREMENT PRIMARY KEY,
20
- create_time BIGINT NOT NULL,
21
- user_id BIGINT NOT NULL DEFAULT 0,
22
- username TEXT NOT NULL DEFAULT ('system'),
23
- action TEXT NOT NULL,
24
- module TEXT NOT NULL DEFAULT ('framework'),
25
- version TEXT,
26
- target TEXT,
27
- detail TEXT,
28
- level BIGINT NOT NULL DEFAULT 6
29
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
30
- -- mysql 无 CREATE INDEX IF NOT EXISTS;迁移账本保证一次应用(oj-bin docs/migration.md 语义)
31
- CREATE INDEX idx_sys_oplog_time ON sys_oplog (create_time, id);
32
-
33
- CREATE TABLE IF NOT EXISTS sys_solution_route (
34
- name VARCHAR(255) NOT NULL,
35
- version VARCHAR(255) NOT NULL,
36
- category TEXT NOT NULL,
37
- path VARCHAR(255) NOT NULL,
38
- `order` BIGINT NOT NULL DEFAULT 0,
39
- title_key TEXT,
40
- enabled BIGINT NOT NULL DEFAULT 1,
41
- PRIMARY KEY (name, version, path)
42
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
43
-
44
- CREATE TABLE IF NOT EXISTS sys_role (
45
- name VARCHAR(255) PRIMARY KEY,
46
- module TEXT NOT NULL,
47
- title TEXT,
48
- description TEXT,
49
- builtin BIGINT NOT NULL DEFAULT 0,
50
- deprecated BIGINT NOT NULL DEFAULT 0
51
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
52
-
53
- CREATE TABLE IF NOT EXISTS sys_permission (
54
- code VARCHAR(255) PRIMARY KEY,
55
- module TEXT NOT NULL,
56
- title_key TEXT,
57
- deprecated BIGINT NOT NULL DEFAULT 0
58
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
59
-
60
- CREATE TABLE IF NOT EXISTS sys_role_permission (
61
- role_name VARCHAR(255) NOT NULL,
62
- permission_code VARCHAR(255) NOT NULL,
63
- PRIMARY KEY (role_name, permission_code)
64
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
65
-
66
- CREATE TABLE IF NOT EXISTS sys_user_role (
67
- user_id BIGINT NOT NULL,
68
- role_name VARCHAR(255) NOT NULL,
69
- PRIMARY KEY (user_id, role_name)
70
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
@@ -1,67 +0,0 @@
1
- -- 框架 RBAC 六表 pg 方言覆盖(sqlite 版见 0004__sys_rbac.sql;oj-wiki 先例同型)。
2
- -- 差异:双引号保留字与 TEXT 主键 pg 原生支持(与 sqlite 同语法);id 取 BIGSERIAL(同 0001.pg 先例)。
3
- CREATE TABLE IF NOT EXISTS sys_setting (
4
- key TEXT PRIMARY KEY,
5
- module TEXT NOT NULL,
6
- "group" TEXT NOT NULL,
7
- type TEXT NOT NULL DEFAULT 'string',
8
- value TEXT,
9
- default_value TEXT,
10
- label_key TEXT,
11
- options TEXT,
12
- secret INTEGER NOT NULL DEFAULT 0,
13
- update_time INTEGER NOT NULL DEFAULT 0
14
- );
15
-
16
- CREATE TABLE IF NOT EXISTS sys_oplog (
17
- id BIGSERIAL PRIMARY KEY,
18
- create_time INTEGER NOT NULL,
19
- user_id INTEGER NOT NULL DEFAULT 0,
20
- username TEXT NOT NULL DEFAULT 'system',
21
- action TEXT NOT NULL,
22
- module TEXT NOT NULL DEFAULT 'framework',
23
- version TEXT,
24
- target TEXT,
25
- detail TEXT,
26
- level INTEGER NOT NULL DEFAULT 6
27
- );
28
- CREATE INDEX IF NOT EXISTS idx_sys_oplog_time ON sys_oplog (create_time, id);
29
-
30
- CREATE TABLE IF NOT EXISTS sys_solution_route (
31
- name TEXT NOT NULL,
32
- version TEXT NOT NULL,
33
- category TEXT NOT NULL,
34
- path TEXT NOT NULL,
35
- "order" INTEGER NOT NULL DEFAULT 0,
36
- title_key TEXT,
37
- enabled INTEGER NOT NULL DEFAULT 1,
38
- PRIMARY KEY (name, version, path)
39
- );
40
-
41
- CREATE TABLE IF NOT EXISTS sys_role (
42
- name TEXT PRIMARY KEY,
43
- module TEXT NOT NULL,
44
- title TEXT,
45
- description TEXT,
46
- builtin INTEGER NOT NULL DEFAULT 0,
47
- deprecated INTEGER NOT NULL DEFAULT 0
48
- );
49
-
50
- CREATE TABLE IF NOT EXISTS sys_permission (
51
- code TEXT PRIMARY KEY,
52
- module TEXT NOT NULL,
53
- title_key TEXT,
54
- deprecated INTEGER NOT NULL DEFAULT 0
55
- );
56
-
57
- CREATE TABLE IF NOT EXISTS sys_role_permission (
58
- role_name TEXT NOT NULL,
59
- permission_code TEXT NOT NULL,
60
- PRIMARY KEY (role_name, permission_code)
61
- );
62
-
63
- CREATE TABLE IF NOT EXISTS sys_user_role (
64
- user_id INTEGER NOT NULL,
65
- role_name TEXT NOT NULL,
66
- PRIMARY KEY (user_id, role_name)
67
- );
@@ -1,67 +0,0 @@
1
- -- 框架 RBAC 六表(设计文档 §5.9.2;判权权威源 + 升级稳定性 deprecated 的地基)
2
- -- sqlite 方言;mysql/pg 方言变体在阶段 A 冒烟时补齐
3
- CREATE TABLE IF NOT EXISTS sys_setting (
4
- key TEXT PRIMARY KEY,
5
- module TEXT NOT NULL,
6
- "group" TEXT NOT NULL,
7
- type TEXT NOT NULL DEFAULT 'string',
8
- value TEXT,
9
- default_value TEXT,
10
- label_key TEXT,
11
- options TEXT,
12
- secret INTEGER NOT NULL DEFAULT 0,
13
- update_time INTEGER NOT NULL DEFAULT 0
14
- );
15
-
16
- CREATE TABLE IF NOT EXISTS sys_oplog (
17
- id INTEGER PRIMARY KEY AUTOINCREMENT,
18
- create_time INTEGER NOT NULL,
19
- user_id INTEGER NOT NULL DEFAULT 0,
20
- username TEXT NOT NULL DEFAULT 'system',
21
- action TEXT NOT NULL,
22
- module TEXT NOT NULL DEFAULT 'framework',
23
- version TEXT,
24
- target TEXT,
25
- detail TEXT,
26
- level INTEGER NOT NULL DEFAULT 6
27
- );
28
- CREATE INDEX IF NOT EXISTS idx_sys_oplog_time ON sys_oplog (create_time, id);
29
-
30
- CREATE TABLE IF NOT EXISTS sys_solution_route (
31
- name TEXT NOT NULL,
32
- version TEXT NOT NULL,
33
- category TEXT NOT NULL,
34
- path TEXT NOT NULL,
35
- "order" INTEGER NOT NULL DEFAULT 0,
36
- title_key TEXT,
37
- enabled INTEGER NOT NULL DEFAULT 1,
38
- PRIMARY KEY (name, version, path)
39
- );
40
-
41
- CREATE TABLE IF NOT EXISTS sys_role (
42
- name TEXT PRIMARY KEY,
43
- module TEXT NOT NULL,
44
- title TEXT,
45
- description TEXT,
46
- builtin INTEGER NOT NULL DEFAULT 0,
47
- deprecated INTEGER NOT NULL DEFAULT 0
48
- );
49
-
50
- CREATE TABLE IF NOT EXISTS sys_permission (
51
- code TEXT PRIMARY KEY,
52
- module TEXT NOT NULL,
53
- title_key TEXT,
54
- deprecated INTEGER NOT NULL DEFAULT 0
55
- );
56
-
57
- CREATE TABLE IF NOT EXISTS sys_role_permission (
58
- role_name TEXT NOT NULL,
59
- permission_code TEXT NOT NULL,
60
- PRIMARY KEY (role_name, permission_code)
61
- );
62
-
63
- CREATE TABLE IF NOT EXISTS sys_user_role (
64
- user_id INTEGER NOT NULL,
65
- role_name TEXT NOT NULL,
66
- PRIMARY KEY (user_id, role_name)
67
- );
@@ -1,3 +0,0 @@
1
- -- users 增 must_change 的 mysql 方言覆盖(oj-wiki 0006 先例逐字同型)。
2
- -- 差异:整型列取 BIGINT(与 users id 同宽度口径)。
3
- ALTER TABLE users ADD COLUMN must_change BIGINT NOT NULL DEFAULT 0;
@@ -1,2 +0,0 @@
1
- -- 账号生命周期:must_change 首登强制改密(D12 seed 超管 / 建号默认 1,设计文档 §4A)
2
- ALTER TABLE users ADD COLUMN must_change INTEGER NOT NULL DEFAULT 0;
@@ -1,3 +0,0 @@
1
- -- users 增 is_forbidden 的 mysql 方言覆盖(oj-wiki 0005 先例逐字同型)。
2
- -- 差异:整型列取 BIGINT(与 users id 同宽度口径)。
3
- ALTER TABLE users ADD COLUMN is_forbidden BIGINT NOT NULL DEFAULT 0;
@@ -1,3 +0,0 @@
1
- -- 禁用标记:is_forbidden=1 即拒(判权出口顺带校验,设计文档 D10/D14);登录链 B1 复用同一列
2
- -- A3 实现期发现 A1 遗漏该列(设计文档全篇引用而迁移未落),补此迁移并回填 §9 反常识
3
- ALTER TABLE users ADD COLUMN is_forbidden INTEGER NOT NULL DEFAULT 0;
@@ -1,3 +0,0 @@
1
- -- 通讯录字段:email(设计 §4B 检索/详情引用而 A1 未落,A7 实现期补——is_forbidden 同先例,回填 §9)
2
- -- 可空:本地账号无邮箱(LDAP/SSO JIT 建号回填)
3
- ALTER TABLE users ADD COLUMN email TEXT;
@@ -1,10 +0,0 @@
1
- -- refresh token 存储 mysql 方言覆盖(sqlite 版见 0008__sys_refresh_token.sql;oj-wiki 先例同型)。
2
- -- 差异:整型列取 BIGINT;CREATE INDEX 无 IF NOT EXISTS(迁移账本一次应用语义兜底)。
3
- CREATE TABLE IF NOT EXISTS sys_refresh_token (
4
- token_hash VARCHAR(255) PRIMARY KEY,
5
- user_id BIGINT NOT NULL,
6
- expires_at BIGINT NOT NULL,
7
- revoked BIGINT NOT NULL DEFAULT 0,
8
- created_at BIGINT NOT NULL
9
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
10
- CREATE INDEX idx_sys_refresh_token_user ON sys_refresh_token (user_id);
@@ -1,10 +0,0 @@
1
- -- refresh token 存储 pg 方言覆盖(sqlite 版见 0008__sys_refresh_token.sql;oj-wiki 先例同型)。
2
- -- 差异:无(TEXT 主键与 CREATE INDEX IF NOT EXISTS pg 原生支持,与 sqlite 同语法)。
3
- CREATE TABLE IF NOT EXISTS sys_refresh_token (
4
- token_hash TEXT PRIMARY KEY,
5
- user_id INTEGER NOT NULL,
6
- expires_at INTEGER NOT NULL,
7
- revoked INTEGER NOT NULL DEFAULT 0,
8
- created_at INTEGER NOT NULL
9
- );
10
- CREATE INDEX IF NOT EXISTS idx_sys_refresh_token_user ON sys_refresh_token (user_id);
@@ -1,11 +0,0 @@
1
- -- refresh token 存储(设计 §3.1:不透明随机串,DB 存 SHA-256 哈希——A1 六表未含,B1 实现期补)。
2
- -- 轮换作旧(revoked 标记);reuse 检测 = 已吊销串二次出现 → 按 user_id 全族吊销 + 审计;
3
- -- is_forbidden=1 或重置口令 → 级联删该用户全部记录(§3.1 吊销联动)。
4
- CREATE TABLE IF NOT EXISTS sys_refresh_token (
5
- token_hash TEXT PRIMARY KEY,
6
- user_id INTEGER NOT NULL,
7
- expires_at INTEGER NOT NULL,
8
- revoked INTEGER NOT NULL DEFAULT 0,
9
- created_at INTEGER NOT NULL
10
- );
11
- CREATE INDEX IF NOT EXISTS idx_sys_refresh_token_user ON sys_refresh_token (user_id);
@@ -1,12 +0,0 @@
1
- -- 限速/登录节流状态落库 mysql 方言覆盖(sqlite 版见 0009__sys_throttle.sql;oj-wiki 先例同型)。
2
- -- 差异:整型列取 BIGINT;rate_key 避开 MySQL 保留字 key。
3
- CREATE TABLE IF NOT EXISTS sys_rate_window (
4
- rate_key VARCHAR(255) PRIMARY KEY,
5
- window_start BIGINT NOT NULL,
6
- count BIGINT NOT NULL
7
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
8
- CREATE TABLE IF NOT EXISTS sys_login_throttle (
9
- pair_key VARCHAR(255) PRIMARY KEY,
10
- fail_count BIGINT NOT NULL,
11
- blocked_until BIGINT NOT NULL DEFAULT 0
12
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
@@ -1,12 +0,0 @@
1
- -- 限速/登录节流状态落库 pg 方言覆盖(sqlite 版见 0009__sys_throttle.sql;oj-wiki 先例同型)。
2
- -- 差异:无(TEXT 主键三方言同语法)。
3
- CREATE TABLE IF NOT EXISTS sys_rate_window (
4
- rate_key TEXT PRIMARY KEY,
5
- window_start INTEGER NOT NULL,
6
- count INTEGER NOT NULL
7
- );
8
- CREATE TABLE IF NOT EXISTS sys_login_throttle (
9
- pair_key TEXT PRIMARY KEY,
10
- fail_count INTEGER NOT NULL,
11
- blocked_until INTEGER NOT NULL DEFAULT 0
12
- );
@@ -1,13 +0,0 @@
1
- -- 限速/登录节流状态落库(反常识修正:oj 运行时每请求重建模块实例,进程内 Map 不跨请求存活——
2
- -- B5 连败阈值与接口滑动窗口在真实运行时恒失效;状态持久化后重启保留、多实例天然同源,
3
- -- 原先「多实例换 Redis」的已知上限就此消除)。
4
- CREATE TABLE IF NOT EXISTS sys_rate_window (
5
- rate_key TEXT PRIMARY KEY,
6
- window_start INTEGER NOT NULL,
7
- count INTEGER NOT NULL
8
- );
9
- CREATE TABLE IF NOT EXISTS sys_login_throttle (
10
- pair_key TEXT PRIMARY KEY,
11
- fail_count INTEGER NOT NULL,
12
- blocked_until INTEGER NOT NULL DEFAULT 0
13
- );
@@ -1,17 +0,0 @@
1
- -- 方案注册路由表重构 mysql 方言覆盖(sqlite 版见 0010__sys_solution_route.sql)。
2
- -- 差异:保留字反引号;整型列取 BIGINT;主键 TEXT → VARCHAR(255);
3
- -- ALTER ADD COLUMN / CREATE INDEX 无 IF NOT EXISTS(迁移账本一次应用语义兜底,同 0008)。
4
- ALTER TABLE sys_setting ADD COLUMN deprecated BIGINT NOT NULL DEFAULT 0;
5
-
6
- DROP TABLE IF EXISTS sys_solution_route;
7
- CREATE TABLE sys_solution_route (
8
- path VARCHAR(255) PRIMARY KEY,
9
- module TEXT NOT NULL,
10
- category TEXT NOT NULL,
11
- `order` BIGINT NOT NULL DEFAULT 0,
12
- title_key TEXT,
13
- required_permission TEXT,
14
- deprecated BIGINT NOT NULL DEFAULT 0,
15
- enabled BIGINT NOT NULL DEFAULT 1
16
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
17
- CREATE INDEX idx_sys_solution_route_module ON sys_solution_route (module);
@@ -1,16 +0,0 @@
1
- -- 方案注册路由表重构 pg 方言覆盖(sqlite 版见 0010__sys_solution_route.sql)。
2
- -- 差异:无(ADD COLUMN / DROP TABLE / 双引号保留字 / CREATE INDEX IF NOT EXISTS pg 原生支持)。
3
- ALTER TABLE sys_setting ADD COLUMN deprecated INTEGER NOT NULL DEFAULT 0;
4
-
5
- DROP TABLE IF EXISTS sys_solution_route;
6
- CREATE TABLE sys_solution_route (
7
- path TEXT PRIMARY KEY,
8
- module TEXT NOT NULL,
9
- category TEXT NOT NULL,
10
- "order" INTEGER NOT NULL DEFAULT 0,
11
- title_key TEXT,
12
- required_permission TEXT,
13
- deprecated INTEGER NOT NULL DEFAULT 0,
14
- enabled INTEGER NOT NULL DEFAULT 1
15
- );
16
- CREATE INDEX IF NOT EXISTS idx_sys_solution_route_module ON sys_solution_route (module);
@@ -1,18 +0,0 @@
1
- -- 方案注册路由表重构(P1-8,D10 注册唯一出口的落点):0004 版以 (name, version, path) 为主键、
2
- -- 无 module/required_permission/deprecated 列,与「站点级路由注册(path 唯一 + 声明消失标
3
- -- deprecated,镜像 AC2-3/4)」的语义不兼容;旧表从未被运行时读写(仅存在性断言),DROP 重建零数据损失。
4
- -- 同时为 sys_setting 补 deprecated 列:设置定义行声明消失同样保留标 deprecated(P1-8 register 语义)。
5
- ALTER TABLE sys_setting ADD COLUMN deprecated INTEGER NOT NULL DEFAULT 0;
6
-
7
- DROP TABLE IF EXISTS sys_solution_route;
8
- CREATE TABLE sys_solution_route (
9
- path TEXT PRIMARY KEY,
10
- module TEXT NOT NULL,
11
- category TEXT NOT NULL,
12
- "order" INTEGER NOT NULL DEFAULT 0,
13
- title_key TEXT,
14
- required_permission TEXT,
15
- deprecated INTEGER NOT NULL DEFAULT 0,
16
- enabled INTEGER NOT NULL DEFAULT 1
17
- );
18
- CREATE INDEX IF NOT EXISTS idx_sys_solution_route_module ON sys_solution_route (module);
@@ -1,2 +0,0 @@
1
- -- sys_setting 补 group_label_key mysql 方言覆盖(0002/0003 先例同型:TEXT 可空列与基线同语法)。
2
- ALTER TABLE sys_setting ADD COLUMN group_label_key TEXT;