Files
devops-platform-api/RTK.md
T
2026-06-12 06:38:39 +08:00

60 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 后端 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 worker 复用该模块。
- `notifications/wecom`:企微、飞书和通用 webhook 通知边界。
- `agent-config`:Agent 系统级配置、密钥加密和连接测试。
- `agent`:只面向运维工作流的 LLM 代理边界。
- `audit`:脱敏审计记录边界。
## 数据访问规则
1. Controller 调用 service。
2. Service 调用 repository 和集成客户端。
3. Repository 调用 Prisma。
4. 原生 SQL 只允许作为例外,并且只能放在 repository。
5. 启用持久化写入后,发布记录写入必须使用事务。
## 环境规则
- `.env.example` 只能包含占位值。
- `.env` 只用于本地并且不能提交。
- 缺少外部集成配置时,健康检查应降级为 `not_configured`,不能导致本地开发启动失败。
- 生产环境保存 Agent 密钥必须配置 `SECRET_ENCRYPTION_KEY`
## 验证
依赖可用时,交付前运行:
```bash
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。