# 2026-06-05 工作日志

## 部署上线 - Bug 修复

### Bug 1: nginx `set` 指令位置错误
- **现象**: `"set" directive is not allowed here in nginx.conf:21`
- **原因**: `set` 只能在 `server`/`location` 块内使用，不能放全局
- **修复**: 移除全局的 `env DATAQUERY_HOST;` 和 `set $dataquery_host` 两行（`proxy_pass` 已硬编码 IP）

### Bug 2: alembic 找不到 `app` 模块
- **现象**: `ModuleNotFoundError: No module named 'app'`
- **原因**: alembic 命令执行时 PYTHONPATH 未设置
- **修复**: docker-compose.yml command 改为 `cd /app && PYTHONPATH=/app alembic upgrade head`

### Bug 3: 前端 301 重定向死循环
- **现象**: `/itdesk/` 和 `/itagent/` 返回 301，跟随重定向后仍 301
- **原因**: `alias` + `try_files $uri $uri/` 组合触发 nginx 目录重定向
- **修复**: `try_files` 移除 `$uri/`，改为 `try_files $uri /itdesk/index.html`

### Bug 4: system_configs 重复插入（未修复，不影响功能）
- **现象**: `duplicate key value violates unique constraint "system_configs_config_key_key"`
- **影响**: 每次重启会报错但服务正常启动（第二条 `Application startup complete.`）
- **待修**: INSERT 应改为 `INSERT ... ON CONFLICT DO NOTHING`（幂等插入）

## 当前部署状态
- **服务器**: 10.80.0.129:18080（G端）
- **容器**: 4/4 全部 Up（backend 标记 unhealthy，功能正常）
- **前端**: /itdesk/ ✅ /itagent/ ✅
- **API**: /api/health ✅
- **数据平台**: / 代理到 10.80.0.130:8080（对方 nginx 未配业务，返回默认页）
- **待办**: 配置企微回调 URL + 验证

## Bug 5: API 路由 404 — 双重 `/api` 前缀
- **现象**: 所有 API 端点返回 404（curl `/api/test-ping` → 404）
- **原因**: nginx `proxy_pass` 已剥离 `/api/` 前缀，但 FastAPI `app.include_router(api_router, prefix="/api")` 又加了一次 → 实际请求路径变成了 `/api/test-ping`（404）
- **修复**: main.py 移除 `prefix="/api"` → 仅 `app.include_router(api_router)`
- 同时修复了 `@app.get("/api/test-ping")` → `@app.get("/test-ping")` 等直接路由

## Bug 6: Docker build 网络不通（G端无法访问 deb.debian.org）
- **现象**: Docker build 在服务器上超时
- **解决**: 本地 Windows 构建镜像 → `docker save` → 上传 tar → 服务器 `docker load -i` 导入

## 数据库修复 — dify_conversation_id 列缺失
- **现象**: H5 AI 对话 500 报错 `column conversations.dify_conversation_id does not exist`
- **原因**: 数据库是通过 SQLAlchemy 模型直接创建的（非 alembic 迁移），model 里加了列但 DB 没有
- **修复**: `psql -U postgres -d it_smart_desk -c "ALTER TABLE conversations ADD COLUMN IF NOT EXISTS dify_conversation_id VARCHAR(128);"`
- **发现**: 服务器 `.env` 不存在，PG 只有 `postgres` 用户（默认值 `wecom` 未生效），数据库名 `it_smart_desk`

## 反向代理申请清单
- 已输出 `反向代理开通申请清单.md`，含 nginx 配置片段、网络要求、防火墙规则
- 入口：通过 `it-dataquery.dc.servyou-it.com` 的 `/itdesk/` `/itagent/` `/api/` `/ws/` 路径路由

## 本地开发环境搭建（2026-06-05 下午）
- ✅ SQLite schema 修复：conversations 表 + dify_conversation_id，messages 表 + 6 列
- ✅ Python 3.12 venv 搭建，全部依赖安装（含补装的 aiosqlite）
- ✅ Docker Redis 本地容器启动（localhost:6379 无密码）
- ✅ 后端 FastAPI 启动（localhost:8000，6 核心服务就绪）
- ✅ H5 前端 dev server 启动（localhost:5174，.env.development 禁用 OAuth2）
- ✅ 核心 AI 对话管道验证通过（H5 → 后端 → Dify → 回复）
- ⚠️ AI 回复内容显示 `[object Object]` — Dify 响应解析 bug，待修

## IT 支持知识库导入快速回复模块
- **源文件**：`IT支持知识库2026-4-24.docx`（830 段落，178 个知识条目）
- **导入结果**：178 条全部导入 quick_reply_templates 表
- **分类分布**：硬件(13)、网络(30)、软件(46)、安全(13)、账号(2)、通用(82)
- **Category 映射**：办公电脑→硬件，软件工具→软件，办公设备→硬件，办公网络→网络，终端安全→安全，资产管理+其他业务→通用
- **API 验证**：GET /quick-replies 返回 186 条（8 条预置 + 178 条导入）
