fd472e3346
- integrations/redis: 新增 BullMQ 连接参数工厂并复用 Redis 模块导出\n- notifications/wecom: 优先使用 BullMQ 周期调度 outbox 重试,Redis 不可用时降级进程内定时器\n- README/RTK/.env.example: 同步通知 outbox 重试和 Redis/BullMQ 配置说明
2.3 KiB
2.3 KiB
后端 RTK
架构
- 框架:NestJS + TypeScript。
- 包管理器:pnpm。
- 数据访问:Prisma Client 和 Prisma migrations。
- 本地默认行为:未配置 MySQL 时使用种子项目和内存数据保持 API 可运行;生产环境注入凭据后使用真实 Jenkins 和 Gitea 客户端。
模块地图
config:环境变量 schema 和校验。prisma:PrismaService 和数据库健康边界。health:运行时和依赖健康摘要。auth:登录鉴权、密码管理、登录 token 和当前用户上下文。members:成员管理和项目权限分配。messages:平台消息通知,当前用于普通成员忘记密码请求。projects:项目配置 API 和 Repository。deploy-runs:发布记录 API、状态模型和 BPMN 步骤摘要。integrations/jenkins:Jenkins API 客户端边界。integrations/gitea:Gitea API 客户端边界。integrations/redis:Redis PING 健康检查和 BullMQ 连接参数边界,通知 outbox 调度复用该模块。notifications/wecom:企微、飞书和通用 webhook 通知边界。agent-config:Agent 系统级配置、密钥加密和连接测试。agent:只面向运维工作流的 LLM 代理边界。audit:脱敏审计记录边界。
数据访问规则
- Controller 调用 service。
- Service 调用 repository 和集成客户端。
- Repository 调用 Prisma。
- 原生 SQL 只允许作为例外,并且只能放在 repository。
- 启用持久化写入后,发布记录写入必须使用事务。
环境规则
.env.example只能包含占位值。.env只用于本地并且不能提交。- 缺少外部集成配置时,健康检查应降级为
not_configured,不能导致本地开发启动失败。 - 生产环境保存 Agent 密钥必须配置
SECRET_ENCRYPTION_KEY。
验证
依赖可用时,交付前运行:
pnpm install
pnpm prisma:generate
pnpm lint
pnpm test
pnpm build
部署迁移
- Jenkins API 部署脚本的仓库版本在
deploy/deploy-devops-platform-api-from-jenkins.sh。 - 脚本会在切换
/srv/www/devops-platform-api前运行pnpm prisma migrate deploy,迁移失败时不会替换旧服务目录。 - 生产库早期通过手工 SQL 初始化,首次启用迁移时脚本会在确认 12 张核心表都存在后把基线迁移标记为 applied。