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

246 lines
9.3 KiB
Markdown
Raw Normal View History

---
module: ai-service-admin
title: "AI 中台管理界面ai-service-admin任务清单"
status: "completed"
version: "0.4.0"
owners:
- "frontend"
- "backend"
last_updated: "2026-02-25"
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]
- [x] (P5-02) 提供者选择组件:实现 `EmbeddingProviderSelect` 下拉组件,对接 `/admin/embedding/providers`
- AC: [AC-ASA-09]
- [x] (P5-03) 动态配置表单:根据 `config_schema` 动态渲染配置表单,实现表单校验
- AC: [AC-ASA-09, AC-ASA-10]
- [x] (P5-04) 测试连接组件:实现 `EmbeddingTestPanel`,展示测试结果和错误信息
- AC: [AC-ASA-11, AC-ASA-12]
- [x] (P5-05) 支持格式组件:实现 `SupportedFormats`,展示支持的文档格式列表
- AC: [AC-ASA-13]
- [x] (P5-06) 页面骨架与路由:创建 `/admin/embedding` 页面,布局包含各功能区
- AC: [AC-ASA-08]
- [x] (P5-07) 配置加载与保存:实现配置加载、保存逻辑
- AC: [AC-ASA-08, AC-ASA-10]
- [x] (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]
- [x] (P6-02) LLM 提供者选择组件:实现 `LLMProviderSelect` 下拉组件
- AC: [AC-ASA-15]
- [x] (P6-03) LLM 动态配置表单:根据 `config_schema` 动态渲染配置表单
- AC: [AC-ASA-15, AC-ASA-16]
- [x] (P6-04) LLM 测试连接组件:实现 `LLMTestPanel`,展示测试回复和耗时
- AC: [AC-ASA-17, AC-ASA-18]
- [x] (P6-05) LLM 配置页面:创建 `/admin/llm` 页面,整合所有组件
- AC: [AC-ASA-14, AC-ASA-16]
### 6.2 RAG 实验室 AI 输出增强
- [x] (P6-06) AI 回复展示组件:实现 `AIResponseViewer`,展示 AI 最终输出
- AC: [AC-ASA-19]
- [x] (P6-07) 流式输出支持:实现 SSE 流式输出展示,支持实时显示 AI 回复
- AC: [AC-ASA-20]
- [x] (P6-08) Token 统计展示:展示 Token 消耗、响应耗时等统计信息
- AC: [AC-ASA-21]
- [x] (P6-09) LLM 选择器:在 RAG 实验室中添加 LLM 配置选择器
- AC: [AC-ASA-22]
- [x] (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 实验室整合 | ✅ 已完成 |
---
## Phase 7: 租户管理v0.4.0
> 页面导向:租户选择器与租户管理功能。
- [x] (P7-01) 租户 API 服务层:创建 src/api/tenant.ts 和 src/types/tenant.ts
- AC: [AC-ASA-01]
- [x] (P7-02) 租户选择器组件:实现 `TenantSelector` 下拉组件,支持租户切换
- AC: [AC-ASA-01]
- [x] (P7-03) 租户持久化:租户选择持久化到 localStorage
- AC: [AC-ASA-01]
---
## Phase 7 任务进度追踪
| 任务 | 描述 | 状态 |
|------|------|------|
| P7-01 | 租户 API 服务层 | ✅ 已完成 |
| P7-02 | 租户选择器组件 | ✅ 已完成 |
| P7-03 | 租户持久化 | ✅ 已完成 |