docs: 部署规则与交接记录规范,开发交接记录、变更记录更新

This commit is contained in:
weijuesen
2026-08-12 14:43:09 +08:00
parent 7647705f3b
commit 9c8388d220
4 changed files with 224 additions and 4 deletions
+34
View File
@@ -7,6 +7,7 @@
3. 交付说明应聚焦于修改的文件、验证结果和风险。
4. 对不清楚的需求或不可逆选择,执行前先向用户确认。
5. 创建或重写本指令文件前,询问用户该文件应使用哪种语言。
6. 每完成一项交付(功能/模块/部署),必须更新根目录 `开发交接记录.md`,追加「做了什么、设计思路与决策依据、验证结果、回滚点」,保证同事阅读后能快速接手;不得只做口头总结。
## 项目结构
@@ -49,6 +50,39 @@
8. 不得将密钥写入需要提交的文件;需要环境配置时使用占位值创建 `.env.example`
9. AI 推理服务(规划中):Python 3.11 + 虚拟环境,PyTorchcu121/cu124 wheel,兼容 Tesla P4+ ultralytics;模型训练在本地 fnOS 服务器(i7-8700T / 62G / Tesla P4 8G,数据集路径 `/vol1/ai/datasets`)完成,导出 ONNX 后部署到云 GPU 主机(T4 16G)由 FastAPI 服务加载。
## 部署到开发服务器(dev100.83.103.1
环境依据:`部署指南(物理机).md`。SSH 主机 `100.83.103.1`、用户 `pan`,密码不写入提交文件,通过环境变量 `PAN_SSH_PASS` 传入;SSH/SFTP 辅助脚本为 `scripts/devssh.py`(不含任何密钥)。部署范围目前为 Go 后端(:3000)与 Web(:5174),小程序走微信开发者工具发布流程,不属于本服务器部署。
### 部署前置(每次发布必做)
1. 本地验证必须全部通过:后端 `go test ./...``go build ./...``go vet ./...`Web `npm run lint``npm run build`;涉及小程序时 `npm run build:weapp`
2. 代码可回滚检查(先于任何覆盖操作):
- 检查开发服务器 git 仓库状态:`git status``git branch --show-current``git log -1 --oneline`,确认服务器代码与发布基线的关系;记录服务器当前 commit。
- 为服务器当前状态打可回滚标记:`git tag pre-<YYYYMMDD-HHMMSS>`(或把 commit hash 写入部署记录)。
- 服务器工作区有未提交改动且与发布内容冲突时,不得强制 checkout/reset,先与用户确认。
3. 数据库可回滚检查:本次涉及 schema 变更(新增表/列/索引、数据迁移)时,发布前必须 `pg_dump` 全库备份到 `/home/pan/backups/silk-<YYYYMMDD-HHMMSS>.dump`,并记录恢复命令;纯代码发布可不强制,但每次发布前至少确认存在最近一份可用备份。
4. 运行环境检查:`df -h`(磁盘空间)、`ss -tlnp`3000/5174/9090/5432 等端口监听)、服务进程存在性;有异常先记录并停止发布。
### 部署步骤
1. Go 后端:本机交叉编译 `GOOS=linux GOARCH=amd64 go build -o silk-server-go-linux ./cmd/server/` → 上传服务器 → 保留旧二进制(如 `silk-server-go-linux.bak-<时间戳>`)→ 按 `start_sh.txt` / 部署指南方式重启(`source .env` 或导齐环境变量)→ `curl http://localhost:3000/api/v1/health` 健康检查 → 检查启动日志无 panic/连接错误。
2. Web`npm run build` → 上传 `dist` → 备份旧 dist → 重启 `server.cjs``curl -s -o /dev/null -w '%{http_code}' http://localhost:5174/` 应为 200。
3. 新接口/新功能冒烟:用登录 token 调用新增 API(如 `/api/v1/knowledge/diseases`)验证返回;检查后端日志无 5xx。
4. 部署后:更新 `变更记录.md`(日期、内容、验证结果、回滚点),并把服务器 commit/备份路径记入部署记录;同时按沟通规则追加 `开发交接记录.md`
### 回滚预案
1. 代码回滚:服务器 git `git checkout <pre-commit>`,或恢复 `.bak` 二进制/旧 dist,重启服务并做健康检查。
2. 数据库回滚:仅在新 schema 有问题时执行 `pg_restore` 恢复备份;恢复前先再次备份当前状态并确认影响范围。
3. 回滚后更新部署记录与 `变更记录.md`
### 禁止事项
1. 未完成备份/未记录回滚点前,不得覆盖服务器代码、二进制或数据库。
2. 不得在服务器上直接修改生成产物;需要修复时改源文件后重新构建部署。
3. 服务器密钥/密码不得写入提交文件;一律通过环境变量注入。
## 验证
1. 常规修改的针对性检查:Go 后端 `go build ./...`Web `npm run lint``npm run build`APP `npm run lint``npm run tsc`;小程序 `npm run build:weapp`