|
@@ -1,10 +1,10 @@
|
|
|
# 📊 灵越智报 2.0 - 当前进度总结
|
|
# 📊 灵越智报 2.0 - 当前进度总结
|
|
|
|
|
|
|
|
-**整体进度:70%** | **报告日期:2026-01-21**
|
|
|
|
|
|
|
+**整体进度:80%** | **报告日期:2026-01-22**
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-## ✅ 已完成(70%)
|
|
|
|
|
|
|
+## ✅ 已完成(80%)
|
|
|
|
|
|
|
|
### 基础设施
|
|
### 基础设施
|
|
|
- Spring Boot 3.1.5 单体应用架构(lingyue-starter)
|
|
- Spring Boot 3.1.5 单体应用架构(lingyue-starter)
|
|
@@ -18,6 +18,31 @@
|
|
|
- 🔍 **RAG 向量化存储** → ✅ 已完成
|
|
- 🔍 **RAG 向量化存储** → ✅ 已完成
|
|
|
- 🏷️ **NER 实体识别服务** → ✅ 已完成并测试验证
|
|
- 🏷️ **NER 实体识别服务** → ✅ 已完成并测试验证
|
|
|
- 📄 **文档结构化解析** → ✅ 已完成(图片、表格、样式)
|
|
- 📄 **文档结构化解析** → ✅ 已完成(图片、表格、样式)
|
|
|
|
|
+- 📦 **数据源管理** → ✅ 已完成(CRUD + 取值 + 聚合)
|
|
|
|
|
+- ⏱️ **任务中心** → ✅ 已完成(多阶段进度跟踪)
|
|
|
|
|
+
|
|
|
|
|
+### 新增功能(2026-01-22)✅ 一键上传全自动处理 + 数据源管理
|
|
|
|
|
+
|
|
|
|
|
+- ✅ **一键上传全自动处理流程**
|
|
|
|
|
+ - 上传接口:`POST /api/v1/parse/upload`(唯一入口)
|
|
|
|
|
+ - 自动触发:RAG向量化 → 结构化解析 → NER实体提取 → 图数据库存储
|
|
|
|
|
+ - 手动重处理 API 保留,支持单独重新生成
|
|
|
|
|
+
|
|
|
|
|
+- ✅ **数据源管理系统**
|
|
|
|
|
+ - 支持绑定 `GraphNode` 和 `DocumentElement` 两种类型
|
|
|
|
|
+ - 支持多种值类型:text/image/table/mixed
|
|
|
|
|
+ - 支持多种聚合方式:first/last/concat/sum/avg/list
|
|
|
|
|
+ - 完整 CRUD + 取值 + 批量取值 API
|
|
|
|
|
+
|
|
|
|
|
+- ✅ **任务中心进度跟踪**
|
|
|
|
|
+ - 6阶段进度:upload → parse → rag → structured → ner → graph
|
|
|
|
|
+ - 阶段权重:parse(15%) + rag(10%) + structured(15%) + ner(50%) + graph(10%)
|
|
|
|
|
+ - 实时进度查询 API + 结果摘要展示
|
|
|
|
|
+
|
|
|
|
|
+- ✅ **端到端测试脚本完善**
|
|
|
|
|
+ - `test_upload_api.sh` 支持完整流程测试
|
|
|
|
|
+ - 自动轮询等待 NER 完成(基于 GraphNode 数量稳定检测)
|
|
|
|
|
+ - 支持任务中心查询、数据源操作等
|
|
|
|
|
|
|
|
### 新增功能(2026-01-21)✅ 文档结构化解析完成
|
|
### 新增功能(2026-01-21)✅ 文档结构化解析完成
|
|
|
- ✅ **Word 文档结构化提取**
|
|
- ✅ **Word 文档结构化提取**
|
|
@@ -114,43 +139,38 @@
|
|
|
| 图查询接口 | ✅ | 按文档、按用户查询 |
|
|
| 图查询接口 | ✅ | 按文档、按用户查询 |
|
|
|
| **Neo4j 集成** | ✅ | 本地部署,双写同步 |
|
|
| **Neo4j 集成** | ✅ | 本地部署,双写同步 |
|
|
|
|
|
|
|
|
-### Week 3-4 任务待完成:
|
|
|
|
|
|
|
+### Week 3-4 任务完成情况:
|
|
|
|
|
|
|
|
| 任务 | 状态 | 说明 |
|
|
| 任务 | 状态 | 说明 |
|
|
|
|------|------|------|
|
|
|------|------|------|
|
|
|
-| 数据源创建接口 | ⏳ | 下一步重点 |
|
|
|
|
|
-| 数据源绑定节点 | ⏳ | 下一步重点 |
|
|
|
|
|
-| 数据源查询接口 | ⏳ | 下一步重点 |
|
|
|
|
|
|
|
+| 数据源创建接口 | ✅ | `POST /api/v1/datasource` |
|
|
|
|
|
+| 数据源绑定节点 | ✅ | `PUT /api/v1/datasource/{id}/refs` |
|
|
|
|
|
+| 数据源查询接口 | ✅ | 按ID/文档/用户/类型查询 |
|
|
|
|
|
+| 数据源取值接口 | ✅ | `GET /api/v1/datasource/{id}/value` |
|
|
|
|
|
+| 批量取值接口 | ✅ | `POST /api/v1/datasource/batch-value` |
|
|
|
|
|
+| 任务中心进度跟踪 | ✅ | 6阶段进度 + 结果摘要 |
|
|
|
|
|
+| 端到端流程测试 | ✅ | 完整测试脚本 |
|
|
|
| 模板创建接口 | ⏳ | 下一步重点 |
|
|
| 模板创建接口 | ⏳ | 下一步重点 |
|
|
|
| 占位符绑定数据源 | ⏳ | 下一步重点 |
|
|
| 占位符绑定数据源 | ⏳ | 下一步重点 |
|
|
|
| 模板渲染接口 | ⏳ | 下一步重点 |
|
|
| 模板渲染接口 | ⏳ | 下一步重点 |
|
|
|
-| 端到端流程测试 | ⏳ | 需要完善 |
|
|
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
-## 📋 下一步计划:数据源与模板基础(Week 3)
|
|
|
|
|
|
|
+## 📋 下一步计划:模板系统(Week 4)
|
|
|
|
|
|
|
|
-**计划周期:2026-01-21 ~ 2026-01-27**
|
|
|
|
|
|
|
+**计划周期:2026-01-23 ~ 2026-01-27**
|
|
|
|
|
|
|
|
-**目标:实现数据源管理和模板系统基础功能**(设计文档 2.4 / 2.6)
|
|
|
|
|
|
|
+**目标:实现模板系统基础功能**(设计文档 2.6)
|
|
|
|
|
|
|
|
-### 1. 数据源管理(优先级最高)
|
|
|
|
|
|
|
+### 1. 数据源管理 ✅ 已完成
|
|
|
|
|
|
|
|
-根据设计文档 2.4.1:
|
|
|
|
|
-> 数据源是图数据库中的节点集合,具有层次关系
|
|
|
|
|
|
|
+- [x] 数据源创建接口
|
|
|
|
|
+- [x] 数据源绑定节点(支持 GraphNode + DocumentElement)
|
|
|
|
|
+- [x] 数据源查询接口(按ID/文档/用户/类型)
|
|
|
|
|
+- [x] 数据源取值接口(支持聚合:first/last/concat/sum/avg/list)
|
|
|
|
|
+- [x] 数据源批量取值(用于模板渲染)
|
|
|
|
|
|
|
|
-**实施任务:**
|
|
|
|
|
-- [ ] 数据源创建接口(DataSource 实体,节点绑定)
|
|
|
|
|
-- [ ] 数据源绑定节点(节点 ID 数组存储,关联关系维护)
|
|
|
|
|
-- [ ] 数据源查询接口(按类型、按文档查询)
|
|
|
|
|
-- [ ] 数据源编辑接口(添加/移除节点)
|
|
|
|
|
-
|
|
|
|
|
-**数据源类型**:
|
|
|
|
|
-- 表格数据源:表格单元格作为独立节点
|
|
|
|
|
-- 文本数据源:文本片段作为节点
|
|
|
|
|
-- 图片数据源:图片作为节点
|
|
|
|
|
-
|
|
|
|
|
-### 2. 模板系统基础
|
|
|
|
|
|
|
+### 2. 模板系统基础(下一步重点)
|
|
|
|
|
|
|
|
根据设计文档 2.6.1:
|
|
根据设计文档 2.6.1:
|
|
|
> 模板是对应输出的占位符结构,占位符绑定到数据源编号
|
|
> 模板是对应输出的占位符结构,占位符绑定到数据源编号
|
|
@@ -158,54 +178,32 @@
|
|
|
**实施任务:**
|
|
**实施任务:**
|
|
|
- [ ] 模板创建接口(Template 实体,占位符解析)
|
|
- [ ] 模板创建接口(Template 实体,占位符解析)
|
|
|
- [ ] 占位符绑定数据源(placeholder_mapping JSONB 存储)
|
|
- [ ] 占位符绑定数据源(placeholder_mapping JSONB 存储)
|
|
|
-- [ ] 模板渲染接口(占位符替换,数据源值获取)
|
|
|
|
|
|
|
+- [ ] 模板渲染接口(占位符替换,调用数据源批量取值)
|
|
|
- [ ] 模板复制功能(基于已有模板复制)
|
|
- [ ] 模板复制功能(基于已有模板复制)
|
|
|
|
|
|
|
|
-### 3. 数据库表设计
|
|
|
|
|
-
|
|
|
|
|
-根据现有 `supplement_tables.sql`,需要完善:
|
|
|
|
|
-
|
|
|
|
|
-```sql
|
|
|
|
|
--- 数据源表
|
|
|
|
|
-CREATE TABLE IF NOT EXISTS data_sources (
|
|
|
|
|
- id VARCHAR(32) PRIMARY KEY,
|
|
|
|
|
- name VARCHAR(255) NOT NULL,
|
|
|
|
|
- type VARCHAR(50) NOT NULL, -- table/text/image
|
|
|
|
|
- document_id VARCHAR(32),
|
|
|
|
|
- node_ids JSONB, -- 绑定的节点 ID 数组
|
|
|
|
|
- metadata JSONB,
|
|
|
|
|
- user_id VARCHAR(32),
|
|
|
|
|
- create_time TIMESTAMP,
|
|
|
|
|
- update_time TIMESTAMP
|
|
|
|
|
-);
|
|
|
|
|
-
|
|
|
|
|
--- 模板表
|
|
|
|
|
-CREATE TABLE IF NOT EXISTS templates (
|
|
|
|
|
- id VARCHAR(32) PRIMARY KEY,
|
|
|
|
|
- name VARCHAR(255) NOT NULL,
|
|
|
|
|
- content TEXT, -- 模板内容(含占位符)
|
|
|
|
|
- placeholder_mapping JSONB, -- 占位符到数据源的映射
|
|
|
|
|
- user_id VARCHAR(32),
|
|
|
|
|
- create_time TIMESTAMP,
|
|
|
|
|
- update_time TIMESTAMP
|
|
|
|
|
-);
|
|
|
|
|
-```
|
|
|
|
|
-
|
|
|
|
|
-### 4. 接口设计
|
|
|
|
|
|
|
+### 3. 已实现的数据源 API
|
|
|
|
|
|
|
|
-**数据源 API**:
|
|
|
|
|
-- `POST /api/datasource` - 创建数据源
|
|
|
|
|
-- `GET /api/datasource/{id}` - 获取数据源
|
|
|
|
|
-- `GET /api/datasource/document/{documentId}` - 按文档查询
|
|
|
|
|
-- `PUT /api/datasource/{id}/nodes` - 更新绑定节点
|
|
|
|
|
-- `DELETE /api/datasource/{id}` - 删除数据源
|
|
|
|
|
|
|
+| 接口 | 方法 | 说明 | 状态 |
|
|
|
|
|
+|------|------|------|------|
|
|
|
|
|
+| `/api/v1/datasource` | POST | 创建数据源 | ✅ |
|
|
|
|
|
+| `/api/v1/datasource/{id}` | GET | 获取数据源 | ✅ |
|
|
|
|
|
+| `/api/v1/datasource/document/{documentId}` | GET | 按文档查询 | ✅ |
|
|
|
|
|
+| `/api/v1/datasource/user/{userId}` | GET | 按用户查询 | ✅ |
|
|
|
|
|
+| `/api/v1/datasource/{id}` | PUT | 更新数据源 | ✅ |
|
|
|
|
|
+| `/api/v1/datasource/{id}/refs` | PUT | 更新绑定节点 | ✅ |
|
|
|
|
|
+| `/api/v1/datasource/{id}` | DELETE | 删除数据源 | ✅ |
|
|
|
|
|
+| `/api/v1/datasource/{id}/value` | GET | 获取数据源值 | ✅ |
|
|
|
|
|
+| `/api/v1/datasource/batch-value` | POST | 批量获取值 | ✅ |
|
|
|
|
|
+
|
|
|
|
|
+### 4. 待实现的模板 API
|
|
|
|
|
|
|
|
-**模板 API**:
|
|
|
|
|
-- `POST /api/template` - 创建模板
|
|
|
|
|
-- `GET /api/template/{id}` - 获取模板
|
|
|
|
|
-- `PUT /api/template/{id}/mapping` - 更新占位符映射
|
|
|
|
|
-- `POST /api/template/{id}/render` - 渲染模板
|
|
|
|
|
-- `POST /api/template/{id}/copy` - 复制模板
|
|
|
|
|
|
|
+| 接口 | 方法 | 说明 | 状态 |
|
|
|
|
|
+|------|------|------|------|
|
|
|
|
|
+| `/api/v1/template` | POST | 创建模板 | ⏳ |
|
|
|
|
|
+| `/api/v1/template/{id}` | GET | 获取模板 | ⏳ |
|
|
|
|
|
+| `/api/v1/template/{id}/mapping` | PUT | 更新占位符映射 | ⏳ |
|
|
|
|
|
+| `/api/v1/template/{id}/render` | POST | 渲染模板 | ⏳ |
|
|
|
|
|
+| `/api/v1/template/{id}/copy` | POST | 复制模板 | ⏳ |
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
@@ -292,38 +290,67 @@ database/
|
|
|
- ✅ NER 实体提取
|
|
- ✅ NER 实体提取
|
|
|
- ✅ 文档结构化解析(图片、表格)
|
|
- ✅ 文档结构化解析(图片、表格)
|
|
|
- ✅ Neo4j 图数据库集成
|
|
- ✅ Neo4j 图数据库集成
|
|
|
- - ⏳ 数据源管理(下一步)
|
|
|
|
|
|
|
+ - ✅ **数据源管理**(已完成)
|
|
|
|
|
+ - ✅ **一键上传全自动处理**(已完成)
|
|
|
|
|
+ - ✅ **任务中心进度跟踪**(已完成)
|
|
|
- ⏳ 模板基础(下一步)
|
|
- ⏳ 模板基础(下一步)
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
## 📋 API 接口清单
|
|
## 📋 API 接口清单
|
|
|
|
|
|
|
|
|
|
+### 文件上传(唯一入口)
|
|
|
|
|
+
|
|
|
|
|
+| 接口 | 方法 | 说明 | 状态 |
|
|
|
|
|
+|------|------|------|------|
|
|
|
|
|
+| `/api/v1/parse/upload` | POST | **一键上传,自动触发全流程** | ✅ |
|
|
|
|
|
+
|
|
|
### 文档解析服务(parse-service)
|
|
### 文档解析服务(parse-service)
|
|
|
|
|
|
|
|
| 接口 | 方法 | 说明 | 状态 |
|
|
| 接口 | 方法 | 说明 | 状态 |
|
|
|
|------|------|------|------|
|
|
|------|------|------|------|
|
|
|
-| `/parse/structured/{documentId}` | GET | 触发结构化解析 | ✅ |
|
|
|
|
|
|
|
+| `/parse/structured/{documentId}` | GET | 手动触发结构化解析 | ✅ |
|
|
|
| `/parse/elements/{documentId}` | GET | 获取所有结构化元素 | ✅ |
|
|
| `/parse/elements/{documentId}` | GET | 获取所有结构化元素 | ✅ |
|
|
|
| `/parse/elements/{documentId}/images` | GET | 获取图片列表 | ✅ |
|
|
| `/parse/elements/{documentId}/images` | GET | 获取图片列表 | ✅ |
|
|
|
| `/parse/elements/{documentId}/tables` | GET | 获取表格列表 | ✅ |
|
|
| `/parse/elements/{documentId}/tables` | GET | 获取表格列表 | ✅ |
|
|
|
| `/api/v1/files/images/{docId}/{filename}` | GET | 获取图片资源 | ✅ |
|
|
| `/api/v1/files/images/{docId}/{filename}` | GET | 获取图片资源 | ✅ |
|
|
|
|
|
|
|
|
|
|
+### 任务中心(parse-service)
|
|
|
|
|
+
|
|
|
|
|
+| 接口 | 方法 | 说明 | 状态 |
|
|
|
|
|
+|------|------|------|------|
|
|
|
|
|
+| `/api/v1/tasks/list` | GET | 获取任务列表 | ✅ |
|
|
|
|
|
+| `/api/v1/tasks/{taskId}/detail` | GET | 获取任务详情 | ✅ |
|
|
|
|
|
+| `/api/v1/tasks/by-document/{documentId}` | GET | 按文档ID查询任务 | ✅ |
|
|
|
|
|
+| `/api/v1/tasks/statistics` | GET | 获取任务统计 | ✅ |
|
|
|
|
|
+
|
|
|
### NER 服务(ner-service)
|
|
### NER 服务(ner-service)
|
|
|
|
|
|
|
|
| 接口 | 方法 | 说明 | 状态 |
|
|
| 接口 | 方法 | 说明 | 状态 |
|
|
|
|------|------|------|------|
|
|
|------|------|------|------|
|
|
|
| `/api/ner/extract` | POST | 文本实体抽取 | ✅ |
|
|
| `/api/ner/extract` | POST | 文本实体抽取 | ✅ |
|
|
|
-| `/api/ner/document/{id}` | POST | 文档实体抽取 | ✅ |
|
|
|
|
|
|
|
+| `/api/ner/document/{id}` | POST | 手动触发文档实体抽取 | ✅ |
|
|
|
| `/api/ner/relations` | POST | 关系抽取 | ✅ |
|
|
| `/api/ner/relations` | POST | 关系抽取 | ✅ |
|
|
|
|
|
|
|
|
### 图谱服务(graph-service)
|
|
### 图谱服务(graph-service)
|
|
|
|
|
|
|
|
| 接口 | 方法 | 说明 | 状态 |
|
|
| 接口 | 方法 | 说明 | 状态 |
|
|
|
|------|------|------|------|
|
|
|------|------|------|------|
|
|
|
-| `/api/v1/graph/nodes` | GET/POST | 节点 CRUD | ✅ |
|
|
|
|
|
-| `/api/v1/graph/relations` | GET/POST | 关系 CRUD | ✅ |
|
|
|
|
|
-| `/api/v1/graph/document/{id}` | GET | 按文档查询 | ✅ |
|
|
|
|
|
|
|
+| `/api/graph/nodes` | POST | 创建节点 | ✅ |
|
|
|
|
|
+| `/api/graph/nodes/{nodeId}` | GET/PUT/DELETE | 节点 CRUD | ✅ |
|
|
|
|
|
+| `/api/graph/documents/{documentId}/nodes` | GET | 按文档查询节点 | ✅ |
|
|
|
|
|
+| `/api/graph/relations` | POST | 创建关系 | ✅ |
|
|
|
|
|
+
|
|
|
|
|
+### 数据源服务(graph-service)
|
|
|
|
|
+
|
|
|
|
|
+| 接口 | 方法 | 说明 | 状态 |
|
|
|
|
|
+|------|------|------|------|
|
|
|
|
|
+| `/api/v1/datasource` | POST | 创建数据源 | ✅ |
|
|
|
|
|
+| `/api/v1/datasource/{id}` | GET | 获取数据源 | ✅ |
|
|
|
|
|
+| `/api/v1/datasource/document/{documentId}` | GET | 按文档查询 | ✅ |
|
|
|
|
|
+| `/api/v1/datasource/{id}/refs` | PUT | 更新绑定节点 | ✅ |
|
|
|
|
|
+| `/api/v1/datasource/{id}/value` | GET | **获取数据源值** | ✅ |
|
|
|
|
|
+| `/api/v1/datasource/batch-value` | POST | **批量获取值** | ✅ |
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|