- 更新 User 模型:添加 name、isFirstLogin、role 枚举、team 关联 - 创建 Department 模型:支持层级结构和部门负责人 - 创建 Team 模型:小组管理和组长关联 - 更新 Product 模型:添加 createdBy、collaborators、visibility、软删除 - 更新 ProductSKU 模型:添加 ownerId、transferHistory、软删除 - 创建 Feedback 模型:问题反馈系统 - 创建 ActivityLog 模型:操作日志记录 - 添加 6 种角色枚举:SUPER_ADMIN、ADMIN、DEPARTMENT_MANAGER、TEAM_LEADER、DESIGNER、VIEWER - 添加用户状态枚举:ACTIVE、INACTIVE、SUSPENDED - 运行数据库迁移并生成 Prisma Client - 更新文档:TODO.md、PHASE1_COMPLETE.md
7.3 KiB
7.3 KiB
Phase 1 完成报告 - 数据库模型重构
✅ 完成时间
2025-12-12
📊 完成情况
已完成任务
- 更新 User 模型
- 创建 Department 模型
- 创建 Team 模型
- 更新 Product 模型
- 更新 ProductSKU 模型
- 创建 Feedback 模型
- 创建 ActivityLog 模型
- 运行数据库迁移
- 生成 Prisma Client
🗄️ 数据库模型总览
核心模型
1. User(用户)
- id: String (主键)
- email: String (唯一,用于登录)
- name: String (唯一,姓名/花名,用于登录)
- password: String
- isFirstLogin: Boolean (首次登录标识)
- avatar: String?
- phone: String?
- role: Role (6种角色枚举)
- departmentId: String?
- teamId: String?
- status: UserStatus (在职/离职/暂停)
- lastLoginAt: DateTime?
新增字段:
name:姓名/花名(替代 username)isFirstLogin:首次登录标识role:枚举类型(6种角色)teamId:所属小组status:用户状态枚举
2. Department(部门)
- id: String (主键)
- name: String (唯一)
- fullPath: String (完整路径)
- parentId: String? (父部门)
- managerId: String? (部门负责人)
- orderIndex: Int (排序)
特点:
- 支持层级结构(父子关系)
- 一对一关联部门负责人
3. Team(小组)
- id: String (主键)
- name: String
- description: String?
- departmentId: String (所属部门)
- leaderId: String? (组长)
- orderIndex: Int (排序)
特点:
- 属于某个部门
- 一对一关联组长
4. Product(产品)
- id: String (主键)
- modelNumber: String (唯一)
- name: String
- description: String?
- category: String?
- modelUrl: String?
- thumbnailUrl: String?
- createdBy: String (创建者)
- collaborators: Json? (协作者列表)
- departmentId: String? (所属部门)
- visibility: String (可见性)
- deletedAt: DateTime? (软删除)
新增字段:
createdBy:创建者IDcollaborators:协作者列表(JSON)departmentId:所属部门visibility:可见性控制deletedAt:软删除时间戳
5. ProductSKU(产品SKU)
- id: String (主键)
- productId: String
- skuCode: String (唯一)
- attributes: Json
- price: Decimal
- costPrice: Decimal?
- stock: Int
- images: String[]
- modelUrl: String?
- ownerId: String (负责人)
- transferHistory: Json? (交接记录)
- isActive: Boolean
- deletedAt: DateTime? (软删除)
新增字段:
ownerId:SKU 负责人IDtransferHistory:交接历史记录(JSON)deletedAt:软删除时间戳
6. Feedback(问题反馈)
- id: String (主键)
- productId: String
- skuId: String?
- title: String
- description: String
- images: String[]
- category: String
- priority: FeedbackPriority (优先级枚举)
- submitterId: String (提交者)
- assigneeId: String? (处理者)
- status: FeedbackStatus (状态枚举)
- comments: Json? (评论记录)
- resolution: String?
- resolvedAt: DateTime?
特点:
- 支持关联产品或具体SKU
- 优先级管理(低/中/高/紧急)
- 状态流转(待处理/处理中/已解决/已关闭)
7. ActivityLog(操作日志)
- id: String (主键)
- userId: String
- type: ActivityType (操作类型枚举)
- targetType: String?
- targetId: String?
- action: String
- changes: Json?
- metadata: Json?
- createdAt: DateTime
特点:
- 记录所有关键操作
- 支持多种操作类型
- 存储变更详情
🔢 枚举类型
Role(角色)
SUPER_ADMIN // 超级管理员
ADMIN // 管理员
DEPARTMENT_MANAGER // 部门管理员
TEAM_LEADER // 组长
DESIGNER // 设计师
VIEWER // 查看者
UserStatus(用户状态)
ACTIVE // 在职
INACTIVE // 离职
SUSPENDED // 暂停
FeedbackStatus(反馈状态)
PENDING // 待处理
IN_PROGRESS // 处理中
RESOLVED // 已解决
CLOSED // 已关闭
FeedbackPriority(反馈优先级)
LOW // 低
MEDIUM // 中
HIGH // 高
URGENT // 紧急
ActivityType(操作类型)
USER_REGISTER
USER_LOGIN
USER_LOGIN_FAILED
USER_LOGOUT
USER_FIRST_LOGIN_UPDATE
PRODUCT_CREATE
PRODUCT_UPDATE
PRODUCT_DELETE
SKU_CREATE
SKU_UPDATE
SKU_DELETE
SKU_TRANSFER
FILE_UPLOAD
FILE_DOWNLOAD
SHARE_LINK_CREATE
SHARE_LINK_ACCESS
FEEDBACK_CREATE
FEEDBACK_UPDATE
DATA_EXPORT
🔗 关系总览
User 关系
department→ Department (多对一)team→ Team (多对一)managedDepartment→ Department (一对一,作为部门负责人)managedTeam→ Team (一对一,作为组长)createdProducts→ Product[] (一对多,创建的产品)ownedSKUs→ ProductSKU[] (一对多,负责的SKU)feedbacks→ Feedback[] (一对多,提交的反馈)assignedFeedbacks→ Feedback[] (一对多,分配的反馈)activityLogs→ ActivityLog[] (一对多,操作日志)
Department 关系
parent→ Department (自关联,父部门)children→ Department[] (自关联,子部门)manager→ User (一对一,部门负责人)members→ User[] (一对多,部门成员)teams→ Team[] (一对多,小组)products→ Product[] (一对多,产品)
Team 关系
department→ Department (多对一,所属部门)leader→ User (一对一,组长)members→ User[] (一对多,小组成员)
Product 关系
creator→ User (多对一,创建者)department→ Department (多对一,所属部门)skus→ ProductSKU[] (一对多,SKU列表)assemblySteps→ AssemblyStep[] (一对多,装配步骤)panels→ Panel[] (一对多,板件)shareLinks→ ShareLink[] (一对多,分享链接)feedbacks→ Feedback[] (一对多,问题反馈)
ProductSKU 关系
product→ Product (多对一,所属产品)owner→ User (多对一,负责人)
Feedback 关系
product→ Product (多对一,关联产品)submitter→ User (多对一,提交者)assignee→ User (多对一,处理者)
ActivityLog 关系
user→ User (多对一,操作者)
📝 迁移记录
迁移文件
20251212025147_product_sku_structure- 初始 Product-SKU 结构20251212134426_init_permission_system- 权限系统初始化
迁移内容
- 创建所有枚举类型
- 更新 User 表结构
- 创建 Department 表
- 创建 Team 表
- 更新 Product 表结构
- 更新 ProductSKU 表结构
- 创建 Feedback 表
- 创建 ActivityLog 表
- 创建所有索引
- 创建所有外键约束
✅ 验证结果
Prisma Client 生成
✔ Generated Prisma Client (v6.19.1)
数据库迁移
✔ Database reset successful
✔ All migrations applied
类型检查
✔ No TypeScript errors
🎯 下一步
Phase 2: 认证系统实现
- 系统初始化
- 注册功能
- 登录功能
- 首次登录强制修改
- 密码管理
预计时间:1-2 周
📚 相关文档
Phase 1 完成!准备开始 Phase 2! 🚀