From 198517bde4f10f79aebf472bfc95140e0f3c9d99 Mon Sep 17 00:00:00 2001 From: liuyun Date: Wed, 14 Oct 2026 12:42:53 +0800 Subject: [PATCH] =?UTF-8?q?feat(c0):=20=E9=95=BF=E6=8A=A4=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E8=8F=9C=E5=8D=95=E7=BB=84=20+=20=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=20seed=20=E9=AA=A8=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- prisma/seed-catalog.ts | 17 +++++++++++++++++ prisma/seed.ts | 4 ++++ src/common/tenant-template.ts | 11 +++++++++++ 3 files changed, 32 insertions(+) create mode 100644 prisma/seed-catalog.ts diff --git a/prisma/seed-catalog.ts b/prisma/seed-catalog.ts new file mode 100644 index 0000000..a2ff3a9 --- /dev/null +++ b/prisma/seed-catalog.ts @@ -0,0 +1,17 @@ +import { PrismaClient } from '@prisma/client'; + +export async function seedCatalog(prisma: PrismaClient): Promise { + // loc_config 骨架(昆明 + 占位州市) + await prisma.locConfig.upsert({ + where: { locCode: '530100' }, + update: { locName: '昆明市', svcSource: 'local' }, + create: { locCode: '530100', locName: '昆明市', svcSource: 'local' }, + }); + // L1/L2/L3 目录项:C0 先落结构 + 少量样例(如「协助翻身叩背排痰」), + // 全量 36/45 项数据在 C1 上线前由运营导入(字段结构已就绪)。 + await prisma.svcNational.upsert({ + where: { natCode: 'L0000106010010000' }, + update: {}, + create: { natCode: 'L0000106010010000', natName: '协助翻身叩背排痰', natCategory: 'life', isMedical: false }, + }); +} diff --git a/prisma/seed.ts b/prisma/seed.ts index b283c4c..101e6ee 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -1,6 +1,7 @@ import { PrismaClient } from '@prisma/client'; import { PLATFORM_ROLE_CODE, PLATFORM_TENANT_CODE } from '../src/common/constants.js'; import { initTenant } from '../src/common/tenant-template.js'; +import { seedCatalog } from './seed-catalog.js'; const prisma = new PrismaClient(); @@ -29,6 +30,9 @@ async function main(): Promise { includePlatformPerms: true, }); + // 3. 全局目录 seed(loc_config 骨架 + 国家基准库样例) + await seedCatalog(prisma); + console.log(`seed 完成:平台租户 ${TENANT}、用户 ${ADMIN_USERNAME}、角色 ${SUPER_ROLE}。`); } diff --git a/src/common/tenant-template.ts b/src/common/tenant-template.ts index 2878d40..a0411a8 100644 --- a/src/common/tenant-template.ts +++ b/src/common/tenant-template.ts @@ -19,6 +19,17 @@ export const MENUS = [ { code: 'audit', name: '操作日志', parent: 'monitor', path: '/monitor/audit', component: 'monitor/audit/index', icon: 'mdi:clipboard-text', sort: 1 }, { code: 'login-log', name: '登录日志', parent: 'monitor', path: '/monitor/login-log', component: 'monitor/login-log/index', icon: 'mdi:login', sort: 2 }, { code: 'session', name: '在线会话', parent: 'monitor', path: '/monitor/session', component: 'monitor/session/index', icon: 'mdi:account-multiple-check', sort: 3 }, + { code: 'ltc', name: '长护服务', parent: null, path: '/ltc', component: 'Layout', icon: 'mdi:home-heart', sort: 5 }, + { code: 'elder', name: '服务对象', parent: 'ltc', path: '/ltc/elder', component: 'ltc/elder/index', icon: 'mdi:account-heart', sort: 1 }, + { code: 'schedule', name: '排班派单', parent: 'ltc', path: '/ltc/schedule', component: 'ltc/schedule/index', icon: 'mdi:calendar-clock', sort: 2 }, + { code: 'record', name: '工单留痕', parent: 'ltc', path: '/ltc/record', component: 'ltc/record/index', icon: 'mdi:clipboard-check', sort: 3 }, + { code: 'qc', name: '质控中心', parent: 'ltc', path: '/ltc/qc', component: 'ltc/qc/index', icon: 'mdi:shield-check', sort: 4 }, + { code: 'document', name: '文书档案', parent: 'ltc', path: '/ltc/document', component: 'ltc/document/index', icon: 'mdi:file-document', sort: 5 }, + { code: 'svc-config', name: '服务机构设置', parent: 'ltc', path: '/ltc/config', component: 'Layout', icon: 'mdi:cog', sort: 6 }, + { code: 'svc-config-info', name: '机构信息', parent: 'svc-config', path: '/ltc/config/info', component: 'ltc/config/info/index', icon: 'mdi:office-building', sort: 1 }, + { code: 'svc-config-catalog', name: '服务项目与配价', parent: 'svc-config', path: '/ltc/config/catalog', component: 'ltc/config/catalog/index', icon: 'mdi:format-list-bulleted', sort: 2 }, + { code: 'svc-config-photo', name: '拍照分档配置', parent: 'svc-config', path: '/ltc/config/photo', component: 'ltc/config/photo/index', icon: 'mdi:camera', sort: 3 }, + { code: 'svc-config-qc', name: '质控提醒配置', parent: 'svc-config', path: '/ltc/config/qc', component: 'ltc/config/qc/index', icon: 'mdi:bell-alert', sort: 4 }, ]; /** 接口资源(每个受控接口一个,code = 权限码)。 */