- 创建统一的下载错误处理模块 (lib/download-errors.ts) - 实现13种错误类型分类和中文错误消息 - 后端统一使用 createDownloadError 创建标准化错误响应 - 前端统一使用 parseDownloadError 解析错误并显示 - 修复正式系统数据库Schema,添加产品全案相关字段和表 - 执行数据库迁移:添加 task_no, task_status, task_fetched_at 字段 - 创建 material_assets, api_keys, api_call_logs 表
2.7 KiB
2.7 KiB
Shadow 数据库修复报告
📋 修复日期
2025-01-24
🔍 问题描述
错误信息:
Invalid `prisma.user.findUnique()` invocation: The column `users.employmentStatus` does not exist in the current database.
相关错误:
/api/system-settings返回 500 错误/api/auth/callback/credentials返回 401 错误
✅ 修复内容
已添加的字段
在 lobechat_stage 数据库的 users 表中添加了以下字段:
-
employmentStatus (TEXT)
- 用途:人员状态(在职/请假/离职/转岗)
- 默认值:'active'
- 索引:已创建
-
resignationDate (TIMESTAMP)
- 用途:离职日期
-
transferDate (TIMESTAMP)
- 用途:转岗日期
-
transferToDeptId (TEXT)
- 用途:转岗目标部门ID
- 索引:已创建
-
employmentNote (TEXT)
- 用途:人员状态备注
-
statusChangedBy (TEXT)
- 用途:状态变更操作人ID
-
statusChangedAt (TIMESTAMP)
- 用途:状态变更时间
📝 修复脚本
使用的修复脚本:
scripts/fix-shadow-db-users-fields.ps1
✅ 验证结果
字段验证查询结果:
column_name | data_type
------------------+-----------------------------
employmentNote | text
employmentStatus | text
resignationDate | timestamp without time zone
statusChangedAt | timestamp without time zone
statusChangedBy | text
transferDate | timestamp without time zone
transferToDeptId | text
(7 rows)
所有字段已成功添加
🔄 容器状态
- ✅ 容器已重启:
youyidian-3d-shadow - ✅ 容器运行正常
📝 后续步骤
-
测试登录功能
- 访问:http://192.168.58.20:5320/login
- 验证登录是否正常
-
检查 API 状态
- 验证
/api/system-settings是否正常 - 验证
/api/auth/callback/credentials是否正常
- 验证
-
可选优化
- 如果需要,可以手动设置现有用户的
employmentStatus默认值 - 可以使用 Prisma Studio 验证数据
- 如果需要,可以手动设置现有用户的
⚠️ 注意事项
-
默认值设置
employmentStatus字段的默认值设置失败(PostgreSQL 限制)- 字段已存在,不影响使用
- 新用户插入时会使用 Prisma schema 中定义的默认值
-
现有数据
- 现有用户的
employmentStatus字段为 NULL - 如果需要,可以手动更新:
UPDATE users SET "employmentStatus" = 'active' WHERE "employmentStatus" IS NULL;
- 现有用户的
🔗 相关文档
prisma/schema.prisma- Prisma schema 定义scripts/fix-shadow-db-users-fields.ps1- 修复脚本scripts/fix-shadow-db-users-fields.sql- SQL 脚本(参考)