fix: review-deploy 改 Python 直跑标准(无docker) + 对外地址用主域名+端口禁编造子域名

- QC review-deploy:去 Dockerfile/docker-compose/docker compose ps(测试环境无docker)
- deploy_test + review-deploy:对外地址只用 hrstest.opencomputing.cn:端口,禁止编造子域名
This commit is contained in:
yumoqing 2026-08-22 12:17:40 +08:00
parent dfcde5dd0e
commit 7b3e474b4d
2 changed files with 29 additions and 15 deletions

View File

@ -34,8 +34,10 @@ capability: deploy_capability
### 三、部署后验证(附真实输出,不是预期声明) ### 三、部署后验证(附真实输出,不是预期声明)
- **检查进程**:`ssh hrs@hrstest "ps -ef | grep app.py"` 各模块进程确实在跑 - **检查进程**:`ssh hrs@hrstest "ps -ef | grep app.py"` 各模块进程确实在跑
- **健康检查**:`curl http://127.0.0.1:{端口}/healthz` 返回 200 - **健康检查**:`curl http://hrstest.opencomputing.cn:{端口}/healthz` 返回 200
- **DB 连通**:`mysql -h localhost -u test -ptest123 hrs -e "SHOW TABLES"` 看到各模块表 - **DB 连通**:`mysql -h localhost -u test -ptest123 hrs -e "SHOW TABLES"` 看到各模块表
- **对外地址只用主域名+端口**:`http://hrstest.opencomputing.cn:{端口}`(或内网 `http://{IP}:{端口}`)。
**禁止编造子域名**(如 `selfservice.hrstest.opencomputing.cn`)——子域名未配 DNS/nginx,必然无法解析,会被 QC 退回。
### 四、产出交付物 ### 四、产出交付物
- 部署文档(deploy-test-env.md:真实部署步骤 + 端口表 + 验证输出) - 部署文档(deploy-test-env.md:真实部署步骤 + 端口表 + 验证输出)

View File

