# 内部公文模块运行与验收手册

## 1. 文档目的

本文档只解决 4 个现实问题：

- 当前 `govdoc` 正确的运行链路是什么
- 现在页面为什么还可能报 `404 / 500 / 502 / 401`
- 应该按什么顺序排障
- 如何判断“内部公文模块已经真正接到当前 1 后端”

本文档基于 2026-05-17 当前机器与当前仓库实际联调结果整理。

---

## 2. 正确链路

当前内部公文模块正确链路应为：

1. 浏览器访问 `http://172.16.0.59:5173/govdoc/audits?entryModuleId=3`
2. `5173` 由 `nginx` 提供入口
3. `nginx` 上游转到当前前端开发服务 `127.0.0.1:5193`
4. 前端 `/api/govdoc/*` 代理到 `http://172.16.0.59:8096/api/govdoc/*`
5. `8096` 由当前仓库 `leaudit-platform` 后端提供
6. 审查任务由当前仓库 Celery worker 消费

只要这 6 段里任意一段错了，外部表现就会异常。

---

## 3. 当前已确认事实

本次联调已确认以下事实成立：

- 当前仓库后端标准端口是 `8096`
- 当前仓库前端开发服务端口是 `5193`
- 当前对外入口端口是 `5173`
- 当前 `govdoc` 接口代理文件是：
  - [route.ts](/home/wren-dev/Porject/leaudit-platform/legal-platform-frontend/app/api/govdoc/[...path]/route.ts)
- 当前前端环境配置里：
  - `API_BACKEND_TARGET=http://172.16.0.59:8096`
- 当前 `GET /api/govdoc/documents?page=1&pageSize=1` 已经能到达当前后端
- 未登录访问该接口时，返回 `401 Unauthorized`
- 未登录访问 `/govdoc/audits` 时，会重定向到 `/login`

这说明：

- `govdoc` 文档列表接口已经接到当前 1 后端
- 当前若再看到异常，优先怀疑运行进程或登录态，而不是先怀疑接口没接

---

## 4. 当前机器上的关键风险

当前机器上还存在一个高风险旧进程：

- `python start_worker_with_routing.py --config-port 8096`
- `cwd=/home/wren-dev/Porject/docauditai`

它不是当前仓库 worker。

这意味着：

- 即使当前仓库代码已经修好
- 只要正式任务仍被旧 worker 消费
- `govdoc` 实际执行结果仍可能继续偏向旧项目行为

结论：

- 当前最大运行风险不是代码本身，而是**旧 worker 未彻底退出正式链路**

---

## 5. 正确启动方式

当前仓库建议使用：

```bash
cd /home/wren-dev/Porject/leaudit-platform
./leaudit.sh start
```

查看状态：

```bash
./leaudit.sh status
```

查看巡检结果：

```bash
./leaudit.sh doctor
```

查看日志：

```bash
./leaudit.sh logs backend
./leaudit.sh logs frontend
./leaudit.sh logs worker
./leaudit.sh logs beat
```

当前脚本关键文件：

- [leaudit.sh](/home/wren-dev/Porject/leaudit-platform/leaudit.sh)
- [start_worker.sh](/home/wren-dev/Porject/leaudit-platform/scripts/start_worker.sh)
- [start_beat.sh](/home/wren-dev/Porject/leaudit-platform/scripts/start_beat.sh)

---

## 6. 四类典型报错怎么判断

### 6.1 `404`

通常说明：

- `govdoc` 代理没走到当前后端
- 当前后端没启动
- 请求被打到了错误服务

优先检查：

- `8096` 是否监听
- `/api/govdoc/*` 是否仍代理到当前 `8096`
- 是否还在访问旧项目接口

### 6.2 `500`

通常说明：

- 路由已经接到了正确后端
- 但数据库、表、规则文件、运行数据或服务层逻辑有问题

这类问题要优先看：

- `.codex-run/backend.log`
- 后端 traceback
- `govdoc_runs / govdoc_report_artifacts` 相关表和数据

### 6.3 `502`

通常说明：

- `5173` 的 nginx 上游失活
- `5193` 前端服务未启动
- `8096` 后端未启动

这类问题不是业务 bug，先查进程和端口。

### 6.4 `401`

通常说明：

- 链路已经通到当前后端
- 只是当前请求没有有效登录态

这类情况恰恰说明：

- `govdoc` 接口已经不是 `404`
- 前后端契约已经在工作

---

## 7. 当前最小排障顺序

每次出现问题，建议严格按这个顺序查：

1. 先看 `./leaudit.sh status`
2. 再看 `ss -ltnp` 是否存在 `5173 / 5193 / 8096`
3. 再看旧 worker 是否还在：
   - `ps -ef | rg "start_worker_with_routing.py --config-port 8096"`
4. 再看前端 `govdoc` 代理是否还是指向 `8096`
5. 再看后端日志是 `401 / 404 / 500` 哪一类
6. 最后才去怀疑业务代码

不要反过来先改代码。

---

## 8. 当前验收标准

如果要判断“内部公文模块已经真正接到当前后端并基本可用”，至少要满足：

### 8.1 运行层

- `5173` 正常访问
- `5193` 正常运行
- `8096` 正常运行
- 当前仓库 worker 正常运行
- 当前仓库 beat 正常运行

### 8.2 接口层

- 未登录访问 `/govdoc/audits` 时，正常跳到登录页
- 已登录访问 `/api/govdoc/documents` 时，返回真实列表数据
- 不再出现 `404 Not Found`

### 8.3 业务层

- 文档列表可打开
- 详情页可打开
- 新 run 完成后有正式报告产物
- 可打开 HTML 报告
- 可下载批注 DOCX
- 段落视图可渲染

### 8.4 数据层

- `govdoc_runs` 有最新 run
- `govdoc_report_artifacts` 有正式产物索引
- 历史修复前 run 如需报告，已补跑

---

## 9. 当前还没完全收口的点

截至当前，还没彻底收口的不是主链是否存在，而是这些细节：

- 旧 `docauditai` worker 仍在机器上存活
- 正式 supervisor / 守护方式还没有完全切回当前仓库
- 历史成功 run 不会自动补出报告产物，需要补跑
- 还需要带真实登录态做一轮完整前端验收

---

## 10. 当前结论

当前内部公文模块的真实状态应表述为：

- 业务语义主线已基本对齐
- 后端主链路已接通
- 报告产物主闭环已补齐
- 前端 `govdoc` 列表接口已接到当前 1 后端
- 当前最大的剩余问题是运行部署收口，而不是“文档列表没接后端”

后续如果继续推进，优先级应为：

1. 清理旧 worker 干扰
2. 固化正式启动/重启方式
3. 带真实登录态做完整联调验收
4. 再处理余下产品细节
