docs: update dev-log - llm.go handler 拆分

This commit is contained in:
attacker committed 2026-06-18 08:04:53 +08:00
1 parent d4fe62f053
commit 2e175daf80
1 file changed
+25
+25
View File
@@ -1782,3 +1782,28 @@ cd ~/devops/aiops
- 多会话支持(当前单用户单历史,可扩展多命名会话切换)
- 快捷操作可扩展更多数据源(容量预测接入 agent history 时序/K8s 集群健康/云账单分析)
- 前端组件拆分候选: TopologyView.tsx(576)、ExcelServerImport.tsx(549)、DomainManager.tsx(492)
## 2026-06-18 07:00 自动推进(cron)— 后端 llm.go handler 拆分(526→167/339/41)
- **任务**: 将超 400 行 handler 规范的 `backend/internal/api/handlers/llm.go`(526 行)按业务域拆分为三个文件,符合 CLAUDE.md "Go handler <400 行" 规范
- **背景**: 代码质量审计发现 `llm.go` 526 行已超规范(仅次于 mock.go 644 行,但 mock.go 是已废弃脚本)。按 dev-log 上次"下一步建议"中第 4 项"前端组件拆分候选",本次顺手清理后端 handler 超限项,先拆 llm.go(最独立、最低风险)
- **实现(纯代码移动,业务零变更)**:
- `llm.go`(526→167 行)— 保留 LLM 配置相关:LLMHandler struct + NewLLMHandler + maskAPIKey + getActiveConfig + GetLLMConfig + SaveLLMConfig + openaiChatRequest/Choice/Response 类型 + resolveEndpoint + defaultSystemPrompt 常量
- `llm_chat.go`(新建 339 行)— 对话代理 + SSE 流式:Chat + ChatStream + writeSSEChunk + writeSSEError + parseOpenAIError + TestLLMConnection
- `llm_history.go`(新建 41 行)— 对话历史:GetChatHistory + ClearChatHistory
- 三文件同属 package handlers,所有方法/类型/常量在同 package 内天然共享,**routes.go 完全无需改动**
- **结果**:
- 后端 go build ./... 通过;go vet ./... 通过
- ./run.sh restart 后 /health ok + 前端 200
- 端到端 API 验证(4 个 LLM 端点全覆盖):
- GET /api/v1/aiops/llm-config → 正常返回 config(来自 llm.go GetLLMConfig)
- POST /api/v1/aiops/chat → 400 "LLM 服务未配置或未启用"(来自 llm_chat.go Chat)
- POST /api/v1/aiops/chat/stream → `event: error\ndata: {"code":400,"message":"..."}` SSE(来自 llm_chat.go ChatStream + writeSSEError)
- GET /api/v1/aiops/chat-history → `{list:[], total:0}`(来自 llm_history.go GetChatHistory)
- git push 成功 (commit d4fe62f)
- **下一步建议**:
- 后端 `routes/routes.go` 438 行(略超 400),但路由注册集中单文件更清晰,可不拆
- 后端 `scripts/mock.go` 644 行(已废弃种子脚本),可考虑直接删除(mocks 已迁移到真实 API)
- 前端 `services/api.ts` 752 行超 700 行硬上限,可按模块拆分(userApi/dashboardApi/serverApi... 各拆独立文件 barrel re-export),风险较高需谨慎
- 回到 dev-log 早期建议:用户消息气泡中【平台实时数据】块可折叠展示