@ -1,6 +1,6 @@
--- ---
name: review-deploy name: review-deploy
description: QC 审查部署工程师(agent.deploy_test/deploy_prod)产出的检查清单——部署配置落盘、部署文档、真实部署证据(健康检查/服务启动/DB连通)。触发:审查 deploy_test / deploy_prod 阶段交付件。 description: QC 审查部署工程师(agent.deploy_test/deploy_prod)产出的检查清单——部署配置落盘、部署文档、真实部署证据(进程/健康检查/DB连通)。触发:审查 deploy_test / deploy_prod 阶段交付件。
capability: task_capability capability: task_capability
--- ---
@ -8,33 +8,45 @@ capability: task_capability
被查对象:agent.deploy_test(测试环境)、agent.deploy_prod(生产环境)。审查其产出时**以真实部署证据为准,不只看文档声明**。 被查对象:agent.deploy_test(测试环境)、agent.deploy_prod(生产环境)。审查其产出时**以真实部署证据为准,不只看文档声明**。
## 测试环境(hrstest)部署方式:Python 直跑,无 docker
- 测试机 `hrstest.opencomputing.cn` **没有 docker**,部署一律 Python 直跑:
- 各模块 `app.py`(启动入口)+ `requirements.txt`(依赖)+ `deploy.sh`(建表/装依赖/起服务/写 PID)
- **不要要求 Dockerfile / docker-compose / docker compose ps** —— 测试环境根本没有 docker,要求这些是错误标准
## 一、部署配置落盘 ## 一、部署配置落盘
- 对照 `project-directory-spec` + `webapp-deploy`: - 对照 `project-directory-spec` + `webapp-deploy`:
- `repos/{项目名}_pc/config/test/`(或 config/prod/)下:Dockerfile、docker-compose.yml、requirements.txt、entrypoint.sh、nginx/default.conf、deploy.sh、init-db.sh - `repos/{项目名}_pc/config/test/` 下:`deploy.sh`、`requirements.txt`、`init-db.sh`、各模块 `app.py` 入口说明
- 所有模块都要纳入部署(organization/payroll/recruitment 三服务齐全,build context 正确、depends_on 按 DDL 顺序) - 所有模块都要纳入部署(organization/payroll/recruitment/selfservice 各模块 app.py 齐全,端口互不冲突)
## 二、部署文档落盘 ## 二、部署文档落盘
- `repos/{项目名}_pc/docs/04-deploy/deploy-test-env.md`(或 deploy-prod-env.md) - `repos/{项目名}_pc/docs/04-deploy/deploy-test-env.md`(或 deploy-prod-env.md)
- 生产部署额外:高可用、备份、监控告警、域名证书、发布说明 - 文档里写明:各模块端口表、启动命令、真实部署步骤
## 三、部署前条件检查(QC 核查是否做了前置检查) ## 三、部署前条件检查(QC 核查是否做了前置检查)
- 应用是否有部署脚本(deploy.sh/Dockerfile/docker-compose/entrypoint/requirements 齐全) - 应用是否有部署入口(各模块 app.py / deploy.sh)
- 部署环境是否可用(SSH 可达、DB 可用、端口/域名就绪) - 测试机是否可达:`ssh -o BatchMode=yes hrs@hrstest.opencomputing.cn echo ok`
- 条件不具备时是否退出报错(不是硬部署) - 条件不具备时是否退出报错冒泡(不是硬部署)
## 四、真实部署证据(关键,禁止纸面部署) ## 四、真实部署证据(关键,禁止纸面部署)
- **必须实际执行部署**(docker compose up / bash deploy.sh),并附真实输出: - **必须实际执行部署**(ssh 到测试机跑 deploy.sh / nohup python3 app.py),并附真实输出:
- **检查进程**:docker compose ps 各服务 healthy、ps 查看进程确实在跑 - **检查进程**:`ssh hrs@hrstest.opencomputing.cn "ps -ef | grep app.py"` 各模块进程确实在跑(有 PID、端口监听)
- **检查外网/访问 URL**:对外地址实际连通(curl 健康检查返回 200、页面/API 可访问) - **健康检查**:`curl http://hrstest.opencomputing.cn:{端口}/healthz` 返回 200(**用真实可达地址,见下**)
- 数据库 DDL 执行确认(SHOW TABLES 看到三模块表) - **DB 连通**:`mysql -h localhost -u test -ptest123 hrs -e "SHOW TABLES"` 看到各模块表
- 文档里写"三服务均 healthy / curl 200 / DDL 自动初始化"但标注"未实际执行" → 退回:这是预期不是实测 - 文档里写"进程已启动 / curl 200 / 表已建"但标注"未实际执行" → 退回:这是预期不是实测
## 五、真实性核查方法 ## 五、对外地址规范(关键,防止编造域名)
- 测试环境对外地址**只用主域名 + 端口**:`http://hrstest.opencomputing.cn:{端口}`(或内网 `http://{IP}:{端口}`)
- **禁止编造子域名**(如 `selfservice.hrstest.opencomputing.cn`)——子域名未配 DNS/nginx,必然无法解析
- QC 核实健康检查时,用 `curl http://hrstest.opencomputing.cn:{端口}/healthz` 或内网 IP:端口,不用子域名
## 六、真实性核查方法
- 用 read_file / list_files 验证配置文件真实落盘 - 用 read_file / list_files 验证配置文件真实落盘
- 用 run_shell 在部署环境实际跑 docker compose ps / curl 健康检查,拿真实输出 - 用 run_shell 实际 ssh 到测试机跑 `ps -ef | grep app.py` / `curl 健康检查` / `mysql SHOW TABLES`,拿真实输出
- 生产部署必须有人拍板(human gate)才验收 - 生产部署必须有人拍板(human gate)才验收