@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
package/src/usage.ts CHANGED
@@ -245,11 +245,13 @@ export const HELP_GROUPS: HelpGroup[] = [
245
245
  { raw: "--name <name>", zh: "覆盖文件名推导的方案名", en: "Override the solution name derived from the file name" },
246
246
  { raw: "--version <version>", zh: "覆盖文件名推导的版本", en: "Override the version derived from the file name" },
247
247
  { raw: "--registry <url>", zh: "从指定 registry 源安装(白名单在服务端;旧站点 API < 0.2.0 不支持)", en: "Install from the specified registry source (allowlist is server-side; sites with API < 0.2.0 are unsupported)" },
248
+ { raw: "--force", zh: "强制重装配(oj 0.1.123+ reloadConfig(force)):旁路 unchanged 幂等短路,强制宿主重做一次装配", en: "Force re-assembly (oj 0.1.123+ reloadConfig(force)): bypass the unchanged idempotent short-circuit and force a re-assembly" },
248
249
  { raw: "--locale <locale>", zh: "终态文案语言 zh-CN|en-US", en: "Language of the final status message zh-CN|en-US" },
250
+ { raw: "--force", zh: "强制重装配(绕过「unchanged=已是最新装配」幂等短路,要求宿主重跑一次 reload;oj ≥ v0.1.123)", en: "Force a reload even if unchanged (bypass the idempotent short-circuit; requires oj ≥ v0.1.123)" },
249
251
  ],
250
252
  detail: {
251
- zh: "ojm install <file.tgz | name[@version] | @<scope>/<name>[@version]> [--site-url <u>] [--user <u>] [--pass <p>] [--name <n>] [--version <v>] [--registry <r>] [--locale <zh-CN|en-US>]\n 本地 tgz 走 file 上传(<name>-<version>.tgz 文件名推导身份,可 --name/--version 覆盖);name[@version] 走 CDN 市场源;@<scope>/<name>[@version] --registry <url> 走外部 registry 源(目录键由 CLI 归一为物理名 slug,白名单在服务端)\n 登录 → 提交 → 轮询任务至终态并打印结果(失败附原因 + 指引)\n 站点寻址:--site-url/--user/--pass,或环境变量 OJM_SITE_URL / OJM_USER / OJM_PASS",
252
- en: "ojm install <file.tgz | name[@version] | @<scope>/<name>[@version]> [--site-url <u>] [--user <u>] [--pass <p>] [--name <n>] [--version <v>] [--registry <r>] [--locale <zh-CN|en-US>]\n Local tgz goes through file upload (identity derived from the <name>-<version>.tgz file name, overridable via --name/--version); name[@version] goes through the CDN marketplace; @<scope>/<name>[@version] --registry <url> goes through an external registry source (the directory key is normalized to the physical slug by the CLI; allowlist is server-side)\n Login → submit → poll the task to a terminal state and print the result (failures include the reason + guidance)\n Site addressing: --site-url/--user/--pass, or env vars OJM_SITE_URL / OJM_USER / OJM_PASS",
253
+ zh: "ojm install <file.tgz | name[@version] | @<scope>/<name>[@version]> [--site-url <u>] [--user <u>] [--pass <p>] [--name <n>] [--version <v>] [--registry <r>] [--force] [--locale <zh-CN|en-US>]\n 本地 tgz 走 file 上传(<name>-<version>.tgz 文件名推导身份,可 --name/--version 覆盖);name[@version] 走 CDN 市场源;@<scope>/<name>[@version] --registry <url> 走外部 registry 源(目录键由 CLI 归一为物理名 slug,白名单在服务端)\n 登录 → 提交 → 轮询任务至终态并打印结果(失败附原因 + 指引)\n --force:强制重装配(oj 0.1.123+),旁路「已是最新装配」幂等短路\n 站点寻址:--site-url/--user/--pass,或环境变量 OJM_SITE_URL / OJM_USER / OJM_PASS",
254
+ en: "ojm install <file.tgz | name[@version] | @<scope>/<name>[@version]> [--site-url <u>] [--user <u>] [--pass <p>] [--name <n>] [--version <v>] [--registry <r>] [--force] [--locale <zh-CN|en-US>]\n Local tgz goes through file upload (identity derived from the <name>-<version>.tgz file name, overridable via --name/--version); name[@version] goes through the CDN marketplace; @<scope>/<name>[@version] --registry <url> goes through an external registry source (the directory key is normalized to the physical slug by the CLI; allowlist is server-side)\n Login → submit → poll the task to a terminal state and print the result (failures include the reason + guidance)\n --force: force re-assembly (oj 0.1.123+), bypassing the \"already latest assembly\" idempotent short-circuit\n Site addressing: --site-url/--user/--pass, or env vars OJM_SITE_URL / OJM_USER / OJM_PASS",
253
255
  },
