ai-robot-core/spec/ai-service-admin/tasks.md

221 lines
8.6 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.

---
module: ai-service-admin
title: "AI 中台管理界面ai-service-admin任务清单"
status: "draft"
version: "0.2.0"
owners:
- "frontend"
- "backend"
last_updated: "2026-02-24"
principles:
- atomic
- page-oriented
---
# tasks.mdASA
> 原则:
> - **原子性**:每个任务应在 0.5 ~ 1.5 天内完成,且可独立提交与回滚。
> - **页面导向**:以页面/路由为骨架拆分,组件/能力封装作为页面任务的前置或并行支撑。
> - **可追溯**每个任务必须标注关联的验收标准AC-ASA-*)。
---
## Phase 1: 基础建设Foundation
- [ ] (P1-01) 初始化 `ai-service-admin` 前端工程Vue 3 + Element Plus + RuoYi-Vue 基座对齐),落地基础目录结构与路由骨架。
- AC: [AC-ASA-01]
- [ ] (P1-02) 接入 Pinia实现 `tenant` store`currentTenantId`并持久化localStorage提供切换租户能力最小 UI/逻辑)。
- AC: [AC-ASA-01]
- [ ] (P1-03) Axios/SDK 请求层封装:创建统一 `request` 实例,自动注入必填 Header `X-Tenant-Id`(从 Pinia 读取)。
- AC: [AC-ASA-01]
- [ ] (P1-04) 全局异常拦截:实现 401/403 响应拦截策略401 跳转登录/清理凭证403 统一提示 + 页面级占位)。
- AC: [AC-ASA-01]
- [ ] (P1-05) 基础组件封装:`BaseTable`(分页/筛选/加载态/空态)、`BaseForm`(校验/提交态/错误提示)并给出示例页。
- AC: [AC-ASA-01]
---
## Phase 2: 知识库管理(列表页/上传/任务轮询)
> 页面导向:知识库文档列表页 + 上传入口 + 索引任务状态观测。
- [ ] (P2-01) 知识库文档列表页实现列表展示与多条件筛选kbId、状态、时间、来源对接 `/admin/kb/documents`(若后端未提供 GET则先 Mock
- AC: [AC-ASA-01]
- [ ] (P2-02) 上传组件:封装 `KbDocumentUpload`(基于 `el-upload`),支持多文件上传、上传中队列展示、失败重试提示。
- AC: [AC-ASA-01]
- [ ] (P2-03) 上传后任务回显:上传成功后从响应中提取 `jobId`,在列表或详情抽屉中展示任务卡片(状态/进度)。
- AC: [AC-ASA-01]
- [ ] (P2-04) 任务状态轮询:实现 `useJobPolling(jobId)` composable3s 轮询 `/admin/kb/index/jobs/{jobId}`;完成/失败自动停止;切页/关闭抽屉自动取消)。
- AC: [AC-ASA-01, AC-ASA-02]
- [ ] (P2-05) 失败任务错误详情:实现错误展示弹窗/抽屉(展示 `errorMsg` + requestId并在列表行高亮失败状态。
- AC: [AC-ASA-02]
---
## Phase 3: RAG 实验室(双栏对比/调试联调)
> 页面导向RAG 实验室主页面,突出“双栏对比视图”。
- [ ] (P3-01) RAG 实验室页面骨架左侧参数面板query、kbIds、检索参数、prompt 版本选择),右侧双栏结果区占位。
- AC: [AC-ASA-05]
- [ ] (P3-02) RAG 专用组件:实现 `RagRetrievalList`召回片段列表score/来源/片段)、`FinalPromptViewer`(最终 Prompt 只读展示,支持复制)。
- AC: [AC-ASA-05]
- [ ] (P3-03) 调试 API 联调:对接 `/admin/rag/experiments/run`,将返回的 `retrievalResults``finalPrompt` 绑定到双栏视图;处理 Loading/错误态。
- AC: [AC-ASA-05]
- [ ] (P3-04) 双配置对比模式MVP支持保留“上一次运行结果”作为对照或同时运行两组参数视后端能力并在 UI 中标注差异。
- AC: [AC-ASA-06]
---
## Phase 4: 会话监控与详情(列表筛选/全链路详情)
> 页面导向:会话列表页 + 全链路详情弹窗。
- [ ] (P4-01) 会话监控列表页实现多字段过滤tenantId、sessionId、时间范围、状态/是否错误等)与分页,对接 `/admin/sessions`(若后端未提供,则先 Mock
- AC: [AC-ASA-07]
- [ ] (P4-02) 会话详情弹窗:点击列表行打开弹窗,对接 `/admin/sessions/{sessionId}`展示消息流Timeline/气泡流)与基础元信息。
- AC: [AC-ASA-07]
- [ ] (P4-03) Trace 展开视图:在详情中实现“检索命中/工具调用/错误信息”折叠面板,支持按消息节点展开查看。
- AC: [AC-ASA-07]
---
## 待澄清Open Questions
- [x] (Q-01) ✅ 已确认:后端将补齐 `GET /admin/kb/documents` 列表接口。
- 影响 AC: [AC-ASA-01]
- [x] (Q-02) ✅ 已确认:后端将补齐 `GET /admin/sessions` 列表接口。
- 影响 AC: [AC-ASA-07]
- [x] (Q-03) ✅ 已确认:对比模式采用“前端串行调用两次 `/admin/rag/experiments/run` 接口”的方式实现。
- 影响 AC: [AC-ASA-06]
## Mock 支撑(在 Python 后端未完成前)
结论:**需要 Mock 支撑**,以便前端在后端未完成时并行开发页面与交互。
建议优先 Mock 覆盖(最小闭环):
- `/admin/kb/documents`GET 列表,分页 + 筛选)
- `/admin/kb/documents`POST 上传,返回 `jobId`
- `/admin/kb/index/jobs/{jobId}`GET 任务状态流转pending -> processing -> completed/failed
- `/admin/rag/experiments/run`POST 实验结果retrievalResults + finalPrompt
- `/admin/sessions`GET 列表,分页 + 筛选)
- `/admin/sessions/{sessionId}`GET 详情messages + trace
---
## Phase 5: 嵌入模型管理(配置页面/测试连接)
> 页面导向:嵌入模型配置页面,支持提供者切换、参数配置、连接测试。
- [x] (P5-01) API 服务层与类型定义:创建 src/api/embedding.ts 和 src/types/embedding.ts
- AC: [AC-ASA-08, AC-ASA-09]
- [ ] (P5-02) 提供者选择组件:实现 `EmbeddingProviderSelect` 下拉组件,对接 `/admin/embedding/providers`
- AC: [AC-ASA-09]
- [ ] (P5-03) 动态配置表单:根据 `config_schema` 动态渲染配置表单,实现表单校验
- AC: [AC-ASA-09, AC-ASA-10]
- [ ] (P5-04) 测试连接组件:实现 `EmbeddingTestPanel`,展示测试结果和错误信息
- AC: [AC-ASA-11, AC-ASA-12]
- [ ] (P5-05) 支持格式组件:实现 `SupportedFormats`,展示支持的文档格式列表
- AC: [AC-ASA-13]
- [ ] (P5-06) 页面骨架与路由:创建 `/admin/embedding` 页面,布局包含各功能区
- AC: [AC-ASA-08]
- [ ] (P5-07) 配置加载与保存:实现配置加载、保存逻辑
- AC: [AC-ASA-08, AC-ASA-10]
- [ ] (P5-08) 组件整合与测试:整合所有组件完成功能闭环
- AC: [AC-ASA-08~AC-ASA-13]
---
## Phase 5 任务进度追踪
| 任务 | 描述 | 状态 |
|------|------|------|
| P5-01 | API 服务层与类型定义 | ✅ 已完成 |
| P5-02 | 提供者选择组件 | ⏳ 待处理 |
| P5-03 | 动态配置表单 | ⏳ 待处理 |
| P5-04 | 测试连接组件 | ⏳ 待处理 |
| P5-05 | 支持格式组件 | ⏳ 待处理 |
| P5-06 | 页面骨架与路由 | ⏳ 待处理 |
| P5-07 | 配置加载与保存 | ⏳ 待处理 |
| P5-08 | 组件整合与测试 | ⏳ 待处理 |
---
## Phase 6: LLM 模型配置与 RAG 调试输出v0.3.0
> 页面导向LLM 模型配置页面 + RAG 实验室 AI 输出增强。
### 6.1 LLM 模型配置
- [x] (P6-01) LLM API 服务层与类型定义:创建 src/api/llm.ts 和 src/types/llm.ts
- AC: [AC-ASA-14, AC-ASA-15]
- [ ] (P6-02) LLM 提供者选择组件:实现 `LLMProviderSelect` 下拉组件
- AC: [AC-ASA-15]
- [ ] (P6-03) LLM 动态配置表单:根据 `config_schema` 动态渲染配置表单
- AC: [AC-ASA-15, AC-ASA-16]
- [ ] (P6-04) LLM 测试连接组件:实现 `LLMTestPanel`,展示测试回复和耗时
- AC: [AC-ASA-17, AC-ASA-18]
- [ ] (P6-05) LLM 配置页面:创建 `/admin/llm` 页面,整合所有组件
- AC: [AC-ASA-14, AC-ASA-16]
### 6.2 RAG 实验室 AI 输出增强
- [ ] (P6-06) AI 回复展示组件:实现 `AIResponseViewer`,展示 AI 最终输出
- AC: [AC-ASA-19]
- [ ] (P6-07) 流式输出支持:实现 SSE 流式输出展示,支持实时显示 AI 回复
- AC: [AC-ASA-20]
- [ ] (P6-08) Token 统计展示:展示 Token 消耗、响应耗时等统计信息
- AC: [AC-ASA-21]
- [ ] (P6-09) LLM 选择器:在 RAG 实验室中添加 LLM 配置选择器
- AC: [AC-ASA-22]
- [ ] (P6-10) RAG 实验室整合:将 AI 输出组件整合到 RAG 实验室页面
- AC: [AC-ASA-19~AC-ASA-22]
---
## Phase 6 任务进度追踪
| 任务 | 描述 | 状态 |
|------|------|------|
| P6-01 | LLM API 服务层与类型定义 | ✅ 已完成 |
| P6-02 | LLM 提供者选择组件 | ⏳ 待处理 |
| P6-03 | LLM 动态配置表单 | ⏳ 待处理 |
| P6-04 | LLM 测试连接组件 | ⏳ 待处理 |
| P6-05 | LLM 配置页面 | ⏳ 待处理 |
| P6-06 | AI 回复展示组件 | ⏳ 待处理 |
| P6-07 | 流式输出支持 | ⏳ 待处理 |
| P6-08 | Token 统计展示 | ⏳ 待处理 |
| P6-09 | LLM 选择器 | ⏳ 待处理 |
| P6-10 | RAG 实验室整合 | ⏳ 待处理 |