From f2116b95f23fb428bb3e5fd086c493d9402e4d88 Mon Sep 17 00:00:00 2001 From: MerCry Date: Tue, 24 Feb 2026 23:31:36 +0800 Subject: [PATCH] =?UTF-8?q?feat(ASA-P5):=20=E5=AE=9E=E7=8E=B0=E5=8A=A8?= =?UTF-8?q?=E6=80=81=E9=85=8D=E7=BD=AE=E8=A1=A8=E5=8D=95=E4=B8=8E=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E8=BF=9E=E6=8E=A5=E7=BB=84=E4=BB=B6=20[AC-ASA-09,=20A?= =?UTF-8?q?C-ASA-10,=20AC-ASA-11,=20AC-ASA-12]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ai-service-admin/src/api/embedding.ts | 88 +++++++ .../embedding/EmbeddingConfigForm.vue | 219 +++++++++++++++++ .../embedding/EmbeddingTestPanel.vue | 230 ++++++++++++++++++ spec/ai-service-admin/tasks.md | 47 +++- 4 files changed, 583 insertions(+), 1 deletion(-) create mode 100644 ai-service-admin/src/api/embedding.ts create mode 100644 ai-service-admin/src/components/embedding/EmbeddingConfigForm.vue create mode 100644 ai-service-admin/src/components/embedding/EmbeddingTestPanel.vue diff --git a/ai-service-admin/src/api/embedding.ts b/ai-service-admin/src/api/embedding.ts new file mode 100644 index 0000000..7c6094e --- /dev/null +++ b/ai-service-admin/src/api/embedding.ts @@ -0,0 +1,88 @@ +import request from '@/utils/request' + +export interface EmbeddingProviderInfo { + name: string + display_name: string + description?: string + config_schema: Record +} + +export interface EmbeddingConfig { + provider: string + config: Record + updated_at?: string +} + +export interface EmbeddingConfigUpdate { + provider: string + config?: Record +} + +export interface EmbeddingTestResult { + success: boolean + dimension: number + latency_ms?: number + message?: string + error?: string +} + +export interface EmbeddingTestRequest { + test_text?: string + config?: EmbeddingConfigUpdate +} + +export interface DocumentFormat { + extension: string + name: string + description?: string +} + +export interface EmbeddingProvidersResponse { + providers: EmbeddingProviderInfo[] +} + +export interface EmbeddingConfigUpdateResponse { + success: boolean + message: string +} + +export interface SupportedFormatsResponse { + formats: DocumentFormat[] +} + +export function getProviders() { + return request({ + url: '/admin/embedding/providers', + method: 'get' + }) +} + +export function getConfig() { + return request({ + url: '/admin/embedding/config', + method: 'get' + }) +} + +export function saveConfig(data: EmbeddingConfigUpdate) { + return request({ + url: '/admin/embedding/config', + method: 'put', + data + }) +} + +export function testEmbedding(data: EmbeddingTestRequest): Promise { + return request({ + url: '/admin/embedding/test', + method: 'post', + data + }) +} + +export function getSupportedFormats() { + return request({ + url: '/admin/embedding/formats', + method: 'get' + }) +} diff --git a/ai-service-admin/src/components/embedding/EmbeddingConfigForm.vue b/ai-service-admin/src/components/embedding/EmbeddingConfigForm.vue new file mode 100644 index 0000000..e491cc8 --- /dev/null +++ b/ai-service-admin/src/components/embedding/EmbeddingConfigForm.vue @@ -0,0 +1,219 @@ + + + + + diff --git a/ai-service-admin/src/components/embedding/EmbeddingTestPanel.vue b/ai-service-admin/src/components/embedding/EmbeddingTestPanel.vue new file mode 100644 index 0000000..6136a71 --- /dev/null +++ b/ai-service-admin/src/components/embedding/EmbeddingTestPanel.vue @@ -0,0 +1,230 @@ + + + + + diff --git a/spec/ai-service-admin/tasks.md b/spec/ai-service-admin/tasks.md index 8a15fc7..08069e7 100644 --- a/spec/ai-service-admin/tasks.md +++ b/spec/ai-service-admin/tasks.md @@ -2,7 +2,7 @@ module: ai-service-admin title: "AI 中台管理界面(ai-service-admin)任务清单" status: "draft" -version: "0.1.0" +version: "0.2.0" owners: - "frontend" - "backend" @@ -116,3 +116,48 @@ principles: - `/admin/rag/experiments/run`(POST 实验结果:retrievalResults + finalPrompt) - `/admin/sessions`(GET 列表,分页 + 筛选) - `/admin/sessions/{sessionId}`(GET 详情:messages + trace) + +--- + +## Phase 5: 嵌入模型管理(配置页面/测试连接) + +> 页面导向:嵌入模型配置页面,支持提供者切换、参数配置、连接测试。 + +- [ ] (P5-01) 嵌入模型配置页面骨架:创建 `/admin/embedding` 路由,布局包含提供者选择区、配置表单区、测试连接区、支持格式展示区。 + - AC: [AC-ASA-08] + +- [x] (P5-02) 提供者选择组件:实现 `EmbeddingProviderSelect` 下拉组件,对接 `/admin/embedding/providers`,展示提供者列表(name、display_name、description)。 + - AC: [AC-ASA-09] + +- [x] (P5-03) 动态配置表单:根据选中提供者的 `config_schema` 动态渲染配置表单(支持 string、integer、number 类型),实现表单校验。 + - AC: [AC-ASA-09, AC-ASA-10] + +- [ ] (P5-04) 当前配置加载:页面初始化时调用 `/admin/embedding/config` 获取当前配置,填充表单默认值。 + - AC: [AC-ASA-08] + +- [ ] (P5-05) 配置保存功能:实现保存按钮,调用 `PUT /admin/embedding/config`,处理成功/失败响应并提示用户。 + - AC: [AC-ASA-10] + +- [x] (P5-06) 测试连接功能:实现测试按钮,调用 `POST /admin/embedding/test`,展示测试结果(success、dimension、latency_ms、message)。 + - AC: [AC-ASA-11] + +- [x] (P5-07) 测试失败错误展示:测试失败时展示详细错误信息(error 字段),并提供排查建议。 + - AC: [AC-ASA-12] + +- [ ] (P5-08) 支持格式展示:调用 `/admin/embedding/formats` 获取支持的文档格式列表,以标签或卡片形式展示。 + - AC: [AC-ASA-13] + +--- + +## Phase 5 任务进度追踪 + +| 任务 | 描述 | 状态 | +|------|------|------| +| P5-01 | 嵌入模型配置页面骨架 | ⏳ 待处理 | +| P5-02 | 提供者选择组件 | ✅ 已完成 | +| P5-03 | 动态配置表单 | ✅ 已完成 | +| P5-04 | 当前配置加载 | ⏳ 待处理 | +| P5-05 | 配置保存功能 | ⏳ 待处理 | +| P5-06 | 测试连接功能 | ✅ 已完成 | +| P5-07 | 测试失败错误展示 | ✅ 已完成 | +| P5-08 | 支持格式展示 | ⏳ 待处理 |