254
256
  },
255
257
  {
@@ -364,12 +366,14 @@ export const HELP_GROUPS: HelpGroup[] = [
364
366
  en: "Generate an Ed25519 signing key pair",
365
367
  options: [
366
368
  { raw: "--id <id>", zh: "发布方 key id(形如 publisher.key)", en: "Publisher key id (e.g. publisher.key)" },
369
+ { raw: "--credential <token>", zh: "在线兑换发布凭证(也读 OJM_PUBLISH_CREDENTIAL;与 --id 互斥)", en: "Redeem a publishing credential online (also reads OJM_PUBLISH_CREDENTIAL; mutually exclusive with --id)" },
370
+ { raw: "--site-url <url>", zh: "兑换站点(缺省 OJM_SITE_URL / http://127.0.0.1:9778)", en: "Site for redemption (defaults to OJM_SITE_URL / http://127.0.0.1:9778)" },
367
371
  { raw: "--out <dir>", zh: "输出目录(缺省 ~/.ojm/keys/<id>/;指到工程树内须 --yes)", en: "Output directory (default ~/.ojm/keys/<id>/; pointing inside the project tree requires --yes)" },
368
372
  { raw: "--yes", zh: "确认私钥落盘到工程树内(私钥入仓即泄露)", en: "Acknowledge writing the private key inside the project tree (a private key in the repo is leaked)" },
369
373
  ],
370
374
  detail: {
371
- zh: "ojm keygen --id <publisher.id> [--out <dir>] [--yes]\n 私钥默认 ~/.ojm/keys/<id>/ 永不出目录;打印公钥 hex 供 ojm trust add / 模板回填",
372
- en: "ojm keygen --id <publisher.id> [--out <dir>] [--yes]\n The private key stays under ~/.ojm/keys/<id>/ by default; prints the public key hex for ojm trust add / template backfill",
375
+ zh: "ojm keygen --id <publisher.id> [--out <dir>] [--yes]\n 私钥默认 ~/.ojm/keys/<id>/ 永不出目录;打印公钥 hex 供 ojm trust add / 模板回填\n\nojm keygen --credential <token> [--site-url <url>] [--out <dir>] [--yes]\n 凭证兑换:key_id 由站点按「产品名.用户名」算好下发,CLI 不推导;凭证一次性,兑换即作废\n 失败(过期/已用/已撤销/网络)不落任何密钥文件;兑换成功再走与离线版完全相同的落盘流程",
376
+ en: "ojm keygen --id <publisher.id> [--out <dir>] [--yes]\n The private key stays under ~/.ojm/keys/<id>/ by default; prints the public key hex for ojm trust add / template backfill\n\nojm keygen --credential <token> [--site-url <url>] [--out <dir>] [--yes]\n Credential redemption: key_id is derived server-side as <product>.<username>, the CLI never re-derives it; the credential is single-use\n Any failure (expired/used/revoked/network) writes no key files; on success the same keygen flow as the offline path runs",
373
377
  },
374
378
  },
375
379
  {
package/src/vendor.ts CHANGED
@@ -43,8 +43,12 @@ export const NPM_PKG = "@oj-bin/oj";
43
43
  * `__client` 内省 fail-fast,`oj openapi --module-root` 契约链整体不可用)修复于
44
44
  * 0.1.86(oj-bin 0f8a6e2,第三次基线发布通道实证);module-root 工程是 0.2.20 起
45
45
  * 的默认布局,门禁必须盖住契约链(见 playbook §9 与 2026-10-23 第三次基线)。
46
+ * **0.2.68 抬到 0.1.121**:模板的方言 seed(`seed.mysql.sql` / `seed.pg.sql`)依赖
47
+ * 0.1.121 的「方言件胜出、`seed.sql` 兜底」选择语义(oj-bin 7d70b90);更早的 oj
48
+ * 只读 `seed.sql`,三方言执行同一份 sqlite 写法 → mysql/pg 上 1064 拒启。模板不再
49
+ * 教「部署期手工覆盖」,门禁必须盖住这条链路(见 playbook §11 U1)。
46
50
  */
47
- export const MIN_OJ_VERSION = "0.1.86";
51
+ export const MIN_OJ_VERSION = "0.1.121";
48
52
 
49
53
  /** 按段数值比较(字符串比较会把 0.1.9 判成大于 0.1.69);非数字段按 0 处理 */
50
54
  export function isSupportedOjVersion(version: string): boolean {
@@ -50,8 +50,6 @@ db:
50
50
  default: 'sqlite://db.sqlite' # 相对 config 目录;缺文件自动建空库
51
51
 
52
52
  vars:
53
- # ojm install 每次安装自增一次,用来触发 reload 热更。别删行、别手工回写旧值。
54
- ojm_install_seq: 0
55
53
  # 站点对外地址。装方案时服务端拿它把 /cdn 这类相对地址补全成绝对 URL(深检探针也用它)。
56
54
  # 故意不读请求头 Host(防伪造 Host 牵引出站):不配 = fail-closed,不会替你猜。
57
55
  # canonical_origin: "https://your-site.example.com"
@@ -160,6 +158,7 @@ auth:
160
158
  - /auth/wecom/callback # 企微 302 回跳:code 即凭证,此时还没有本地会话
161
159
  - /auth/wecom/ticket # 一次性票据换 TokenBundle:票据本身就是「刚验过的登录证明」
162
160
  - /auth/wecom/event # 企微指令回调:靠 msg_signature 验签,不走 Bearer
161
+ - /publish/credential/exchange # 凭证换发布身份:凭证自身即持有型证明,CLI 可能没有账号密码
163
162
 
164
163
  # 多租户(企微代开发 v3 Phase 0):开启后所有 {base} 请求必须带 X-TENANT-ID,否则 400。
165
164
  # 前端由 tenantStore + headerProvider 统一注入(单租户部署恒为 default,UX 不变)。
@@ -180,10 +179,12 @@ tenant:
180
179
  - sys_rate_window # 限速窗口(登录前就要用)
181
180
  - sys_login_throttle # 登录节流(登录前就要用)
182
181
  - market_history # 解决方案安装/升级/回滚是站点级留痕
182
+ - market_release # 发布历史:CDN 是站点级的,历史按站点归口
183
183
  - reg_source_seq # 索引新鲜度水位属于站点(防回放)
184
184
  - wecom_app_profile # 企微 corp→租户映射权威:查它时必然还没有租户上下文(D9)
185
185
  - wecom_suite_ticket # 套件级凭证,按 suite_id 全局唯一
186
186
  - wecom_login_ticket # 一次性登录票据:跨「匿名 302 回跳」与「已认证换取」两段
187
+ - publish_credential # 发布凭证:CLI 兑换那一跳没有业务租户语义,归属走 owner_tenant 列
187
188
  # 豁免缺租户头的路径(去 base 前缀后的形态)。与 auth.anonymous_paths 同语义,
188
189
  # 但这是「没有租户头也不 400」的逃生口,只给**真的拿不到头**的端点。
189
190
  # 登录类端点不在此列:前端 headerProvider 每请求都注头(单租户恒 default),
@@ -196,6 +197,7 @@ tenant:
196
197
  - /auth/wecom/callback # 企微 302 回跳:浏览器带不了头,租户由 state→profile 推导
197
198
  - /auth/wecom/ticket # 一次性票据换会话:租户由票据行携带
198
199
  - /auth/wecom/event # 企微指令回调:验签+解密即认证,无租户语义
200
+ - /publish/credential/exchange # 凭证兑换:CLI 的裸 fetch 不带租户头;表本身是共享表(B 组)
199
201
  # tenant.require_signed_claim:租户头的服务端绑定(平台级 fail-closed)。
200
202
  # 暂保持 false——上游 oj 的 jwt.sign 目前会静默丢弃自定义 claim(需求 R6),
201
203
  # 开启前无法把 tenant 放进 token。R6 落地后改 true,裸头即失去自证能力。
@@ -40,11 +40,11 @@ include:
40
40
  - src/styles.css
41
41
  # 后端 typecheck 工程(package.json 的 typecheck:api 指向它);只收后端、排除 web
42
42
  - src/tsconfig.json
43
- # —— 后端:配置 / 种子 / 测试 / 默认模块(模块源码在 src/app/api/<模块>)——
43
+ # —— 后端:配置 / 测试 / 默认模块(模块源码在 src/app/api/<模块>)——
44
+ # 方言 seed 不在这里列:它们是模块资产(`src/app/api/<模块>/seed.<dialect>.sql`),
45
+ # 根级副本会与模块内那份漂移(历史上一份只含 4 条设置、且 mysql 侧裸写保留字列),已删除。
44
46
  - config.yaml
45
47
  - .ojm-api-exempt.json
46
- - seed.mysql.sql
47
- - seed.pg.sql
48
48
  - vitest.config.ts
49
49
  # —— tests 逐条白名单(不收 tests/ 整目录)——
50
50
  # 业务工程只拷「纯 node:sqlite 夹具、零 cli 包环境假设」的测试。以下 6 个不分发
@@ -74,6 +74,9 @@ include:
74
74
  # 角色页展示层过滤 superadmin(后端 listRoles 仍返回;页面源码随 src/app/web/system 下发)
75
75
  - tests/roles-page.spec.ts
76
76
  - tests/seed-role-accounts.spec.ts
77
+ # 发布凭证:身份推导规则是跨端共用的口径,随源码下发,用户工程可本地自检
78
+ - tests/publish-identity.spec.ts
79
+ - tests/publish-credential.spec.ts
77
80
  # 用户页行级门禁:只有 superadmin 能改 superadmin 账号(后端 assertCanManageTarget 的另一面)
78
81
  - tests/users-page.spec.ts
79
82
  # 企微连接器与组织同步:源码本就分发(src/app/api/auth),对应回归也必须跟着走,
@@ -105,6 +108,7 @@ include:
105
108
  - src/app/api/auth
106
109
  - src/app/api/notification
107
110
  - src/app/api/personal-center
111
+ - src/app/api/publish
108
112
  - src/app/api/system
109
113
  - src/app/api/web
110
114
  # —— web 前端模块 ——
@@ -132,5 +136,6 @@ include:
132
136
  - src/oj-market/web/hooks
133
137
  - src/oj-market/web/locales
134
138
  - src/oj-market/web/pages
139
+ - src/oj-market/web/publish
135
140
  - src/oj-market/web/utils
136
141
  - src/app/web/web
@@ -870,6 +870,96 @@
870
870
  }
871
871
  }
