@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.
- package/bin/.oj-version +1 -0
- package/bin/oj +4 -0
- package/devkit/README.md +18 -4
- package/devkit/SKILL.md +35 -3
- package/devkit/framework-dev.md +22 -11
- package/devkit/manual.md +161 -68
- package/devkit/menu-rules.md +4 -1
- package/devkit/publish-walkthrough.md +110 -37
- package/devkit/wecom-internal-app.md +7 -2
- package/devkit/wecom-multi-corp-links.md +163 -0
- package/package.json +3 -2
- package/shell-dist/assets/ahooks.2l850ymmh0.js +18 -0
- package/shell-dist/assets/antd-es-locale-zh_CN.1gjjsvxbf0.js +1 -0
- package/shell-dist/assets/antd-img-crop.196rkty480.js +99 -0
- package/shell-dist/assets/antd-locale-en_US.561tozx860.js +1 -0
- package/shell-dist/assets/antd-locale-zh_CN.1cmpmgzh70.js +1 -0
- package/shell-dist/assets/antd.uw1coq15l0.js +348 -0
- package/shell-dist/assets/clsx.jotilrt2e0.js +1 -0
- package/shell-dist/assets/contract-errors.2o17vz9u50.js +1 -0
- package/shell-dist/assets/contract.3h327o3mj0.js +57 -0
- package/shell-dist/assets/cssinjs.atgmhan7m0.js +3 -0
- package/shell-dist/assets/dayjs-plugin-advancedFormat.3vsyd2eis0.js +1 -0
- package/shell-dist/assets/dayjs-plugin-customParseFormat.13xhghv1d0.js +1 -0
- package/shell-dist/assets/dayjs-plugin-isoWeek.1fn1tw82p0.js +1 -0
- package/shell-dist/assets/dayjs-plugin-localeData.2rwbjp9nk0.js +1 -0
- package/shell-dist/assets/dayjs-plugin-quarterOfYear.2oqo1lcx80.js +1 -0
- package/shell-dist/assets/dayjs-plugin-relativeTime.2pqs3et4y0.js +1 -0
- package/shell-dist/assets/dayjs-plugin-weekOfYear.gvn9iph080.js +1 -0
- package/shell-dist/assets/dayjs-plugin-weekYear.2u78l3ex10.js +1 -0
- package/shell-dist/assets/dayjs-plugin-weekday.2d56a4tml0.js +1 -0
- package/shell-dist/assets/dayjs.pa60l6wjo0.js +1 -0
- package/shell-dist/assets/dnd-kit-core.1xyreig6r0.js +5 -0
- package/shell-dist/assets/dnd-kit-sortable.s94qciuft0.js +1 -0
- package/shell-dist/assets/dnd-kit-utilities.1umw4xphb0.js +1 -0
- package/shell-dist/assets/i18next.33zqofapj0.js +1 -0
- package/shell-dist/assets/icons-es-components-Context.365qmflwg0.js +1 -0
- package/shell-dist/assets/icons.159wjwals0.js +57 -0
- package/shell-dist/assets/{index-xZhmujjM.js → index.6alqyx6ae0.js} +21 -1
- package/shell-dist/assets/jsx-dev-runtime.3uibuc82f0.js +14 -0
- package/shell-dist/assets/jsx-runtime.h40xu4o5b0.js +14 -0
- package/shell-dist/assets/keepalive-for-react.xenu5vam70.js +1 -0
- package/shell-dist/assets/kit.37kr8ui390.js +1 -0
- package/shell-dist/assets/ky.1cgch7gu60.js +6 -0
- package/shell-dist/assets/motion-react.pjsxytvjs0.js +12 -0
- package/shell-dist/assets/motion.21tciqutg0.js +4 -0
- package/shell-dist/assets/nprogress.2nz76n9ny0.js +7 -0
- package/shell-dist/assets/ojm-dayjs-locale-zh-cn.3vr3beiyp0.js +9 -0
- package/shell-dist/assets/pinyin-pro.3v0mnxczn0.js +1 -0
- package/shell-dist/assets/pro-components.2kyot1vcl0.js +83 -0
- package/shell-dist/assets/react-countup.2x8idnr8y0.js +10 -0
- package/shell-dist/assets/react-dom-client.ick0v05ob0.js +43 -0
- package/shell-dist/assets/react-dom.2so9uxg3f0.js +22 -0
- package/shell-dist/assets/react-error-boundary.2dncdfj3b0.js +1 -0
- package/shell-dist/assets/react-i18next.auhvjhqv00.js +1 -0
- package/shell-dist/assets/react-jss.1ei6dr9e00.js +29 -0
- package/shell-dist/assets/react-query.3rln45ow00.js +1 -0
- package/shell-dist/assets/react-router-dom.3c6zld8h40.js +44 -0
- package/shell-dist/assets/react-router.2h9rebcv50.js +56 -0
- package/shell-dist/assets/react.1ew63mwts0.js +14 -0
- package/shell-dist/assets/runtime.2dgstpjsu0.js +21702 -0
- package/shell-dist/assets/simplebar-react.2g739uvai0.js +1 -0
- package/shell-dist/assets/spin-delay.yjeyj6iwp0.js +9 -0
- package/shell-dist/assets/tailwind-merge.125ehiqjw0.js +1 -0
- package/shell-dist/assets/use-sync-external-store-shim.1nz1pi9bb0.js +22 -0
- package/shell-dist/assets/zustand-middleware.1xaxjueme0.js +6 -0
- package/shell-dist/assets/zustand-react-shallow.pybayv1hx0.js +1 -0
- package/shell-dist/assets/zustand-react.9fsl9brxy0.js +1 -0
- package/shell-dist/assets/zustand-shallow.6cz0yyv9x0.js +1 -0
- package/shell-dist/assets/zustand-vanilla-shallow.3424monv50.js +1 -0
- package/shell-dist/assets/zustand-vanilla.1mo3ka3g30.js +1 -0
- package/shell-dist/assets/zustand.3gjgzlnqo0.js +1 -0
- package/shell-dist/index.html +67 -118
- package/shell-dist/versions.json +3 -3
- package/src/__tests__/publish-keygen.test.ts +157 -0
- package/src/__tests__/templates-migration-schema-parity.test.ts +540 -0
- package/src/__tests__/templates-schema-columns.test.ts +15 -2
- package/src/__tests__/templates-tenant-scope.test.ts +6 -2
- package/src/bundle.ts +8 -3
- package/src/cli.ts +17 -5
- package/src/dev.ts +15 -10
- package/src/esm-exports.ts +152 -70
- package/src/install.ts +11 -4
- package/src/keygen.ts +54 -0
- package/src/lifecycle/__tests__/bundle.test.ts +21 -3
- package/src/lifecycle/__tests__/fixtures/fixture-valid/api/src/demo-solution/manifest.yaml +1 -1
- package/src/lifecycle/__tests__/fixtures/fixture-valid/api/src/demo-solution/migrations/0001__init.sql +2 -2
- package/src/lifecycle/__tests__/fixtures/fixture-valid/api/src/demo-solution/schema.yaml +5 -2
- package/src/lifecycle/__tests__/fixtures/fixture-valid/manifest.yaml +1 -1
- package/src/lifecycle/__tests__/manifest-contract.test.ts +75 -3
- package/src/lifecycle/__tests__/smoke.test.ts +2 -2
- package/src/manifest-contract.ts +91 -8
- package/src/market/bootstrap.ts +26 -2
- package/src/market/command.ts +1 -0
- package/src/market/publish.ts +5 -1
- package/src/market/walkthrough.ts +24 -8
- package/src/shared-deps.ts +69 -19
- package/src/site-base.ts +4 -0
- package/src/site.ts +2 -0
- package/src/usage.ts +8 -4
- package/src/vendor.ts +5 -1
- package/templates/config.yaml +4 -2
- package/templates/init.include.yaml +8 -3
- package/templates/openapi.json +460 -1
- package/templates/src/app/api/_platform/_lifecycle/compensate.ts +136 -0
- package/templates/src/app/api/_platform/_lifecycle/installer.ts +71 -22
- package/templates/src/app/api/_platform/_lifecycle/lock.ts +23 -0
- package/templates/src/app/api/_platform/_lifecycle/steps/deploy-web.ts +28 -0
- package/templates/src/app/api/_platform/_lifecycle/steps/preflight.ts +46 -0
- package/templates/src/app/api/_platform/_lifecycle/steps/reload.ts +100 -36
- package/templates/src/app/api/_platform/_lifecycle/steps/smoke.ts +7 -15
- package/templates/src/app/api/_platform/_lifecycle/text-edit.ts +71 -19
- package/templates/src/app/api/_platform/_lifecycle/types.ts +26 -2
- package/templates/src/app/api/_platform/_lifecycle/uninstall.ts +93 -14
- package/templates/src/app/api/_platform/_shared/service/domain/settings.ts +8 -4
- package/templates/src/app/api/_platform/manifest.yaml +1 -0
- package/templates/src/app/api/_platform/market/api.ts +235 -10
- package/templates/src/app/api/_platform/migrations/0001__baseline.mysql.sql +178 -0
- package/templates/src/app/api/_platform/migrations/0001__baseline.pg.sql +173 -0
- package/templates/src/app/api/_platform/migrations/0001__baseline.sql +188 -0
- package/templates/src/app/api/_platform/migrations/0002__market_release.mysql.sql +17 -0
- package/templates/src/app/api/_platform/migrations/0002__market_release.pg.sql +16 -0
- package/templates/src/app/api/_platform/migrations/0002__market_release.sql +33 -0
- package/templates/src/app/api/_platform/schema.yaml +18 -0
- package/templates/src/app/api/_platform/seed.mysql.sql +10 -0
- package/templates/src/app/api/_platform/seed.pg.sql +10 -0
- package/templates/src/app/api/auth/_shared/wecom/client.ts +24 -4
- package/templates/src/app/api/home/migrations/0001__create_home_tables.mysql.sql +14 -0
- package/templates/src/app/api/home/migrations/0001__create_home_tables.pg.sql +14 -0
- package/templates/src/app/api/home/migrations/0002__tenant.pg.sql +4 -0
- package/templates/src/app/api/home/seed.mysql.sql +71 -0
- package/templates/src/app/api/home/seed.pg.sql +71 -0
- package/templates/src/app/api/notification/_shared/notify.ts +6 -6
- package/templates/src/app/api/notification/migrations/0001__create_notifications.mysql.sql +11 -0
- package/templates/src/app/api/notification/migrations/0001__create_notifications.pg.sql +11 -0
- package/templates/src/app/api/notification/migrations/0002__notifications_user.mysql.sql +8 -0
- package/templates/src/app/api/notification/migrations/0003__notifications_broadcast.mysql.sql +21 -0
- package/templates/src/app/api/notification/migrations/0003__notifications_broadcast.pg.sql +22 -0
- package/templates/src/app/api/notification/migrations/0004__notifications_broadcast_hidden.mysql.sql +10 -0
- package/templates/src/app/api/notification/migrations/0004__notifications_broadcast_hidden.pg.sql +11 -0
- package/templates/src/app/api/notification/migrations/0005__tenant.pg.sql +6 -0
- package/templates/src/app/api/notification/seed.mysql.sql +8 -0
- package/templates/src/app/api/notification/seed.pg.sql +11 -0
- package/templates/src/app/api/publish/_shared/identity.ts +69 -0
- package/templates/src/app/api/publish/api.ts +349 -0
- package/templates/src/app/api/publish/manifest.yaml +8 -0
- package/templates/src/app/api/publish/migrations/0001__publish_credential.mysql.sql +23 -0
- package/templates/src/app/api/publish/migrations/0001__publish_credential.pg.sql +23 -0
- package/templates/src/app/api/publish/migrations/0001__publish_credential.sql +39 -0
- package/templates/src/app/api/publish/schema.yaml +33 -0
- package/templates/src/app/api/system/login-methods/api.ts +2 -1
- package/templates/src/app/web/_platform/__client/api.schemas.ts +15 -0
- package/templates/src/app/web/_platform/__client/index.ts +25 -1
- package/templates/src/app/web/entry.ts +9 -5
- package/templates/src/app/web/home/pages/components/bar-chart.tsx +5 -3
- package/templates/src/app/web/home/pages/components/echarts-setup.ts +30 -0
- package/templates/src/app/web/home/pages/components/line-chart.tsx +5 -3
- package/templates/src/app/web/home/pages/components/pie-chart.tsx +6 -3
- package/templates/src/app/web/home/pages/index.tsx +3 -2
- package/templates/src/app/web/home/routes.ts +8 -2
- package/templates/src/app/web/login/locales/en-US.json +7 -1
- package/templates/src/app/web/login/locales/zh-CN.json +7 -1
- package/templates/src/app/web/login/pages/login.tsx +79 -86
- package/templates/src/app/web/login/routes.ts +54 -1
- package/templates/src/app/web/personal-center/locales/en-US.json +1 -0
- package/templates/src/app/web/personal-center/locales/zh-CN.json +1 -0
- package/templates/src/app/web/personal-center/pages/my-profile/index.tsx +5 -0
- package/templates/src/app/web/system/__client/api.schemas.ts +2 -1
- package/templates/src/app/web/system/locales/en-US.json +1 -8
- package/templates/src/app/web/system/locales/zh-CN.json +1 -8
- package/templates/src/app/web/system/pages/settings/index.tsx +17 -4
- package/templates/src/app/web/system/routes.ts +0 -6
- package/templates/src/oj-market/web/__tests__/CardGrid.test.tsx +33 -0
- package/templates/src/oj-market/web/__tests__/DetailDrawer.test.tsx +69 -0
- package/templates/src/oj-market/web/__tests__/marketClient.fake.ts +7 -1
- package/templates/src/oj-market/web/api/client.ts +3 -0
- package/templates/src/oj-market/web/api/defaultClient.ts +5 -0
- package/templates/src/oj-market/web/components/CardItem.tsx +44 -1
- package/templates/src/oj-market/web/components/DetailDrawer.tsx +17 -1
- package/templates/src/oj-market/web/entry.ts +31 -2
- package/templates/src/oj-market/web/locales/en-US.json +5 -1
- package/templates/src/oj-market/web/locales/zh-CN.json +5 -1
- package/templates/src/oj-market/web/publish/__client/api.schemas.ts +61 -0
- package/templates/src/oj-market/web/publish/__client/index.ts +164 -0
- package/templates/src/oj-market/web/publish/locales/en-US.json +80 -0
- package/templates/src/oj-market/web/publish/locales/zh-CN.json +80 -0
- package/templates/src/oj-market/web/publish/pages/history.tsx +112 -0
- package/templates/src/oj-market/web/publish/pages/index.tsx +196 -0
- package/templates/src/oj-market/web/publish/pages/model.ts +52 -0
- package/templates/src/oj-market/web/publish/pages/token-modal.tsx +82 -0
- package/templates/src/oj-market/web/publish/routes.ts +41 -0
- package/templates/src/oj-market/web/types.ts +30 -0
- package/templates/tests/lifecycle/compensate.spec.ts +207 -0
- package/templates/tests/lifecycle/deploy-smoke.spec.ts +38 -14
- package/templates/tests/lifecycle/installer.spec.ts +28 -9
- package/templates/tests/lifecycle/market-api.spec.ts +164 -12
- package/templates/tests/lifecycle/preflight.spec.ts +68 -0
- package/templates/tests/lifecycle/role-title-translate.spec.ts +2 -32
- package/templates/tests/lifecycle/text-edit.spec.ts +45 -27
- package/templates/tests/lifecycle/uninstall.spec.ts +36 -0
- package/templates/tests/publish-credential.spec.ts +354 -0
- package/templates/tests/publish-identity.spec.ts +44 -0
- package/templates/tests/wecom-client-timeout.spec.ts +33 -3
- package/templates/tests/wecom-landing.spec.ts +63 -1
- package/templates/tsconfig.paths.json +1 -0
- package/templates/web.config.ts +6 -4
- package/vendor/host-versions.json +3 -3
- package/shell-dist/assets/ahooks.js +0 -6909
- package/shell-dist/assets/antd-es-locale-zh_CN.js +0 -257
- package/shell-dist/assets/antd-img-crop.js +0 -1495
- package/shell-dist/assets/antd-locale-en_US.js +0 -374
- package/shell-dist/assets/antd-locale-zh_CN.js +0 -379
- package/shell-dist/assets/antd.js +0 -106874
- package/shell-dist/assets/clsx.js +0 -33
- package/shell-dist/assets/contract-errors.js +0 -30
- package/shell-dist/assets/contract.js +0 -18900
- package/shell-dist/assets/cssinjs.js +0 -2595
- package/shell-dist/assets/dayjs-plugin-advancedFormat.js +0 -98
- package/shell-dist/assets/dayjs-plugin-customParseFormat.js +0 -173
- package/shell-dist/assets/dayjs-plugin-isoWeek.js +0 -77
- package/shell-dist/assets/dayjs-plugin-localeData.js +0 -126
- package/shell-dist/assets/dayjs-plugin-quarterOfYear.js +0 -77
- package/shell-dist/assets/dayjs-plugin-relativeTime.js +0 -92
- package/shell-dist/assets/dayjs-plugin-weekOfYear.js +0 -73
- package/shell-dist/assets/dayjs-plugin-weekYear.js +0 -63
- package/shell-dist/assets/dayjs-plugin-weekday.js +0 -63
- package/shell-dist/assets/dayjs.js +0 -326
- package/shell-dist/assets/dnd-kit-core.js +0 -3601
- package/shell-dist/assets/dnd-kit-sortable.js +0 -717
- package/shell-dist/assets/dnd-kit-utilities.js +0 -340
- package/shell-dist/assets/i18next.js +0 -2321
- package/shell-dist/assets/icons-es-components-Context.js +0 -20
- package/shell-dist/assets/icons.js +0 -34961
- package/shell-dist/assets/jsx-dev-runtime.js +0 -75
- package/shell-dist/assets/jsx-runtime.js +0 -97
- package/shell-dist/assets/keepalive-for-react.js +0 -283
- package/shell-dist/assets/kit.js +0 -151
- package/shell-dist/assets/ky.js +0 -1427
- package/shell-dist/assets/motion-react.js +0 -13589
- package/shell-dist/assets/motion.js +0 -9959
- package/shell-dist/assets/nprogress.js +0 -314
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-BarsOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-CalendarOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-CaretDownFilled.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-CaretDownOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-CaretUpOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-CheckCircleFilled.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-CheckOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-ClockCircleOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-CloseCircleFilled.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-CloseOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-CopyOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-DeleteOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-DoubleLeftOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-DoubleRightOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-DownOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-DownloadOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-EditOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-EllipsisOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-EnterOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-ExclamationCircleFilled.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-EyeInvisibleOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-EyeOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-FileOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-FileTextOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-FilterFilled.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-FolderOpenOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-FolderOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-HolderOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-InfoCircleFilled.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-LeftOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-LoadingOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-MinusOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-MinusSquareOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-PaperClipOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-PictureOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-PlusOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-PlusSquareOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-QuestionCircleOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-ReloadOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-RightOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-RotateLeftOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-RotateRightOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-SearchOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-StarFilled.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-SwapOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-SwapRightOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-UpOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-VerticalAlignTopOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-WarningFilled.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-ZoomInOutlined.js +0 -7
- package/shell-dist/assets/ojm--ant-design-icons-es-icons-ZoomOutOutlined.js +0 -7
- package/shell-dist/assets/ojm-dayjs-locale-zh-cn.js +0 -81
- package/shell-dist/assets/pinyin-pro.js +0 -25175
- package/shell-dist/assets/pro-components.js +0 -44627
- package/shell-dist/assets/react-countup.js +0 -525
- package/shell-dist/assets/react-dom-client.js +0 -12134
- package/shell-dist/assets/react-dom.js +0 -266
- package/shell-dist/assets/react-error-boundary.js +0 -141
- package/shell-dist/assets/react-i18next.js +0 -1773
- package/shell-dist/assets/react-jss.js +0 -4089
- package/shell-dist/assets/react-query.js +0 -3072
- package/shell-dist/assets/react-router-dom.js +0 -9927
- package/shell-dist/assets/react-router.js +0 -14584
- package/shell-dist/assets/react.js +0 -590
- package/shell-dist/assets/runtime.js +0 -28311
- package/shell-dist/assets/simplebar-react.js +0 -1119
- package/shell-dist/assets/spin-delay.js +0 -111
- package/shell-dist/assets/tailwind-merge.js +0 -3364
- package/shell-dist/assets/use-sync-external-store-shim.js +0 -130
- package/shell-dist/assets/zustand-middleware.js +0 -513
- package/shell-dist/assets/zustand-react-shallow.js +0 -27
- package/shell-dist/assets/zustand-react.js +0 -39
- package/shell-dist/assets/zustand-shallow.js +0 -22
- package/shell-dist/assets/zustand-vanilla-shallow.js +0 -71
- package/shell-dist/assets/zustand-vanilla.js +0 -40
- package/shell-dist/assets/zustand.js +0 -32
- package/templates/seed.mysql.sql +0 -6
- package/templates/seed.pg.sql +0 -6
- package/templates/src/app/api/_platform/migrations/0001__create_users.mysql.sql +0 -9
- package/templates/src/app/api/_platform/migrations/0001__create_users.pg.sql +0 -9
- package/templates/src/app/api/_platform/migrations/0001__create_users.sql +0 -7
- package/templates/src/app/api/_platform/migrations/0002__add_users_avatar_base64.mysql.sql +0 -3
- package/templates/src/app/api/_platform/migrations/0002__add_users_avatar_base64.sql +0 -2
- package/templates/src/app/api/_platform/migrations/0003__users_source_display_name.mysql.sql +0 -5
- package/templates/src/app/api/_platform/migrations/0003__users_source_display_name.sql +0 -5
- package/templates/src/app/api/_platform/migrations/0004__sys_rbac.mysql.sql +0 -70
- package/templates/src/app/api/_platform/migrations/0004__sys_rbac.pg.sql +0 -67
- package/templates/src/app/api/_platform/migrations/0004__sys_rbac.sql +0 -67
- package/templates/src/app/api/_platform/migrations/0005__users_must_change.mysql.sql +0 -3
- package/templates/src/app/api/_platform/migrations/0005__users_must_change.sql +0 -2
- package/templates/src/app/api/_platform/migrations/0006__users_is_forbidden.mysql.sql +0 -3
- package/templates/src/app/api/_platform/migrations/0006__users_is_forbidden.sql +0 -3
- package/templates/src/app/api/_platform/migrations/0007__users_email.sql +0 -3
- package/templates/src/app/api/_platform/migrations/0008__sys_refresh_token.mysql.sql +0 -10
- package/templates/src/app/api/_platform/migrations/0008__sys_refresh_token.pg.sql +0 -10
- package/templates/src/app/api/_platform/migrations/0008__sys_refresh_token.sql +0 -11
- package/templates/src/app/api/_platform/migrations/0009__sys_throttle.mysql.sql +0 -12
- package/templates/src/app/api/_platform/migrations/0009__sys_throttle.pg.sql +0 -12
- package/templates/src/app/api/_platform/migrations/0009__sys_throttle.sql +0 -13
- package/templates/src/app/api/_platform/migrations/0010__sys_solution_route.mysql.sql +0 -17
- package/templates/src/app/api/_platform/migrations/0010__sys_solution_route.pg.sql +0 -16
- package/templates/src/app/api/_platform/migrations/0010__sys_solution_route.sql +0 -18
- package/templates/src/app/api/_platform/migrations/0011__sys_setting_group_label.mysql.sql +0 -2
- package/templates/src/app/api/_platform/migrations/0011__sys_setting_group_label.sql +0 -4
- package/templates/src/app/api/_platform/migrations/0012__market_history.mysql.sql +0 -13
- package/templates/src/app/api/_platform/migrations/0012__market_history.pg.sql +0 -12
- package/templates/src/app/api/_platform/migrations/0012__market_history.sql +0 -14
- package/templates/src/app/api/_platform/migrations/0013__users_profile.sql +0 -4
- package/templates/src/app/api/_platform/migrations/0014__reg_source_seq.mysql.sql +0 -9
- package/templates/src/app/api/_platform/migrations/0014__reg_source_seq.pg.sql +0 -7
- package/templates/src/app/api/_platform/migrations/0014__reg_source_seq.sql +0 -8
- package/templates/src/app/api/_platform/migrations/0015__tenant.mysql.sql +0 -12
- package/templates/src/app/api/_platform/migrations/0015__tenant.pg.sql +0 -11
- package/templates/src/app/api/_platform/migrations/0015__tenant.sql +0 -44
- package/templates/src/app/api/_platform/migrations/0016__org.mysql.sql +0 -41
- package/templates/src/app/api/_platform/migrations/0016__org.pg.sql +0 -40
- package/templates/src/app/api/_platform/migrations/0016__org.sql +0 -62
- package/templates/src/app/api/_platform/migrations/0017__users_employee_no.mysql.sql +0 -7
- package/templates/src/app/api/_platform/migrations/0017__users_employee_no.pg.sql +0 -4
- package/templates/src/app/api/_platform/migrations/0017__users_employee_no.sql +0 -8
- package/templates/src/app/api/_platform/migrations/0018__sys_role_title_key.mysql.sql +0 -3
- package/templates/src/app/api/_platform/migrations/0018__sys_role_title_key.pg.sql +0 -3
- package/templates/src/app/api/_platform/migrations/0018__sys_role_title_key.sql +0 -8
- package/templates/src/app/web/system/pages/login-methods/index.tsx +0 -30
- /package/shell-dist/assets/{nprogress-css.js → nprogress-css.1cq2pzkre0.js} +0 -0
- /package/shell-dist/assets/{ojm-antd-es-button.js → ojm-antd-es-button.2uriphio50.js} +0 -0
- /package/shell-dist/assets/{ojm-antd-es-modal.js → ojm-antd-es-modal.bf3tgdh8v0.js} +0 -0
- /package/shell-dist/assets/{ojm-antd-es-slider.js → ojm-antd-es-slider.xyvptuhid0.js} +0 -0
- /package/shell-dist/assets/{ojm-antd-es-upload.js → ojm-antd-es-upload.13gx45e0g0.js} +0 -0
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
-- market_history mysql 方言覆盖(方言覆盖必胜,通用兜底;oj-bin docs/migration.md §3.1)。
|
|
2
|
-
-- 差异:AUTOINCREMENT → BIGINT AUTO_INCREMENT;TEXT 列按业务长度收窄为 VARCHAR;
|
|
3
|
-
-- created_at 用 BIGINT(秒级 epoch)。
|
|
4
|
-
CREATE TABLE IF NOT EXISTS market_history (
|
|
5
|
-
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
6
|
-
solution VARCHAR(255) NOT NULL,
|
|
7
|
-
version VARCHAR(255) NOT NULL,
|
|
8
|
-
action VARCHAR(64) NOT NULL,
|
|
9
|
-
status VARCHAR(64) NOT NULL,
|
|
10
|
-
operator VARCHAR(255),
|
|
11
|
-
message TEXT,
|
|
12
|
-
created_at BIGINT NOT NULL
|
|
13
|
-
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
-- market_history pg 方言覆盖(方言覆盖必胜,通用兜底;oj-bin docs/migration.md §3.1)。
|
|
2
|
-
-- 差异:AUTOINCREMENT → BIGSERIAL;TEXT 在 pg 合法,保留 TEXT。
|
|
3
|
-
CREATE TABLE IF NOT EXISTS market_history (
|
|
4
|
-
id BIGSERIAL PRIMARY KEY,
|
|
5
|
-
solution TEXT NOT NULL,
|
|
6
|
-
version TEXT NOT NULL,
|
|
7
|
-
action TEXT NOT NULL,
|
|
8
|
-
status TEXT NOT NULL,
|
|
9
|
-
operator TEXT,
|
|
10
|
-
message TEXT,
|
|
11
|
-
created_at BIGINT NOT NULL
|
|
12
|
-
);
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
-- market_history 表上收 _platform(P4 裁决:市场操作历史为平台级审计面,归属平台核心,
|
|
2
|
-
-- 不再由 oj-market 方案包自带迁移创建)。install/enable/disable/uninstall/upgrade/rollback
|
|
3
|
-
-- 六类动作留痕;前端历史抽屉与版本历史对比只读消费。
|
|
4
|
-
-- 结构只进 migrations(S006);与 schema.yaml 列集一致。
|
|
5
|
-
CREATE TABLE IF NOT EXISTS market_history (
|
|
6
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
7
|
-
solution TEXT NOT NULL,
|
|
8
|
-
version TEXT NOT NULL,
|
|
9
|
-
action TEXT NOT NULL,
|
|
10
|
-
status TEXT NOT NULL,
|
|
11
|
-
operator TEXT,
|
|
12
|
-
message TEXT,
|
|
13
|
-
created_at INTEGER NOT NULL
|
|
14
|
-
);
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
-- reg_source_seq mysql 方言覆盖(方言覆盖必胜,通用兜底;oj-bin docs/migration.md §3.1)。
|
|
2
|
-
-- 差异:INTEGER → BIGINT;TEXT 主键须给长度(前缀键无法承载长 URL),按 1024 收窄;
|
|
3
|
-
-- updated_at 用 BIGINT(秒级 epoch)。
|
|
4
|
-
CREATE TABLE IF NOT EXISTS reg_source_seq (
|
|
5
|
-
source_url VARCHAR(1024) NOT NULL,
|
|
6
|
-
max_seq BIGINT NOT NULL,
|
|
7
|
-
updated_at BIGINT NOT NULL,
|
|
8
|
-
PRIMARY KEY (source_url)
|
|
9
|
-
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
-- reg_source_seq pg 方言覆盖(方言覆盖必胜,通用兜底;oj-bin docs/migration.md §3.1)。
|
|
2
|
-
-- 差异:INTEGER → BIGINT(seq 单调长期累加);TEXT 在 pg 合法,保留 TEXT。
|
|
3
|
-
CREATE TABLE IF NOT EXISTS reg_source_seq (
|
|
4
|
-
source_url TEXT NOT NULL PRIMARY KEY,
|
|
5
|
-
max_seq BIGINT NOT NULL,
|
|
6
|
-
updated_at BIGINT NOT NULL
|
|
7
|
-
);
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
-- reg_source_seq(REG-CS2 索引新鲜度):站点按源记住「见过的最大 seq」,回退即拒(防回放/降级)。
|
|
2
|
-
-- 受害者是站点,记录点就在站点(D1);CLI/API 同一判定,不另设状态文件。
|
|
3
|
-
-- 结构只进 migrations(S006);与 schema.yaml 列集一致。
|
|
4
|
-
CREATE TABLE IF NOT EXISTS reg_source_seq (
|
|
5
|
-
source_url TEXT NOT NULL PRIMARY KEY,
|
|
6
|
-
max_seq INTEGER NOT NULL,
|
|
7
|
-
updated_at INTEGER NOT NULL
|
|
8
|
-
);
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
-- 0015__tenant(mysql 方言):多租户地基(企微代开发 v3 Phase 0)
|
|
2
|
-
-- 表定性同 0015__tenant.sql 头注释(A 组 11 张租户化 / B 组 10 张共享)。
|
|
3
|
-
-- 差异:TEXT 列不能带字面默认值也不能直接做唯一键 → 租户列用 VARCHAR(255)(与 users.username
|
|
4
|
-
-- 的既有 mysql 写法一致,schema.yaml 仍声明 text,reconcile 按 text↔varchar 同源处理)。
|
|
5
|
-
ALTER TABLE users ADD COLUMN tenant_id VARCHAR(255) NOT NULL DEFAULT 'default';
|
|
6
|
-
ALTER TABLE users ADD COLUMN corp_id VARCHAR(255) NULL;
|
|
7
|
-
ALTER TABLE users DROP INDEX username;
|
|
8
|
-
ALTER TABLE users ADD UNIQUE KEY uk_users_tenant_username (tenant_id, username);
|
|
9
|
-
|
|
10
|
-
ALTER TABLE sys_oplog ADD COLUMN tenant_id VARCHAR(255) NOT NULL DEFAULT 'default';
|
|
11
|
-
ALTER TABLE sys_user_role ADD COLUMN tenant_id VARCHAR(255) NOT NULL DEFAULT 'default';
|
|
12
|
-
ALTER TABLE sys_refresh_token ADD COLUMN tenant_id VARCHAR(255) NOT NULL DEFAULT 'default';
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
-- 0015__tenant(postgres 方言):多租户地基(企微代开发 v3 Phase 0)
|
|
2
|
-
-- 表定性同 0015__tenant.sql 头注释(A 组 11 张租户化 / B 组 10 张共享)。
|
|
3
|
-
-- pg 可直接丢弃列级 UNIQUE 约束后再建复合唯一键,不需要重建表。
|
|
4
|
-
ALTER TABLE users ADD COLUMN tenant_id TEXT NOT NULL DEFAULT 'default';
|
|
5
|
-
ALTER TABLE users ADD COLUMN corp_id TEXT;
|
|
6
|
-
ALTER TABLE users DROP CONSTRAINT users_username_key;
|
|
7
|
-
ALTER TABLE users ADD CONSTRAINT users_tenant_username_key UNIQUE (tenant_id, username);
|
|
8
|
-
|
|
9
|
-
ALTER TABLE sys_oplog ADD COLUMN tenant_id TEXT NOT NULL DEFAULT 'default';
|
|
10
|
-
ALTER TABLE sys_user_role ADD COLUMN tenant_id TEXT NOT NULL DEFAULT 'default';
|
|
11
|
-
ALTER TABLE sys_refresh_token ADD COLUMN tenant_id TEXT NOT NULL DEFAULT 'default';
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
-- 0015__tenant(sqlite 方言):多租户地基(企微代开发 v3 Phase 0)
|
|
2
|
-
-- 21 张表定性(判据:该表是否可能在无租户上下文时被访问)——
|
|
3
|
-
-- A 组 租户化 11:users / sys_oplog / sys_user_role / sys_refresh_token
|
|
4
|
-
-- / notifications / notifications_broadcast
|
|
5
|
-
-- / notifications_broadcast_read / notifications_broadcast_hidden
|
|
6
|
-
-- / home_pie / home_line / todos
|
|
7
|
-
-- B 组 共享 10:_oj_migrations / sys_setting / sys_solution_route / sys_role / sys_permission
|
|
8
|
-
-- / sys_role_permission / sys_rate_window / sys_login_throttle
|
|
9
|
-
-- / market_history / reg_source_seq
|
|
10
|
-
-- B 组须 schema.yaml `tenant: false` + config `tenant.shared_allow` 双声明才豁免守卫。
|
|
11
|
-
-- 存量数据一律落 'default' 租户,**不做**自动归户(升级后由管理端显式分配)。
|
|
12
|
-
--
|
|
13
|
-
-- users:唯一性从「username 全局唯一」收敛为「(tenant_id, username) 同租户唯一」。
|
|
14
|
-
-- sqlite 无法 ALTER 掉内联 UNIQUE 约束(sqlite_autoindex 不可 DROP)→ 重建表,其余表只加列。
|
|
15
|
-
CREATE TABLE users__tenant_new (
|
|
16
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
17
|
-
tenant_id TEXT NOT NULL DEFAULT 'default',
|
|
18
|
-
corp_id TEXT,
|
|
19
|
-
username TEXT NOT NULL,
|
|
20
|
-
password_hash TEXT NOT NULL,
|
|
21
|
-
avatar_base64 TEXT NOT NULL DEFAULT '',
|
|
22
|
-
source TEXT NOT NULL DEFAULT 'local',
|
|
23
|
-
display_name TEXT,
|
|
24
|
-
must_change INTEGER NOT NULL DEFAULT 0,
|
|
25
|
-
is_forbidden INTEGER NOT NULL DEFAULT 0,
|
|
26
|
-
email TEXT,
|
|
27
|
-
phone_number TEXT,
|
|
28
|
-
description TEXT,
|
|
29
|
-
UNIQUE (tenant_id, username)
|
|
30
|
-
);
|
|
31
|
-
INSERT INTO users__tenant_new (
|
|
32
|
-
id, tenant_id, username, password_hash, avatar_base64, source, display_name,
|
|
33
|
-
must_change, is_forbidden, email, phone_number, description
|
|
34
|
-
)
|
|
35
|
-
SELECT id, 'default', username, password_hash, avatar_base64, source, display_name,
|
|
36
|
-
must_change, is_forbidden, email, phone_number, description
|
|
37
|
-
FROM users;
|
|
38
|
-
DROP TABLE users;
|
|
39
|
-
ALTER TABLE users__tenant_new RENAME TO users;
|
|
40
|
-
|
|
41
|
-
ALTER TABLE sys_oplog ADD COLUMN tenant_id TEXT NOT NULL DEFAULT 'default';
|
|
42
|
-
-- user_id 是全局自增 users.id(跨租户不重复),故主键 (user_id, role_name) 无需扩容
|
|
43
|
-
ALTER TABLE sys_user_role ADD COLUMN tenant_id TEXT NOT NULL DEFAULT 'default';
|
|
44
|
-
ALTER TABLE sys_refresh_token ADD COLUMN tenant_id TEXT NOT NULL DEFAULT 'default';
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
-- 0016__org(mysql 方言):组织架构领域。表定性与列语义同 0016__org.sql 头注释。
|
|
2
|
-
-- 差异(沿用 0001__create_users.mysql.sql / 0015__tenant.mysql.sql 的既有惯例):
|
|
3
|
-
-- · TEXT 不能带字面默认值、不能直接做唯一键 → 键列按业务长度收窄为 VARCHAR;
|
|
4
|
-
-- · AUTOINCREMENT → BIGINT AUTO_INCREMENT;秒级 epoch 的 INTEGER → BIGINT;
|
|
5
|
-
-- · 索引写在 CREATE TABLE 内(MySQL 无 CREATE INDEX IF NOT EXISTS);
|
|
6
|
-
-- · 复合唯一键 (tenant_id, origin, origin_id) = (255+32+128) × 4B = 1660B < InnoDB 3072B 上限。
|
|
7
|
-
CREATE TABLE IF NOT EXISTS sys_department (
|
|
8
|
-
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
9
|
-
tenant_id VARCHAR(255) NOT NULL,
|
|
10
|
-
origin VARCHAR(32) NOT NULL DEFAULT 'local',
|
|
11
|
-
origin_id VARCHAR(128) NOT NULL,
|
|
12
|
-
parent_id BIGINT NULL,
|
|
13
|
-
name VARCHAR(255),
|
|
14
|
-
name_en VARCHAR(255),
|
|
15
|
-
order_no INTEGER NOT NULL DEFAULT 0,
|
|
16
|
-
sync_visible INTEGER NOT NULL DEFAULT 1,
|
|
17
|
-
deleted INTEGER NOT NULL DEFAULT 0,
|
|
18
|
-
seen_job_id BIGINT,
|
|
19
|
-
update_time BIGINT NOT NULL,
|
|
20
|
-
UNIQUE KEY uk_sys_department_origin (tenant_id, origin, origin_id),
|
|
21
|
-
KEY idx_sys_department_parent (tenant_id, parent_id, deleted, order_no)
|
|
22
|
-
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
23
|
-
|
|
24
|
-
CREATE TABLE IF NOT EXISTS sys_dept_member (
|
|
25
|
-
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
26
|
-
tenant_id VARCHAR(255) NOT NULL,
|
|
27
|
-
user_id BIGINT NOT NULL,
|
|
28
|
-
dept_id BIGINT NOT NULL,
|
|
29
|
-
order_no INTEGER NOT NULL DEFAULT 0,
|
|
30
|
-
is_leader INTEGER NOT NULL DEFAULT 0,
|
|
31
|
-
is_main INTEGER NOT NULL DEFAULT 0,
|
|
32
|
-
update_time BIGINT NOT NULL,
|
|
33
|
-
UNIQUE KEY uk_sys_dept_member (tenant_id, user_id, dept_id),
|
|
34
|
-
KEY idx_sys_dept_member_dept (tenant_id, dept_id, order_no),
|
|
35
|
-
KEY idx_sys_dept_member_user (tenant_id, user_id, is_main)
|
|
36
|
-
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
37
|
-
|
|
38
|
-
ALTER TABLE users ADD COLUMN activated INTEGER NOT NULL DEFAULT 0;
|
|
39
|
-
ALTER TABLE users ADD COLUMN position VARCHAR(255) NULL;
|
|
40
|
-
ALTER TABLE users ADD COLUMN external_status INTEGER NULL;
|
|
41
|
-
UPDATE users SET activated = 1;
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
-- 0016__org(postgres 方言):组织架构领域。表定性与列语义同 0016__org.sql 头注释。
|
|
2
|
-
-- 差异(沿用 0001__create_users.pg.sql 的既有惯例):
|
|
3
|
-
-- · AUTOINCREMENT → BIGSERIAL(SERIAL 系允许 seed 显式 id,GENERATED ALWAYS 系不允许);
|
|
4
|
-
-- · TEXT 在 pg 合法,键列与文本列一律保留 TEXT,无需收窄;
|
|
5
|
-
-- · 秒级 epoch 的 INTEGER → BIGINT。
|
|
6
|
-
CREATE TABLE IF NOT EXISTS sys_department (
|
|
7
|
-
id BIGSERIAL PRIMARY KEY,
|
|
8
|
-
tenant_id TEXT NOT NULL,
|
|
9
|
-
origin TEXT NOT NULL DEFAULT 'local',
|
|
10
|
-
origin_id TEXT NOT NULL,
|
|
11
|
-
parent_id BIGINT,
|
|
12
|
-
name TEXT,
|
|
13
|
-
name_en TEXT,
|
|
14
|
-
order_no INTEGER NOT NULL DEFAULT 0,
|
|
15
|
-
sync_visible INTEGER NOT NULL DEFAULT 1,
|
|
16
|
-
deleted INTEGER NOT NULL DEFAULT 0,
|
|
17
|
-
seen_job_id BIGINT,
|
|
18
|
-
update_time BIGINT NOT NULL,
|
|
19
|
-
UNIQUE (tenant_id, origin, origin_id)
|
|
20
|
-
);
|
|
21
|
-
CREATE INDEX IF NOT EXISTS idx_sys_department_parent ON sys_department (tenant_id, parent_id, deleted, order_no);
|
|
22
|
-
|
|
23
|
-
CREATE TABLE IF NOT EXISTS sys_dept_member (
|
|
24
|
-
id BIGSERIAL PRIMARY KEY,
|
|
25
|
-
tenant_id TEXT NOT NULL,
|
|
26
|
-
user_id BIGINT NOT NULL,
|
|
27
|
-
dept_id BIGINT NOT NULL,
|
|
28
|
-
order_no INTEGER NOT NULL DEFAULT 0,
|
|
29
|
-
is_leader INTEGER NOT NULL DEFAULT 0,
|
|
30
|
-
is_main INTEGER NOT NULL DEFAULT 0,
|
|
31
|
-
update_time BIGINT NOT NULL,
|
|
32
|
-
UNIQUE (tenant_id, user_id, dept_id)
|
|
33
|
-
);
|
|
34
|
-
CREATE INDEX IF NOT EXISTS idx_sys_dept_member_dept ON sys_dept_member (tenant_id, dept_id, order_no);
|
|
35
|
-
CREATE INDEX IF NOT EXISTS idx_sys_dept_member_user ON sys_dept_member (tenant_id, user_id, is_main);
|
|
36
|
-
|
|
37
|
-
ALTER TABLE users ADD COLUMN activated INTEGER NOT NULL DEFAULT 0;
|
|
38
|
-
ALTER TABLE users ADD COLUMN position TEXT;
|
|
39
|
-
ALTER TABLE users ADD COLUMN external_status INTEGER;
|
|
40
|
-
UPDATE users SET activated = 1;
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
-- 0016__org(sqlite 方言):组织架构领域(CRUD 基线 + 外部源适配器的落点)
|
|
2
|
-
--
|
|
3
|
-
-- 两张表都是**租户表**(tenant: true):组织架构天然按租户隔离(企微部署下 tenant_id = corp_id),
|
|
4
|
-
-- 只在有租户上下文时被读写,与 users / sys_oplog 同组(0015 A 组口径)。
|
|
5
|
-
-- 故**不**进 config.yaml 的 tenant.shared_allow——那里只放全局映射/凭证。
|
|
6
|
-
--
|
|
7
|
-
-- 定位(方案 §14:CRUD 是基线,企微 / LDAP 只是适配器):
|
|
8
|
-
-- · 表里不出现任何 wecom_* / ldap_* 字段,来源只由 origin 表达;
|
|
9
|
-
-- · origin 是**归属权**标识(D13):local = 本站管理员全权可 CRUD;
|
|
10
|
-
-- wecom / ldap / sso = 该适配器管辖,同步与回收只作用于自己 origin 的行。
|
|
11
|
-
--
|
|
12
|
-
-- 列的来源语义:
|
|
13
|
-
-- origin_id 外部源主键(企微部门 id / LDAP entryUUID);origin='local' 时由应用层生成稳定串
|
|
14
|
-
-- parent_id 本地父部门 id(不是外部 id)——本地部门与同步部门可混挂,且不随外部调整而变
|
|
15
|
-
-- name 未获权限时为 NULL(企微代开发未授权「部门名」即如此),展示层用 origin_id 兜底
|
|
16
|
-
-- sync_visible 同步可见性,**仅由同步轮次维护**(失去可见范围 → 0),本地部门恒 1
|
|
17
|
-
-- deleted 软删除。**只由外部源的删除事件置 1**(D9):本地删除走真删,见 §14.4-②
|
|
18
|
-
-- seen_job_id 最近一次完整全量命中的 job,用于墓碑回收(回收前必先校验本轮完整且无 skip)
|
|
19
|
-
CREATE TABLE IF NOT EXISTS sys_department (
|
|
20
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
21
|
-
tenant_id TEXT NOT NULL,
|
|
22
|
-
origin TEXT NOT NULL DEFAULT 'local',
|
|
23
|
-
origin_id TEXT NOT NULL,
|
|
24
|
-
parent_id INTEGER,
|
|
25
|
-
name TEXT,
|
|
26
|
-
name_en TEXT,
|
|
27
|
-
order_no INTEGER NOT NULL DEFAULT 0,
|
|
28
|
-
sync_visible INTEGER NOT NULL DEFAULT 1,
|
|
29
|
-
deleted INTEGER NOT NULL DEFAULT 0,
|
|
30
|
-
seen_job_id INTEGER,
|
|
31
|
-
update_time INTEGER NOT NULL,
|
|
32
|
-
UNIQUE (tenant_id, origin, origin_id)
|
|
33
|
-
);
|
|
34
|
-
CREATE INDEX IF NOT EXISTS idx_sys_department_parent ON sys_department (tenant_id, parent_id, deleted, order_no);
|
|
35
|
-
|
|
36
|
-
-- 成员 ↔ 部门(多对多):企微一个人可在多个部门,order / is_leader 与 department[] 逐位对应。
|
|
37
|
-
-- 全本地 id 关联(user_id + dept_id),**与来源完全无关**,接任何适配器都不用改这张表。
|
|
38
|
-
CREATE TABLE IF NOT EXISTS sys_dept_member (
|
|
39
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
40
|
-
tenant_id TEXT NOT NULL,
|
|
41
|
-
user_id INTEGER NOT NULL,
|
|
42
|
-
dept_id INTEGER NOT NULL,
|
|
43
|
-
order_no INTEGER NOT NULL DEFAULT 0,
|
|
44
|
-
is_leader INTEGER NOT NULL DEFAULT 0,
|
|
45
|
-
is_main INTEGER NOT NULL DEFAULT 0,
|
|
46
|
-
update_time INTEGER NOT NULL,
|
|
47
|
-
UNIQUE (tenant_id, user_id, dept_id)
|
|
48
|
-
);
|
|
49
|
-
CREATE INDEX IF NOT EXISTS idx_sys_dept_member_dept ON sys_dept_member (tenant_id, dept_id, order_no);
|
|
50
|
-
CREATE INDEX IF NOT EXISTS idx_sys_dept_member_user ON sys_dept_member (tenant_id, user_id, is_main);
|
|
51
|
-
|
|
52
|
-
-- users 扩列(三列都是与源无关的通用字段)
|
|
53
|
-
-- activated 是否登录过本站。同步会为「从未登录」的全员建档,若不加这道闸门,
|
|
54
|
-
-- contacts 目录(60 次/分、keyword≥2)可被用来遍历拖走整份企业名册(§9.1)
|
|
55
|
-
-- position 职务(本地 / LDAP / 企微都能填)
|
|
56
|
-
-- external_status 外部源侧的状态快照(企微 1/2/4/5)。**绝不自动改写 is_forbidden**——
|
|
57
|
-
-- 那会和本站管理员的手动启停互相覆盖(§4.3)
|
|
58
|
-
ALTER TABLE users ADD COLUMN activated INTEGER NOT NULL DEFAULT 0;
|
|
59
|
-
ALTER TABLE users ADD COLUMN position TEXT;
|
|
60
|
-
ALTER TABLE users ADD COLUMN external_status INTEGER;
|
|
61
|
-
-- 存量账号一律视为已激活:保持 contacts 的既有行为不变(它此前本就返回全部 users)
|
|
62
|
-
UPDATE users SET activated = 1;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
-- 0017__users_employee_no(mysql 方言):工号列 + 租户内唯一。列语义同 0017__users_employee_no.sql 头注释。
|
|
2
|
-
-- 差异(沿用 0015__tenant.mysql.sql 惯例):
|
|
3
|
-
-- · 键列不能用 TEXT 落唯一键 → 按业务长度收窄为 VARCHAR(64);
|
|
4
|
-
-- · 无部分索引 → 普通唯一键,NULL 在 MySQL 里可重复出现,效果等同「有值才唯一」;
|
|
5
|
-
-- · (255 + 64) × 4B = 1276B < InnoDB 3072B 上限。
|
|
6
|
-
ALTER TABLE users ADD COLUMN employee_no VARCHAR(64) NULL;
|
|
7
|
-
ALTER TABLE users ADD UNIQUE KEY uk_users_employee_no (tenant_id, employee_no);
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
-- 0017__users_employee_no(postgres 方言):工号列 + 租户内唯一。列语义同 0017__users_employee_no.sql 头注释。
|
|
2
|
-
-- 差异(沿用 0016__org.pg.sql 惯例):TEXT 在 pg 合法且可用于部分唯一索引,无需收窄类型。
|
|
3
|
-
ALTER TABLE users ADD COLUMN employee_no TEXT;
|
|
4
|
-
CREATE UNIQUE INDEX IF NOT EXISTS uk_users_employee_no ON users (tenant_id, employee_no) WHERE employee_no IS NOT NULL;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
-- 0017__users_employee_no(sqlite 方言):工号列 + 租户内唯一
|
|
2
|
-
--
|
|
3
|
-
-- 为什么单开一列而不是复用 display_name / 外部 origin_id:用户 CSV 导入导出要与源系统
|
|
4
|
-
-- 9 列表头完全互通,「工号」必须是独立可查字段。
|
|
5
|
-
-- 可空是必需的:存量本地账号没有工号,外部同步号也可能不带;唯一性只在有值时有意义,
|
|
6
|
-
-- 故用部分索引(sqlite/pg 都支持 WHERE),mysql 侧靠「NULL 可重复」的唯一键等效。
|
|
7
|
-
ALTER TABLE users ADD COLUMN employee_no TEXT;
|
|
8
|
-
CREATE UNIQUE INDEX IF NOT EXISTS uk_users_employee_no ON users (tenant_id, employee_no) WHERE employee_no IS NOT NULL;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
-- 0018__sys_role_title_key(sqlite 方言):角色显示名双列(R2,计划 docs/plans/20261103-0948-role-title-translate)。
|
|
2
|
-
-- title = 安装期解析文本(站点默认语言);title_key = 原始 i18n key(UI 实时翻译锚,
|
|
3
|
-
-- 对齐 sys_permission.title_key 先例)。可空:内置角色与 custom 角色无 key。
|
|
4
|
-
-- 回填口径:builtin=0 且 title 命中裸 key 形状。sqlite 无 REGEXP → GLOB '[a-z]*:*'
|
|
5
|
-
-- (首字符小写字母 + 含冒号的近似);真实数据里含冒号的 title 只可能是裸 key
|
|
6
|
-
-- (内置中文/管理员文本不含冒号),pg/mysql 两侧用完整正则同义钉死。
|
|
7
|
-
ALTER TABLE sys_role ADD COLUMN title_key TEXT;
|
|
8
|
-
UPDATE sys_role SET title_key = title WHERE builtin = 0 AND title GLOB '[a-z]*:*';
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { useQuery } from "@tanstack/react-query";
|
|
2
|
-
import { Card, Descriptions, Tag } from "antd";
|
|
3
|
-
import { useTranslation } from "react-i18next";
|
|
4
|
-
|
|
5
|
-
import { systemLoginMethodsGet } from "../../__client";
|
|
6
|
-
|
|
7
|
-
const METHOD_KEY: Record<string, string> = {
|
|
8
|
-
local: "system:loginMethodsPage.methodLocal",
|
|
9
|
-
ldap: "system:loginMethodsPage.methodLdap",
|
|
10
|
-
sso: "system:loginMethodsPage.methodSso",
|
|
11
|
-
wecom: "system:loginMethodsPage.methodWecom",
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
/** 登录方式发现(C5/D2,只读):local 恒在,ldap/sso/wecom 由设置项开关。 */
|
|
15
|
-
export default function LoginMethodsPage() {
|
|
16
|
-
const { t } = useTranslation();
|
|
17
|
-
const query = useQuery({ queryKey: ["system", "login-methods"], queryFn: systemLoginMethodsGet });
|
|
18
|
-
|
|
19
|
-
return (
|
|
20
|
-
<Card loading={query.isLoading} title={t("system:loginMethodsPage.title")}>
|
|
21
|
-
<Descriptions column={1}>
|
|
22
|
-
<Descriptions.Item label={t("system:menu.loginMethods")}>
|
|
23
|
-
{(query.data?.methods ?? []).map(m => (
|
|
24
|
-
<Tag key={m}>{METHOD_KEY[m] ? t(METHOD_KEY[m]) : m}</Tag>
|
|
25
|
-
))}
|
|
26
|
-
</Descriptions.Item>
|
|
27
|
-
</Descriptions>
|
|
28
|
-
</Card>
|
|
29
|
-
);
|
|
30
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|