Files
wecom_it_smart_desk/docs/04-运维文档/运维指南/配置清单与环境变量.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

122 lines
4.5 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.
# 配置清单与环境变量
> **版本**: v1.0 | **更新日期**: 2026-07-20
---
## 1. Dify AI 服务配置
### 1.1 超时配置
| 环境变量 | 代码默认 | 生产配置 | 说明 |
|----------|----------|----------|------|
| `DIFY_NATIVE_TIMEOUT` | 20s | 20s | Dify 原生直连超时(秒) |
| `DIFY_PROXY_TIMEOUT` | 20s | 20s | Dify 代理路径超时(秒) |
| `DIFY_TIMEOUT` | 30s | 30s | 通用 Dify 超时(保留给 wingman 等旧路径) |
| `APPROVAL_DIFY_TIMEOUT` | 8s | 8s | 审批路由检测超时 |
| `DIFY_TRIAGE_TIMEOUT` | 5s | 5s | 分诊路由超时 |
> **设计约束**`native_timeout + proxy_timeout + 开销 < wait_for(30s)`wait_for(30s) 保持为最后防线。
> - 2026-07-20: 从 12s 调整为 20s(用户反馈高峰期超时较多)
### 1.2 连接配置
| 环境变量 | 说明 | 示例值 |
|----------|------|--------|
| `DIFY_API_URL` | Dify2OpenAI 代理地址 | `http://yw-dify.dc.servyou-it.com/dify2openai/v1/chat/completions` |
| `DIFY_API_KEY` | Dify2OpenAI 代理 API Key | `app-xxx\|api-key` |
| `DIFY_NATIVE_BASE_URL` | Dify 原生 API 地址(直连,绕过代理) | `http://yw-dify.dc.servyou-it.com` |
| `DIFY_NATIVE_API_KEY` | Dify 原生 API Key | `app-7jkRkAzvX4QM9v9SM3P8mMEO` |
> **为什么需要两个 Dify 配置**dify2openai 代理存在 `[object Object]` 序列化 bug,直连 Dify 原生 API 可绕过此问题。
### 1.3 超时错误码与用户提示
| 错误类型 | 代码位置 | 用户提示 |
|----------|----------|----------|
| `httpx.TimeoutException` | `ai_service.py:562-576` | "AI 服务响应超时,请稍后再试或转人工坐席。" |
| `httpx.HTTPStatusError` | `ai_service.py:577-600` | "AI 服务暂时不可用,请转人工坐席。" |
| 上下文窗口超限 | `ai_service.py:580-585` | "对话上下文超限,正在重置会话..." |
---
## 2. 数据库配置
| 环境变量 | 说明 | 示例值 |
|----------|------|--------|
| `POSTGRES_HOST` | PostgreSQL 主机 | `postgres` |
| `POSTGRES_PORT` | PostgreSQL 端口 | `5432` |
| `POSTGRES_USER` | PostgreSQL 用户 | `wecom_it` |
| `POSTGRES_PASSWORD` | PostgreSQL 密码 | `W3c0m_IT_2026` |
| `POSTGRES_DB` | PostgreSQL 数据库名 | `wecom_it_desk` |
| `DATABASE_URL` | PostgreSQL 连接 URL | `postgresql+asyncpg://user:pass@host:port/db` |
---
## 3. Redis 配置
| 环境变量 | 说明 | 示例值 |
|----------|------|--------|
| `REDIS_URL` | Redis 连接 URL(含密码) | `redis://:R3d%21s%402026%23Secure@redis:6379/0` |
> ⚠️ **注意**:密码含特殊字符(`@`、`#`、`%` 等)时必须 URL 编码。
---
## 4. 企业微信配置
| 环境变量 | 说明 |
|----------|------|
| `WECOM_CORP_ID` | 企业 ID |
| `WECOM_AGENT_ID` | 应用 AgentID |
| `WECOM_SECRET` | 应用 Secret |
| `WECOM_TOKEN` | 回调验证 Token |
| `WECOM_ENCODING_AES_KEY` | 回调 EncodingAESKey |
---
## 5. 其他 AI 服务配置
| 环境变量 | 说明 | 默认值 |
|----------|------|--------|
| `DIFY_WINGMAN_API_URL` | AI Wingman 服务地址 | 空(禁用) |
| `DIFY_WINGMAN_API_KEY` | AI Wingman API Key | 空 |
| `DIFY_WINGMAN_TIMEOUT` | AI Wingman 超时 | 30s |
| `BAIDU_ASR_APP_ID` | 百度语音识别 APP ID | - |
| `BAIDU_ASR_API_KEY` | 百度语音识别 API Key | - |
| `BAIDU_ASR_SECRET_KEY` | 百度语音识别 Secret Key | - |
> **2026-08-03 补充调用方说明**
>
> `BAIDU_ASR_*` 三件套**仅被一个生产调用方使用**:
> **H5 端 PC/Mac 企微用户的语音输入**`useAudioRecorder` 录音 PCM → `api/voice.ts` → `POST /api/voice/asr`)。
>
> **误判警示**:曾被误判为"无调用方孤儿配置",实则是 H5 端双策略中的**PC/Mac 兜底分支**
> - 手机端企微 → 企微 JS-SDK(**不依赖百度 ASR**
> - PC/Mac 端企微 → 百度 ASR**依赖**)
> - 坐席端 → Web Speech API**不依赖百度 ASR**
>
> **2026-08-03 加 auth**`POST /api/voice/asr` 已加 `Depends(get_current_user)`,未登录请求返回 401。验证:
> ```bash
> curl -X POST http://127.0.0.1:8000/api/voice/asr -F audio=@/tmp/test.pcm
> # 应返回 401 Unauthorized(未带 Bearer Token
> ```
---
## 6. 运维相关配置
| 环境变量 | 说明 | 默认值 |
|----------|------|--------|
| `LOG_LEVEL` | 日志级别 | `INFO` |
| `CORS_ORIGINS` | 允许的跨域来源 | `*` |
| `SECRET_KEY` | FastAPI 密钥 | - |
---
## 7. 变更记录
| 日期 | 变更内容 | 变更人 |
|------|----------|--------|
| 2026-07-20 | 初始化文档,新增 Dify 超时配置清单 | 宋献 |