Files
wecom_it_smart_desk/docs/07-项目管理/任务说明书/任务说明书-90-P0-6-超时预算切分.md
T
Simon 44e77dcb0e chore(docs): docs/ 目录全面重新编号 + 重组
**重构前**(旧编号 02-11):
- docs/02-产品需求/      → 00 产品规划/PRD
- docs/03-技术架构/      → 01-05 子目录散落
- docs/04-原型设计/      → 01-02 产品设计(HTML 原型)
- docs/05-原型设计/      → screens/
- docs/06-测试素材/      → 02-E2E / 03-功能 / 04-版本测试
- docs/07-项目管理/      → 任务说明书/日报/计划
- docs/08-安全审计/      → 审计报告
- docs/09-堡垒运维/      → toolbox / deploy
- docs/10-项目管理/      → 任务说明书(重复)
- docs/11-历史归档/      → deploy-nas-archived

**重构后**(新编号 00-07,语义化):
- docs/00-产品开发流程与文档管理规范.md
- docs/00-版本迭代总览.md
- docs/01-产品文档/      (PRD/原型/认证/会话/AI 服务/坐席/集成)
- docs/02-技术文档/      (技术方案/架构图/重构记录/前端改造/实现配置)
- docs/03-测试文档/      (E2E/功能用例/版本报告/缺陷单)
- docs/04-运维文档/      (部署运维/运维指南)
- docs/05-运营文档/      (品牌推广/用户手册)
- docs/06-安全审计/      (审计报告)
- docs/07-项目管理/      (任务说明书/日报/计划/看板)

**净收益**:
- 目录编号与产品文档管理规范对齐(按文档阶段 01-07 编号)
- 消除 02-产品需求 与 10-项目管理 的编号重叠
- 子目录按文档类型分组(如 01-产品文档/00-产品规划、01-产品文档/01-认证与登录)
- 把运维/安全/项目管理从 0X 散落改为 04/06/07

合计 494 文件 + 78495 行 / - 14076 行
2026-08-03 18:46:55 +08:00

97 lines
3.0 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.
# 任务说明书 — P0-6 Dify 超时预算切分(修复 proxy 兜底不可达)
> **版本**: v1.0 | **日期**: 2026-07-17
---
## 📋 基本信息
| 项目 | 内容 |
|------|------|
| **任务名称** | P0-6 Dify 双重超时修复:httpx 预算切分 native 20s / proxy 20s |
| **任务ID** | #90 |
| **优先级** | 🔴 P0 |
| **类型** | Bug修复 |
| **状态** | 待开始 |
| **负责人** | 宋献 |
| **创建日期** | 2026-07-17 |
| **计划完成日期** | 2026-07-18 |
---
## 📥 输入项来源
### 问题证据(B2
| 来源 | 说明 |
|------|------|
| `backend/app/config.py:115` | `dify_timeout = 30`httpx 超时) |
| `backend/app/tasks/h5_ai_task.py:1197-1204` | `asyncio.wait_for(timeout=30)` |
| `backend/app/services/ai_service.py` `get_structured_reply()` | native 失败再串行调 proxy**最坏 60s** → wait_for 必先在 30s 触发 → **proxy 兜底路径数学上不可达** |
### 技术文档
| 来源文档 | 说明 |
|----------|------|
| `docs/02-技术文档/重构记录/00-v4.0重构总方案.md` | D2 决策(超时预算内化) |
---
## 📤 输出成果要求
### 交付物清单
| # | 交付物 | 类型 | 说明 |
|---|--------|------|------|
| 1 | `backend/app/config.py` | 代码 | 新增 `dify_native_timeout: int = 20``dify_proxy_timeout: int = 20`2026-07-20 从 12s 调整为 20s |
| 2 | `backend/app/services/ai_service.py` | 代码 | `_get_native_client()` 用 native_timeout`_get_client()` 用 proxy_timeout`dify_timeout` 保留给 wingman 等旧路径 |
| 3 | `docker-compose.yml` | 配置 | environment 新增 2 项(铁律 2:显式声明) |
### 设计约束
- 20 + 20 + 开销 < 30wait_for(30) 保持为最后防线(2026-07-20 调整:12s → 20s
- 本批只做预算切分;统一调用点重构在批次 2(#84 P1-2)完成
---
## 🔧 验证方式
| 验证项 | 验证方法 | 预期结果 |
|--------|----------|-----------|
| native hang 切 proxy | mock native 持续 hang | 12s 内切 proxy 并拿到结果,全程 < 30s |
| 无 asyncio.TimeoutError | 日志观察 | Dify 慢响应时不再触发外层 30s 硬超时 |
---
## ✅ 完成标准
- [ ] config 新增 2 字段,compose 声明
- [ ] 两个 httpx client 分别使用对应超时
- [ ] 部署后端,慢响应场景验证 proxy 兜底可达
- [ ] 状态看板已更新
---
## 📊 工作分解
| 子任务 | 预估工时 | 状态 |
|--------|----------|------|
| config + ai_service 改造 | 30min | ⬜ |
| compose 声明 + 部署验证 | 20min | ⬜ |
| mock hang 场景验证(可选 pytest | 30min | ⬜ |
---
## 📞 依赖与阻塞
| 依赖 | 说明 | 状态 |
|------|------|------|
| 建议 #79DIFY_NATIVE 配置)完成后 | 有原生直连才能体现切分价值,但不阻塞 | ⬜ |
---
## 📈 变更记录
| 日期 | 变更内容 | 变更人 |
|------|----------|--------|
| 2026-07-17 | 创建任务 | 宋献 |
| 2026-07-20 | 超时配置从 12s 调整为 20s(高峰期超时反馈) | 宋献 |