872
872
  },
873
+ "/api/_platform/market/releases": {
874
+ "get": {
875
+ "operationId": "_platform_market_releases_get",
876
+ "summary": "GET api/_platform/market/releases",
877
+ "x-oj-file": "app/api/_platform/market/api.ts",
878
+ "tags": [
879
+ "_platform"
880
+ ],
881
+ "parameters": [
882
+ {
883
+ "name": "page",
884
+ "in": "query",
885
+ "required": false,
886
+ "schema": {
887
+ "type": "number",
888
+ "minimum": 1
889
+ }
890
+ },
891
+ {
892
+ "name": "limit",
893
+ "in": "query",
894
+ "required": false,
895
+ "schema": {
896
+ "type": "number",
897
+ "minimum": 1,
898
+ "maximum": 200
899
+ }
900
+ }
901
+ ],
902
+ "responses": {
903
+ "200": {
904
+ "description": "OK",
905
+ "x-oj-response-enforced": false,
906
+ "content": {
907
+ "application/json": {
908
+ "schema": {
909
+ "type": "object",
910
+ "required": [
911
+ "code",
912
+ "msg",
913
+ "data"
914
+ ],
915
+ "properties": {
916
+ "code": {
917
+ "type": "integer"
918
+ },
919
+ "msg": {
920
+ "type": "string"
921
+ },
922
+ "data": {
923
+ "type": "object",
924
+ "required": [
925
+ "list",
926
+ "total",
927
+ "page",
928
+ "size"
929
+ ],
930
+ "properties": {
931
+ "list": {
932
+ "type": "array",
933
+ "items": {
934
+ "type": "object",
935
+ "additionalProperties": true
936
+ }
937
+ },
938
+ "total": {
939
+ "type": "number"
940
+ },
941
+ "page": {
942
+ "type": "number"
943
+ },
944
+ "size": {
945
+ "type": "number"
946
+ },
947
+ "syncError": {
948
+ "type": [
949
+ "string",
950
+ "null"
951
+ ]
952
+ }
953
+ }
954
+ }
955
+ }
956
+ }
957
+ }
958
+ }
959
+ }
960
+ }
961
+ }
962
+ },
873
963
  "/api/_platform/org/departments": {
874
964
  "get": {
875
965
  "operationId": "_platform_org_departments_get",
@@ -4536,6 +4626,368 @@
4536
4626
  }
4537
4627
  }
