npm test 会先执行测试库预检:确认 .env.test 存在、DATABASE_URL 指向测试库,并验证 MySQL 可连接。如果 Docker 未启动、测试库不存在,或 culture_user 没有测试库权限,命令会直接失败并输出可执行修复提示,不会把环境问题伪装成测试通过。
如需手动执行,可按以下步骤:
复制测试环境示例:
Copy-Item .env.test.example .env.test
创建独立测试库:
npm run mysql:up
docker compose -p culture-co-creation exec mysql mysql -uroot -proot_password -e "CREATE DATABASE IF NOT EXISTS culture_co_creation_test DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; GRANT ALL PRIVILEGES ON culture_co_creation_test.* TO 'culture_user'@'%'; FLUSH PRIVILEGES;"
对测试库执行迁移和种子数据:
$env:DATABASE_URL="mysql://culture_user:culture_password@localhost:3306/culture_co_creation_test"
npm run db:deploy
npm run db:seed
Remove-Item Env:DATABASE_URL
文化共创 MVP
面向非遗文化共创的本地 MVP,覆盖推荐、Agent 助手、AI 创作、知识库、社区、数字艺术、版权收益和后台审核。
本地运行
默认地址:
http://127.0.0.1:5173http://127.0.0.1:8787如果已有开发库曾通过
prisma db push建表且数据需要保留,不要直接重置数据库。确认库结构与prisma/schema.prisma一致后,可先执行:新库和后续结构变更优先使用 Prisma migration(数据库结构变更脚本)管理;
npm run db:push仅保留为本地开发兜底,不作为主流程。环境变量
复制
.env.example到.env后配置:服务端通过
dotenv加载.env。不要把真实 API Key、数据库密码或生产JWT_SECRET提交到仓库或写入日志。比赛提交与部署材料
PROJECT-COMPETITION.md:比赛答辩/提交说明,覆盖背景痛点、产品定位、创新闭环、商业模式、上线运营和风险边界。DEPLOYMENT.md:部署、健康检查、日志、备份、回滚和上线前检查清单。Dockerfile与compose.production.example.yml:用于比赛演示或小范围试用的容器化示例,不包含真实密钥。数据库初始化
项目默认使用 MySQL。若本机没有可用 MySQL,可先启动 Docker Desktop,再执行:
新建或空数据库推荐流程:
部署或 CI 环境推荐使用:
注意:
npm run db:seed会清空并重建演示数据,只适合新库、测试库、比赛演示库或明确允许重置的环境;已有业务数据的生产库不要直接执行。prisma/migrations/20260528000100_init/migration.sql是当前初始迁移。prisma/full-import.sql仅作为历史全量导入参考,不替代 Prisma migration。测试库隔离
E2E(端到端测试,从浏览器模拟真实用户流程)和 Vitest 集成测试默认读取
.env.test,避免写入日常开发库。推荐使用一键准备脚本:
该脚本会在缺少
.env.test时自动复制.env.test.example,启动本地 MySQL,等待健康检查,创建DATABASE_URL指向的测试库,并执行 Prisma client 生成、migration 和种子数据。为避免误清开发库,脚本会拒绝数据库名不包含test的配置。npm test会先执行测试库预检:确认.env.test存在、DATABASE_URL指向测试库,并验证 MySQL 可连接。如果 Docker 未启动、测试库不存在,或culture_user没有测试库权限,命令会直接失败并输出可执行修复提示,不会把环境问题伪装成测试通过。如需手动执行,可按以下步骤:
.env.test已被.gitignore忽略,只提交.env.test.example。当前闭环
Authorization: Bearer验证。ALLOW_DEMO_MUTATIONS=true。reviewer或admin。IMAGE_PROVIDER="qwen"和DASHSCOPE_API_KEY后,AI 创作图像模式会调用通义万相真实生图。#/agent通过/api/ai/agent调用真实 AI,按项目模块输出执行步骤、建议动作、风险提醒和缺失配置。manual_review审核队列。验证命令
npm run test:e2e使用 Playwright,覆盖注册、登录、发布社区动态、新增评论、保存 AI 作品和提交提现申请。首次运行若缺少浏览器运行时,请先执行:生产部署前检查清单
NODE_ENV=production。ENABLE_DEMO_AUTH=false,关闭 demo 用户注入。ALLOW_DEMO_MUTATIONS=false,禁止 demo 身份写入。JWT_SECRET使用至少 32 位强随机字符串,不能使用示例占位符。DATABASE_URL指向真实生产 MySQL,且账号权限最小化。CORS_ORIGIN设置为真实前端域名;多个域名用英文逗号分隔。npm run db:deploy应用 migration,不在生产库执行db:push。已知限制
prisma db push仅作为本地开发兜底;团队协作和部署应使用 migration。prisma.config.ts;后续升级 Prisma 7 时仍需单独评估 CLI 与配置字段兼容性。