一、超管端设计优化 - 文档管理SOP体系建立,docs目录重组 - 统一用户管理:跨租户全局视角,合并用户管理+公众用户 - 活动监管全模块重构:全部活动(统计卡片+阶段筛选+SuperDetail详情页)、报名数据/作品数据/评审进度(两层合一扁平列表)、成果发布(去Tab+统计+隐藏写操作) - 菜单精简:移除评委管理/评审规则/通知管理 - Bug修复:租户编辑丢失隐藏菜单、pageSize限制、主色统一 二、UGC绘本创作社区P0 - 数据库:10张新表(user_works/user_work_pages/work_tags等) - 子女账号独立化:Child升级为独立User,家长切换+独立登录 - 用户作品库:CRUD+发布审核,8个API - AI创作流程:提交→生成→保存到作品库,4个API - 作品广场:首页改造为推荐流,标签+搜索+排序 - 内容审核(超管端):作品审核+作品管理+标签管理 - 活动联动:WorkSelector作品选择器 - 布局改造:底部5Tab(发现/创作/活动/作品库/我的) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
4.1 KiB
4.1 KiB
DATABASE_URL 来源说明
📍 定义位置
DATABASE_URL 在 schema.prisma 中定义:
datasource db {
provider = "mysql"
url = env("DATABASE_URL") // ← 从这里读取环境变量
}
🔄 加载流程
1. 配置文件定义
DATABASE_URL 定义在环境配置文件中:
当前配置:.development.env 文件
DATABASE_URL="mysql://root:woshimima@localhost:3306/db_competition_management?schema=public"
2. NestJS ConfigModule 加载
在 app.module.ts 中配置:
ConfigModule.forRoot({
isGlobal: true,
envFilePath: ['.development.env'], // ← 从这里加载环境变量
})
加载顺序:
- NestJS ConfigModule 读取
.development.env文件 - 将文件中的
DATABASE_URL加载到process.env.DATABASE_URL - 应用启动时,所有模块都可以通过
ConfigService访问
3. Prisma 读取
Prisma 在以下时机读取 DATABASE_URL:
-
生成 Prisma Client 时:
npx prisma generate- 读取
process.env.DATABASE_URL - 生成类型定义(不连接数据库)
- 读取
-
运行迁移时:
npx prisma migrate dev npx prisma migrate deploy- 读取
process.env.DATABASE_URL - 连接到数据库执行迁移
- 读取
-
应用运行时:
PrismaService初始化时读取process.env.DATABASE_URL- 建立数据库连接
📂 配置文件优先级
根据 app.module.ts 的配置:
envFilePath: ['.development.env']
当前配置:
- ✅ 优先加载:
.development.env - ⚠️ 注意:如果设置了
ignoreEnvFile: true,则不会加载文件,只使用系统环境变量
🔍 验证 DATABASE_URL 来源
方法 1:查看环境变量(应用运行时)
# 启动应用后,访问配置验证接口
curl http://localhost:3001/api/config-verification/env-info
方法 2:查看启动日志
应用启动时会在控制台显示:
=== 环境配置验证 ===
DATABASE_URL: 已设置 mysql://root:woshimima@localhost:3306/db_competition_management?schema=public
方法 3:检查配置文件
cd backend
cat .development.env | grep DATABASE_URL
方法 4:在代码中验证
// 在任何服务中
constructor(private configService: ConfigService) {}
const dbUrl = this.configService.get('DATABASE_URL');
console.log('DATABASE_URL:', dbUrl);
🔐 环境变量来源优先级
Prisma 读取 DATABASE_URL 的优先级:
-
系统环境变量(最高优先级)
export DATABASE_URL="mysql://..." -
.env 文件(通过 ConfigModule 加载)
.development.env.env
-
默认值(如果都没有设置,Prisma 会报错)
📝 DATABASE_URL 格式
mysql://用户名:密码@主机:端口/数据库名?参数
示例:
# 本地数据库
DATABASE_URL="mysql://root:password@localhost:3306/db_competition_management?schema=public"
# 远程数据库
DATABASE_URL="mysql://user:pass@192.168.1.100:3306/db_name?schema=public"
# 带 SSL
DATABASE_URL="mysql://user:pass@host:3306/db_name?schema=public&sslmode=require"
⚠️ 注意事项
-
密码包含特殊字符:需要进行 URL 编码
# 密码: p@ssw0rd DATABASE_URL="mysql://user:p%40ssw0rd@localhost:3306/db" -
配置文件安全:
.development.env不应提交到 Git- 生产环境使用环境变量或密钥管理服务
-
Prisma 读取时机:
- Prisma 直接读取
process.env.DATABASE_URL - 不依赖 NestJS ConfigModule(但 ConfigModule 会将文件内容加载到
process.env)
- Prisma 直接读取
🔧 当前配置总结
- 配置文件:
.development.env - 配置项:
DATABASE_URL="mysql://root:woshimima@localhost:3306/db_competition_management?schema=public" - 加载方式:NestJS ConfigModule →
process.env→ Prisma - 验证方式:启动日志或
/api/config-verification/env-info接口