438 lines
11 KiB
TypeScript
438 lines
11 KiB
TypeScript
export type JsonSeedValue =
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null
|
|
| JsonSeedValue[]
|
|
| { [key: string]: JsonSeedValue };
|
|
|
|
export interface AppDataSeedEntry {
|
|
key: string;
|
|
value: JsonSeedValue;
|
|
}
|
|
|
|
export const DEFAULT_PRODUCT_ID = 'product-ftb-app';
|
|
export const DEFAULT_PRODUCT_NAME = '翻台宝应用';
|
|
const seedDate = '2026-07-01';
|
|
const seedCreatedAt = '2026-07-01T00:00:00.000Z';
|
|
|
|
const importedProjectNames = [
|
|
'通知公告',
|
|
'产品库',
|
|
'AI帮助',
|
|
'读书',
|
|
'工作计划',
|
|
'考勤',
|
|
'埋点统计',
|
|
'培训',
|
|
'案例学习',
|
|
'权限管理',
|
|
'人事评价',
|
|
'数据分析',
|
|
'薪酬',
|
|
'巡店',
|
|
'中差评',
|
|
'值班',
|
|
'我的',
|
|
'通讯录',
|
|
'人事入转调离',
|
|
'审批',
|
|
'IM即时聊天',
|
|
'全局任务',
|
|
'经营报告',
|
|
'人才发展',
|
|
'电子合同',
|
|
'系统管理',
|
|
'证件管理',
|
|
'问卷调查',
|
|
'充值',
|
|
'企业微信机器人',
|
|
'组织架构',
|
|
'日志',
|
|
'文化打卡',
|
|
'资料库',
|
|
'利润管理',
|
|
'其它',
|
|
'桌访',
|
|
'AI舆情助手',
|
|
'AI员工关系助手',
|
|
'AI经营助手',
|
|
'文件列表',
|
|
'设备管理',
|
|
'录音详情',
|
|
'硬件对接',
|
|
'词库配置',
|
|
'数据同步',
|
|
'算法服务',
|
|
'硬件管理后台',
|
|
'翻台宝后台',
|
|
'评分面板',
|
|
'桌访整合',
|
|
'系统整合',
|
|
'绩效',
|
|
'日常助手',
|
|
'店长助手',
|
|
'增长管理',
|
|
];
|
|
|
|
export function buildDefaultProjects() {
|
|
return importedProjectNames.map((name, index) => ({
|
|
id: `project-ftb-${String(index + 1).padStart(3, '0')}`,
|
|
name,
|
|
description: '',
|
|
createdAt: seedCreatedAt,
|
|
}));
|
|
}
|
|
|
|
const customerSourceTargetNames = [
|
|
'方砖厂',
|
|
'全部客户',
|
|
'晓秧锅',
|
|
'老船长',
|
|
'失眠烧烤',
|
|
'百年神厨',
|
|
'渝是乎',
|
|
'王大爷烧烤',
|
|
'左庭右院',
|
|
'咱妈烀饼',
|
|
'叁宝烤肉',
|
|
'潼厨',
|
|
'苏福记',
|
|
'农耕记',
|
|
'呼啦面馆',
|
|
'古家辣子',
|
|
'老郑家',
|
|
'管氏',
|
|
'六月雪',
|
|
'公司内部',
|
|
'天山传奇',
|
|
'蜀镇',
|
|
'灶东家',
|
|
'牧家厨房',
|
|
'大河宴',
|
|
'蓉和妈妈菜',
|
|
'记忆包工坊',
|
|
'聚龙',
|
|
'茅溪',
|
|
'八菜一汤',
|
|
'醉巴鲜',
|
|
'菡湘餐饮',
|
|
'洞庭楚湘',
|
|
'建国烧烤',
|
|
'吾里家',
|
|
'蔚蓝书吧',
|
|
'新沙烧烤',
|
|
'酒煮江湖',
|
|
'奎屯俭寨',
|
|
'渝厨',
|
|
'饼司令',
|
|
'重庆面包路',
|
|
'101披萨',
|
|
'仲和小馆',
|
|
'淄博黎叔',
|
|
'秦阿哥',
|
|
'秦门西安小馆',
|
|
'西椒和牛',
|
|
'渔痴鱼醉',
|
|
'德天肥牛',
|
|
'稻香园',
|
|
'我叫湘',
|
|
'贝勒爷南门涮肉',
|
|
'丝恋丝娃娃',
|
|
'赣掌门',
|
|
'肖记牛肉鱼杂馆',
|
|
'朱三伯',
|
|
'西安70大院',
|
|
'武圣羊汤',
|
|
'壶茶馆',
|
|
'熊家无二',
|
|
'滇芸山',
|
|
'壹周餐餐饮',
|
|
'钟家凉粉',
|
|
'炭亲干锅',
|
|
'麻步姐',
|
|
'杨记兴',
|
|
];
|
|
|
|
function buildCustomerSourceTargets(): JsonSeedValue[] {
|
|
return customerSourceTargetNames.map((name, index) => ({
|
|
id: `source-customer-${String(index + 1).padStart(3, '0')}`,
|
|
name,
|
|
sourceType: 'customer',
|
|
createdAt: seedDate,
|
|
}));
|
|
}
|
|
|
|
function buildDefaultProductOverview(): JsonSeedValue {
|
|
const projects = buildDefaultProjects();
|
|
return {
|
|
id: DEFAULT_PRODUCT_ID,
|
|
name: DEFAULT_PRODUCT_NAME,
|
|
description: '',
|
|
createdAt: seedCreatedAt,
|
|
updatedAt: seedCreatedAt,
|
|
projects,
|
|
versions: [],
|
|
_count: {
|
|
requirements: 0,
|
|
projects: projects.length,
|
|
versions: 0,
|
|
},
|
|
};
|
|
}
|
|
|
|
const requirementTypes: JsonSeedValue[] = [
|
|
{ id: 'type-1', name: '新功能', createdAt: '2024-01-01' },
|
|
{ id: 'type-2', name: 'BUG修复', createdAt: '2024-01-01' },
|
|
{ id: 'type-3', name: '数据需求/埋点需求', createdAt: '2024-01-01' },
|
|
{ id: 'type-4', name: '优化需求', createdAt: '2024-01-01' },
|
|
{ id: 'type-5', name: '模块重构', createdAt: '2024-01-01' },
|
|
{ id: 'type-6', name: '缺陷修复', createdAt: '2024-01-01' },
|
|
{ id: 'type-7', name: '功能优化', createdAt: '2024-01-01' },
|
|
{ id: 'type-8', name: '插单/紧急需求', createdAt: '2024-01-01' },
|
|
];
|
|
|
|
const requirementPlatforms: JsonSeedValue[] = [
|
|
{ id: 'platform-1', name: 'Web', createdAt: '2024-01-01' },
|
|
{ id: 'platform-2', name: 'App(iOS)', createdAt: '2024-01-01' },
|
|
{ id: 'platform-3', name: 'App(Android)', createdAt: '2024-01-01' },
|
|
{ id: 'platform-4', name: '小程序', createdAt: '2024-01-01' },
|
|
{ id: 'platform-5', name: 'H5', createdAt: '2024-01-01' },
|
|
];
|
|
|
|
const overtimeReasons: JsonSeedValue[] = [
|
|
{ id: 'reason-1', name: '需求变更', createdAt: '2024-01-01' },
|
|
{ id: 'reason-2', name: '需求新增', createdAt: '2024-01-01' },
|
|
{ id: 'reason-3', name: '版本冲刺', createdAt: '2024-01-01' },
|
|
{ id: 'reason-4', name: 'Bug修复', createdAt: '2024-01-01' },
|
|
{ id: 'reason-5', name: '线上问题修复', createdAt: '2024-01-01' },
|
|
{ id: 'reason-6', name: '测试问题整改', createdAt: '2024-01-01' },
|
|
{ id: 'reason-7', name: '技术难点攻关', createdAt: '2024-01-01' },
|
|
{ id: 'reason-8', name: '联调问题', createdAt: '2024-01-01' },
|
|
{ id: 'reason-9', name: '上游交付延误', createdAt: '2024-01-01' },
|
|
{ id: 'reason-10', name: '工作量超负荷', createdAt: '2024-01-01' },
|
|
{ id: 'reason-11', name: '返工修改', createdAt: '2024-01-01' },
|
|
];
|
|
|
|
const departments: JsonSeedValue[] = [
|
|
{ id: 'dept-1', name: '产品部', order: 1, createdAt: '2024-01-01' },
|
|
{ id: 'dept-2', name: '技术部', order: 2, createdAt: '2024-01-01' },
|
|
{ id: 'dept-2-1', name: '前端组', order: 1, parentId: 'dept-2', createdAt: '2024-01-01' },
|
|
{ id: 'dept-2-2', name: '后端组', order: 2, parentId: 'dept-2', createdAt: '2024-01-01' },
|
|
{ id: 'dept-2-3', name: '测试组', order: 3, parentId: 'dept-2', createdAt: '2024-01-01' },
|
|
{ id: 'dept-3', name: '设计部', order: 3, createdAt: '2024-01-01' },
|
|
{ id: 'dept-4', name: '运营部', order: 4, createdAt: '2024-01-01' },
|
|
];
|
|
|
|
const roles: JsonSeedValue[] = [
|
|
{
|
|
id: 'role-admin',
|
|
name: '超级管理员',
|
|
isSystem: true,
|
|
createdAt: '2024-01-01',
|
|
description: '拥有系统全部权限',
|
|
permissions: ['*'],
|
|
},
|
|
{
|
|
id: 'role-pm',
|
|
name: '产品经理',
|
|
createdAt: '2024-01-01',
|
|
description: '管理产品和需求',
|
|
permissions: [
|
|
'product:view',
|
|
'product:create',
|
|
'product:edit',
|
|
'product:delete',
|
|
'project:view',
|
|
'project:create',
|
|
'project:edit',
|
|
'project:delete',
|
|
'version:view',
|
|
'version:create',
|
|
'version:edit',
|
|
'version:delete',
|
|
'requirement:view',
|
|
'requirement:create',
|
|
'requirement:edit',
|
|
'requirement:delete',
|
|
'version.req:view',
|
|
'version.req:manage',
|
|
'version.product_plan:view',
|
|
'version.product_plan:manage',
|
|
'overtime:view',
|
|
'member:view',
|
|
'role:view',
|
|
'version.research:view',
|
|
'version.ui_plan:view',
|
|
'version.devtask:view',
|
|
'version.testcase:view',
|
|
'version.bug:view',
|
|
'xiaobao.warning:view',
|
|
'xiaobao.warning:manage',
|
|
],
|
|
},
|
|
{
|
|
id: 'role-lead',
|
|
name: '组长',
|
|
createdAt: '2024-01-01',
|
|
description: '管理本组任务和本部门加班记录',
|
|
permissions: [
|
|
'product:view',
|
|
'project:view',
|
|
'version:view',
|
|
'requirement:view',
|
|
'version.req:view',
|
|
'version.research:view',
|
|
'version.product_plan:view',
|
|
'version.ui_plan:view',
|
|
'version.devtask:view',
|
|
'version.devtask:manage',
|
|
'version.testcase:view',
|
|
'version.testcase:manage',
|
|
'version.bug:view',
|
|
'version.bug:create',
|
|
'version.bug:edit',
|
|
'version.bug:delete',
|
|
'xiaobao.warning:view',
|
|
'overtime:view',
|
|
'overtime:create',
|
|
'overtime:export',
|
|
],
|
|
},
|
|
{
|
|
id: 'role-dev',
|
|
name: '开发工程师',
|
|
createdAt: '2024-01-01',
|
|
description: '负责开发任务',
|
|
permissions: [
|
|
'product:view',
|
|
'project:view',
|
|
'version:view',
|
|
'requirement:view',
|
|
'version.req:view',
|
|
'version.devtask:view',
|
|
'version.devtask:manage',
|
|
'version.bug:view',
|
|
'version.bug:edit',
|
|
'version.research:view',
|
|
'version.product_plan:view',
|
|
'version.ui_plan:view',
|
|
'version.testcase:view',
|
|
'overtime:view',
|
|
'overtime:create',
|
|
'xiaobao.warning:view',
|
|
],
|
|
},
|
|
{
|
|
id: 'role-test',
|
|
name: '测试工程师',
|
|
createdAt: '2024-01-01',
|
|
description: '负责测试任务',
|
|
permissions: [
|
|
'product:view',
|
|
'project:view',
|
|
'version:view',
|
|
'requirement:view',
|
|
'version.req:view',
|
|
'version.testcase:view',
|
|
'version.testcase:manage',
|
|
'version.bug:view',
|
|
'version.bug:create',
|
|
'version.bug:edit',
|
|
'version.bug:delete',
|
|
'version.research:view',
|
|
'version.product_plan:view',
|
|
'version.ui_plan:view',
|
|
'version.devtask:view',
|
|
'overtime:view',
|
|
'overtime:create',
|
|
'xiaobao.warning:view',
|
|
],
|
|
},
|
|
{
|
|
id: 'role-design',
|
|
name: '设计师',
|
|
createdAt: '2024-01-01',
|
|
description: '负责UI/UX设计',
|
|
permissions: [
|
|
'product:view',
|
|
'project:view',
|
|
'version:view',
|
|
'requirement:view',
|
|
'version.req:view',
|
|
'version.ui_plan:view',
|
|
'version.ui_plan:manage',
|
|
'version.research:view',
|
|
'version.product_plan:view',
|
|
'version.devtask:view',
|
|
'version.testcase:view',
|
|
'version.bug:view',
|
|
'overtime:view',
|
|
'overtime:create',
|
|
'xiaobao.warning:view',
|
|
],
|
|
},
|
|
];
|
|
|
|
const superAdminMember: JsonSeedValue = {
|
|
id: 'm-8',
|
|
name: '超级管理员',
|
|
email: 'chenshi@company.com',
|
|
phone: '13200132008',
|
|
roleId: 'role-admin',
|
|
isSystem: true,
|
|
password: 'Ftb@2024',
|
|
createdAt: '2024-01-01',
|
|
departmentId: 'dept-1',
|
|
};
|
|
|
|
const passwordRule: JsonSeedValue = {
|
|
length: 8,
|
|
prefix: 'Ftb',
|
|
includeNumbers: true,
|
|
includeSpecial: false,
|
|
includeLowercase: true,
|
|
includeUppercase: true,
|
|
};
|
|
|
|
export function buildAppDataSeed(): AppDataSeedEntry[] {
|
|
return [
|
|
{ key: 'products-overview', value: [buildDefaultProductOverview()] },
|
|
{
|
|
key: 'requirements',
|
|
value: {
|
|
requirements: [],
|
|
sourceTargets: buildCustomerSourceTargets(),
|
|
types: requirementTypes,
|
|
platforms: requirementPlatforms,
|
|
},
|
|
},
|
|
{ key: 'version-plans', value: [] },
|
|
{ key: 'dev-tasks', value: [] },
|
|
{ key: 'test-cases', value: [] },
|
|
{ key: 'bugs', value: [] },
|
|
{
|
|
key: 'members',
|
|
value: {
|
|
departments,
|
|
members: [superAdminMember],
|
|
roles,
|
|
passwordRule,
|
|
},
|
|
},
|
|
{ key: 'task-categories', value: [] },
|
|
{ key: 'task-worklogs', value: [] },
|
|
{ key: 'work-activities', value: [] },
|
|
{ key: 'xiaobao-risk-insights', value: [] },
|
|
{ key: 'xiaobao-risk-snapshots', value: [] },
|
|
{ key: 'xiaobao-warning-views', value: [] },
|
|
{
|
|
key: 'overtime',
|
|
value: {
|
|
records: [],
|
|
reasons: overtimeReasons,
|
|
},
|
|
},
|
|
];
|
|
}
|