4538
4628
  },
4629
+ "/api/publish/credential": {
4630
+ "get": {
4631
+ "operationId": "publish_credential_get",
4632
+ "summary": "GET api/publish/credential",
4633
+ "x-oj-file": "app/api/publish/api.ts",
4634
+ "tags": [
4635
+ "publish"
4636
+ ],
4637
+ "parameters": [
4638
+ {
4639
+ "name": "page",
4640
+ "in": "query",
4641
+ "required": false,
4642
+ "schema": {
4643
+ "type": "number",
4644
+ "minimum": 1
4645
+ }
4646
+ },
4647
+ {
4648
+ "name": "limit",
4649
+ "in": "query",
4650
+ "required": false,
4651
+ "schema": {
4652
+ "type": "number",
4653
+ "minimum": 1,
4654
+ "maximum": 200
4655
+ }
4656
+ },
4657
+ {
4658
+ "name": "tenant",
4659
+ "in": "query",
4660
+ "required": false,
4661
+ "schema": {
4662
+ "type": "string"
4663
+ }
4664
+ }
4665
+ ],
4666
+ "responses": {
4667
+ "200": {
4668
+ "description": "OK",
4669
+ "x-oj-response-enforced": false,
4670
+ "content": {
4671
+ "application/json": {
4672
+ "schema": {
4673
+ "type": "object",
4674
+ "required": [
4675
+ "code",
4676
+ "msg",
4677
+ "data"
4678
+ ],
4679
+ "properties": {
4680
+ "code": {
4681
+ "type": "integer"
4682
+ },
4683
+ "msg": {
4684
+ "type": "string"
4685
+ },
4686
+ "data": {
4687
+ "type": "object",
4688
+ "required": [
4689
+ "list",
4690
+ "total"
4691
+ ],
4692
+ "properties": {
4693
+ "list": {
4694
+ "type": "array",
4695
+ "items": {
4696
+ "type": "object",
4697
+ "required": [
4698
+ "id",
4699
+ "product",
4700
+ "key_id",
4701
+ "username",
4702
+ "token_hint",
4703
+ "status",
4704
+ "expires_at",
4705
+ "created_at"
4706
+ ],
4707
+ "properties": {
4708
+ "id": {
4709
+ "type": "number"
4710
+ },
4711
+ "product": {
4712
+ "type": "string"
4713
+ },
4714
+ "key_id": {
4715
+ "type": "string"
4716
+ },
4717
+ "username": {
4718
+ "type": "string"
4719
+ },
4720
+ "display_name": {
4721
+ "type": [
4722
+ "string",
4723
+ "null"
4724
+ ]
4725
+ },
4726
+ "token_hint": {
4727
+ "type": "string"
4728
+ },
4729
+ "status": {
4730
+ "type": "string",
4731
+ "enum": [
4732
+ "active",
4733
+ "used",
4734
+ "revoked",
4735
+ "expired"
4736
+ ]
4737
+ },
4738
+ "expires_at": {
4739
+ "type": "number"
4740
+ },
4741
+ "used_at": {
4742
+ "type": [
4743
+ "number",
4744
+ "null"
4745
+ ]
4746
+ },
4747
+ "created_at": {
4748
+ "type": "number"
4749
+ },
4750
+ "owner_tenant": {
4751
+ "type": "string"
4752
+ }
4753
+ }
4754
+ }
4755
+ },
4756
+ "total": {
4757
+ "type": "number"
4758
+ }
4759
+ }
4760
+ }
4761
+ }
4762
+ }
4763
+ }
4764
+ }
4765
+ }
4766
+ }
4767
+ },
4768
+ "post": {
4769
+ "operationId": "publish_credential_post",
4770
+ "summary": "POST api/publish/credential",
4771
+ "x-oj-file": "app/api/publish/api.ts",
4772
+ "tags": [
4773
+ "publish"
4774
+ ],
4775
+ "requestBody": {
4776
+ "required": true,
4777
+ "content": {
4778
+ "application/json": {
4779
+ "schema": {
4780
+ "type": "object",
4781
+ "required": [
4782
+ "product"
4783
+ ],
4784
+ "properties": {
4785
+ "product": {
4786
+ "type": "string"
4787
+ }
4788
+ }
4789
+ }
4790
+ }
4791
+ }
4792
+ },
4793
+ "responses": {
4794
+ "200": {
4795
+ "description": "OK",
4796
+ "x-oj-response-enforced": false,
4797
+ "content": {
4798
+ "application/json": {
4799
+ "schema": {
4800
+ "type": "object",
4801
+ "required": [
4802
+ "code",
4803
+ "msg",
4804
+ "data"
4805
+ ],
4806
+ "properties": {
4807
+ "code": {
4808
+ "type": "integer"
4809
+ },
4810
+ "msg": {
4811
+ "type": "string"
4812
+ },
4813
+ "data": {
4814
+ "type": "object",
4815
+ "required": [
4816
+ "token",
4817
+ "key_id",
4818
+ "product",
4819
+ "expires_at"
4820
+ ],
4821
+ "properties": {
4822
+ "token": {
4823
+ "type": "string"
4824
+ },
4825
+ "key_id": {
4826
+ "type": "string"
4827
+ },
4828
+ "product": {
4829
+ "type": "string"
4830
+ },
4831
+ "token_hint": {
4832
+ "type": "string"
4833
+ },
4834
+ "expires_at": {
4835
+ "type": "number"
4836
+ }
4837
+ }
4838
+ }
4839
+ }
4840
+ }
4841
+ }
4842
+ }
4843
+ }
4844
+ }
4845
+ }
4846
+ },
4847
+ "/api/publish/credential/revoke": {
4848
+ "post": {
4849
+ "operationId": "publish_credential_revoke_post",
4850
+ "summary": "POST api/publish/credential/revoke",
4851
+ "x-oj-file": "app/api/publish/api.ts",
4852
+ "tags": [
4853
+ "publish"
4854
+ ],
4855
+ "requestBody": {
4856
+ "required": true,
4857
+ "content": {
4858
+ "application/json": {
4859
+ "schema": {
4860
+ "type": "object",
4861
+ "required": [
4862
+ "id"
4863
+ ],
4864
+ "properties": {
4865
+ "id": {
4866
+ "type": "number"
4867
+ }
4868
+ }
4869
+ }
4870
+ }
4871
+ }
4872
+ },
4873
+ "responses": {
4874
+ "200": {
4875
+ "description": "OK",
4876
+ "x-oj-response-enforced": false,
4877
+ "content": {
4878
+ "application/json": {
4879
+ "schema": {
4880
+ "type": "object",
4881
+ "required": [
4882
+ "code",
4883
+ "msg",
4884
+ "data"
4885
+ ],
4886
+ "properties": {
4887
+ "code": {
4888
+ "type": "integer"
4889
+ },
4890
+ "msg": {
4891
+ "type": "string"
4892
+ },
4893
+ "data": {
4894
+ "type": "object",
4895
+ "required": [
4896
+ "ok"
4897
+ ],
4898
+ "properties": {
4899
+ "ok": {
4900
+ "type": "boolean"
4901
+ }
4902
+ }
4903
+ }
4904
+ }
4905
+ }
4906
+ }
4907
+ }
4908
+ }
4909
+ }
4910
+ }
4911
+ },
4912
+ "/api/publish/credential/exchange": {
4913
+ "post": {
4914
+ "operationId": "publish_credential_exchange_post",
4915
+ "summary": "POST api/publish/credential/exchange",
4916
+ "x-oj-file": "app/api/publish/api.ts",
4917
+ "tags": [
4918
+ "publish"
4919
+ ],
4920
+ "requestBody": {
4921
+ "required": true,
4922
+ "content": {
4923
+ "application/json": {
4924
+ "schema": {
4925
+ "type": "object",
4926
+ "required": [
4927
+ "token"
4928
+ ],
4929
+ "properties": {
4930
+ "token": {
4931
+ "type": "string"
4932
+ }
4933
+ }
4934
+ }
4935
+ }
4936
+ }
4937
+ },
4938
+ "responses": {
4939
+ "200": {
4940
+ "description": "OK",
4941
+ "x-oj-response-enforced": false,
4942
+ "content": {
4943
+ "application/json": {
4944
+ "schema": {
4945
+ "type": "object",
4946
+ "required": [
4947
+ "code",
4948
+ "msg",
4949
+ "data"
4950
+ ],
4951
+ "properties": {
4952
+ "code": {
4953
+ "type": "integer"
4954
+ },
4955
+ "msg": {
4956
+ "type": "string"
4957
+ },
4958
+ "data": {
4959
+ "type": "object",
4960
+ "required": [
4961
+ "key_id",
4962
+ "product",
4963
+ "username"
4964
+ ],
4965
+ "properties": {
4966
+ "key_id": {
4967
+ "type": "string"
4968
+ },
4969
+ "product": {
4970
+ "type": "string"
4971
+ },
4972
+ "username": {
4973
+ "type": "string"
4974
+ },
4975
+ "display_name": {
4976
+ "type": [
4977
+ "string",
4978
+ "null"
4979
+ ]
4980
+ }
4981
+ }
4982
+ }
4983
+ }
4984
+ }
4985
+ }
4986
+ }
4987
+ }
4988
+ }
4989
+ }
4990
+ },
4539
4991
  "/api/system/departments": {
4540
4992
  "get": {
4541
4993
  "operationId": "system_departments_get",
@@ -5325,7 +5777,8 @@
5325
5777
  "data": {
5326
5778
  "type": "object",
5327
5779
  "required": [
5328
- "methods"
5780
+ "methods",
5781
+ "site_title"
5329
5782
  ],
5330
5783
  "properties": {
5331
5784
  "methods": {
@@ -5333,6 +5786,9 @@
5333
5786
  "items": {
5334
5787
  "type": "string"
5335
5788
  }
5789
+ },
5790
+ "site_title": {
5791
+ "type": "string"
5336
5792
  }
5337
5793
  }
5338
5794
  }
@@ -6862,6 +7318,9 @@
6862
7318
  {
6863
7319
  "name": "personal-center"
6864
7320
  },
7321
+ {
7322
+ "name": "publish"
7323
+ },
6865
7324
  {
6866
7325
  "name": "system"
6867
7326
  },