由于后端 graph-service 控制器重命名以避免 Bean 冲突,API 路径已更新:
所有 graph-service 的接口路径已从 /api/v1/ 改为 /api/v1/graph/:
旧路径 → 新路径
/api/v1/templates → /api/v1/graph/templates/api/v1/projects → /api/v1/graph/projects/api/v1/reports → /api/v1/graph/reports/api/v1/attachments → /api/v1/graph/attachments路径前缀: /api/v1/extract/
templateApi - 提取模板管理variableApi - 变量配置管理generationApi - 生成任务管理projectApi - 提取项目管理sourceFileApi - 来源文件管理sourceDocumentApi - 来源文档管理路径前缀: /api/v1/graph/
knowledgeGraphApi - 知识图谱查询graphTemplateApi - 图谱模板管理(新增)graphProjectApi - 图谱项目管理(新增)graphReportApi - 图谱报告管理(新增)路径前缀: /api/v1/documents/
documentApi - 文档管理parseApi - 文档解析路径前缀: /auth/
authApi - 用户认证和授权路径前缀: /api/v1/tasks/
taskCenterApi - 任务管理import { templateApi, generationApi } from '@/api'
// 获取模板列表
const templates = await templateApi.list(1, 20)
// 创建生成任务
const generation = await generationApi.create({
templateId: 'xxx',
documentIds: ['doc1', 'doc2']
})
// 执行提取
await generationApi.execute(generation.id)
import { knowledgeGraphApi, graphReportApi } from '@/api'
// 获取文档图谱
const graph = await knowledgeGraphApi.getDocumentGraph('doc-id')
// 创建图谱报告
const report = await graphReportApi.create({
title: '项目报告',
projectId: 'project-id'
})
// 上传报告附件
await graphReportApi.uploadAttachment(report.id, file, '附件名称')
import { documentApi, parseApi } from '@/api'
// 上传并解析文档
const result = await parseApi.upload(file, templateId)
// 获取文档结构化内容
const structured = await documentApi.getStructured(documentId)
// 标记实体
await documentApi.markEntity(documentId, blockId, {
elementIndex: 0,
startOffset: 10,
endOffset: 20,
entityType: 'person'
})
编辑 vite.config.js:
const API_SERVER = 'http://localhost:18520'
const API_SERVER = 'http://服务器IP:18520'
或使用环境变量:
API_SERVER=http://服务器IP:18520 npm run dev
{
"code": 200,
"msg": "success",
"data": {
// 实际数据
}
}
{
"code": 500,
"msg": "错误信息",
"data": null
}
登录后将 token 存储到 localStorage:
const { accessToken, refreshToken } = await authApi.login({
username: 'user',
password: 'pass'
})
localStorage.setItem('accessToken', accessToken)
localStorage.setItem('refreshToken', refreshToken)
在 src/api/index.js 中已配置请求拦截器,可以自动添加 token:
api.interceptors.request.use(config => {
const token = localStorage.getItem('accessToken')
if (token) {
config.headers.Authorization = `Bearer ${token}`
}
return config
})
路径区分:Extract Service 和 Graph Service 的模板、项目接口路径不同
/api/v1/templates/api/v1/graph/templates文件上传:使用 FormData,设置正确的 Content-Type
错误处理:响应拦截器已处理基本错误,业务层需要 try-catch
Token 刷新:accessToken 过期时使用 refreshToken 刷新
/api/v1/graph/*graphTemplateApi、graphProjectApi、graphReportApi