# 灵越智报 2.0 - 简化设计说明 > **设计时间**: 2026-02-12 > **核心变化**: 前端只关心"项目"概念,不区分项目/模板/报告三层 --- ## 一、设计变更说明 ### 1.1 原设计(三层结构) ``` 项目 (PROJECT) └── 报告 (REPORT) ├── 基于模板 (TEMPLATE) ├── 附件 (ATTACHMENT) ├── 实体 (ENTITY) ├── 规则 (RULE) └── 要素值 (VALUE) ``` **问题**: - 概念层次复杂,用户理解成本高 - 模板和报告分离,操作流程繁琐 - 前端需要管理三个层级的状态 ### 1.2 新设计(单层结构) ``` 项目 (PROJECT) ├── 要素定义 (ELEMENT) - 原模板的要素 ├── 要素值 (VALUE) - 原报告的值 ├── 附件 (ATTACHMENT) ├── 实体 (ENTITY) └── 规则 (RULE) ``` **优势**: - ✅ 概念简单:只有"项目" - ✅ 操作直观:创建项目即可开始编辑 - ✅ 前端简化:单一入口,无需切换 --- ## 二、核心概念映射 ### 2.1 节点类型变化 | 原设计 | 新设计 | 说明 | |--------|--------|------| | PROJECT | PROJECT | 保留,但语义变化 | | TEMPLATE | ~~删除~~ | 功能合并到PROJECT | | REPORT | ~~删除~~ | 功能合并到PROJECT | | ELEMENT | ELEMENT | 保留,直接属于PROJECT | | VALUE | VALUE | 保留,直接属于PROJECT | | ATTACHMENT | ATTACHMENT | 保留 | | ENTITY | ENTITY | 保留 | | RULE | RULE | 保留 | ### 2.2 关系类型变化 | 原设计 | 新设计 | 说明 | |--------|--------|------| | PROJECT --CONTAINS--> REPORT | ~~删除~~ | 不再需要 | | REPORT --INSTANCE_OF--> TEMPLATE | ~~删除~~ | 不再需要 | | TEMPLATE --HAS_ELEMENT--> ELEMENT | PROJECT --HAS_ELEMENT--> ELEMENT | 直接关联 | | REPORT --HAS_VALUE--> VALUE | PROJECT --HAS_VALUE--> VALUE | 直接关联 | | REPORT --HAS_ATTACHMENT--> ATTACHMENT | PROJECT --HAS_ATTACHMENT--> ATTACHMENT | 直接关联 | | REPORT --HAS_RULE--> RULE | PROJECT --HAS_RULE--> RULE | 直接关联 | --- ## 三、数据库设计调整 ### 3.1 节点类型定义 ```sql -- 只保留必要的节点类型 INSERT INTO node_types (type_code, type_name, description) VALUES ('PROJECT', '项目', '智报项目'), ('ELEMENT', '要素', '报告要素定义'), ('VALUE', '要素值', '要素的具体值'), ('ATTACHMENT', '附件', '项目附件'), ('ENTITY', '实体', 'NER识别的实体'), ('RULE', '规则', '数据提取规则'); ``` ### 3.2 关系类型定义 ```sql -- 简化后的关系类型 INSERT INTO edge_types (type_code, type_name, from_node_type, to_node_type) VALUES ('HAS_ELEMENT', '包含要素', 'PROJECT', 'ELEMENT'), ('HAS_VALUE', '包含要素值', 'PROJECT', 'VALUE'), ('FOR_ELEMENT', '对应要素', 'VALUE', 'ELEMENT'), ('HAS_ATTACHMENT', '包含附件', 'PROJECT', 'ATTACHMENT'), ('HAS_ENTITY', '包含实体', 'ATTACHMENT', 'ENTITY'), ('HAS_RULE', '包含规则', 'PROJECT', 'RULE'), ('FOR_ELEMENT', '针对要素', 'RULE', 'ELEMENT'), ('INPUT_FROM', '输入来源', 'RULE', 'ENTITY'); ``` ### 3.3 PROJECT节点属性 ```sql -- 项目节点的属性(合并了原模板和报告的属性) property_definitions: - title: 项目标题 - description: 项目描述 - status: 状态 (draft/in_progress/completed/archived) - content_html: 报告内容HTML - content_markdown: 报告内容Markdown - template_type: 模板类型 (用于区分不同类型的项目) - created_by: 创建人 - updated_by: 更新人 - created_at: 创建时间 - updated_at: 更新时间 ``` --- ## 四、业务流程调整 ### 4.1 创建项目流程 **原流程**: ``` 1. 创建项目 2. 选择模板 3. 基于模板创建报告 4. 初始化要素值 5. 开始编辑 ``` **新流程**: ``` 1. 创建项目(可选择预设模板类型) 2. 自动初始化要素定义和空值 3. 直接开始编辑 ``` ### 4.2 使用模板流程 **原流程**: ``` 1. 上传样本文档到模板 2. 解析生成要素定义 3. 保存为模板 4. 基于模板创建报告 ``` **新流程**: ``` 1. 创建项目时选择"从样本创建" 2. 上传样本文档 3. 自动解析生成要素定义 4. 直接开始编辑 ``` 或者: ``` 1. 创建空白项目 2. 上传样本文档作为附件 3. 点击"从附件生成要素" 4. 自动解析生成要素定义 ``` ### 4.3 复制项目流程 **原流程**: ``` 1. 复制报告 2. 选择目标项目 3. 创建新报告(保留要素定义和规则) ``` **新流程**: ``` 1. 复制项目 2. 创建新项目(保留要素定义和规则) 3. 清空要素值 ``` --- ## 五、前端页面调整 ### 5.1 页面结构 **原设计**: ``` - 项目列表页 - 报告列表页 - 报告编辑器 - 模板列表页 - 模板详情页 ``` **新设计**: ``` - 项目列表页 - 项目编辑器(直接编辑) ``` ### 5.2 项目列表页 **功能**: - 项目列表(卡片/列表视图) - 创建项目(空白/从样本/从模板库) - 搜索/筛选(按状态、类型、时间) - 快速操作(编辑、复制、归档、删除、导出) **卡片信息**: - 项目标题 - 项目类型(电力复审、安全评估等) - 状态(草稿/进行中/已完成/已归档) - 进度(已填充要素数/总要素数) - 更新时间 - 缩略图(可选) ### 5.3 项目编辑器 **布局**: ``` ┌─────────────────────────────────────────────────────────┐ │ 顶部工具栏: [项目标题] [状态] [保存] [导出] [更多] │ ├──────────┬──────────────────────────┬────────────────────┤ │ │ │ │ │ 左侧 │ 中间编辑区 │ 右侧AI助手 │ │ 资源 │ │ │ │ 管理 │ - 富文本编辑器 │ - 要素管理 │ │ │ - 实体高亮 │ - AI对话 │ │ - 附件 │ - 要素标记 │ - 智能建议 │ │ - 实体 │ │ │ │ - 规则 │ │ │ │ │ │ │ └──────────┴──────────────────────────┴────────────────────┘ ``` --- ## 六、后端接口调整 ### 6.1 项目管理接口 ``` GET /api/v1/projects # 获取项目列表 GET /api/v1/projects/{id} # 获取项目详情 POST /api/v1/projects # 创建项目 PUT /api/v1/projects/{id} # 更新项目 DELETE /api/v1/projects/{id} # 删除项目 POST /api/v1/projects/{id}/copy # 复制项目 POST /api/v1/projects/{id}/archive # 归档项目 POST /api/v1/projects/{id}/export # 导出项目 ``` ### 6.2 要素管理接口 ``` GET /api/v1/projects/{id}/elements # 获取项目要素列表 POST /api/v1/projects/{id}/elements # 添加要素定义 PUT /api/v1/projects/{id}/elements/{key} # 更新要素定义 DELETE /api/v1/projects/{id}/elements/{key} # 删除要素定义 POST /api/v1/projects/{id}/elements/parse # 从样本解析要素 ``` ### 6.3 要素值接口 ``` GET /api/v1/projects/{id}/values # 获取所有要素值 GET /api/v1/projects/{id}/values/{key} # 获取单个要素值 PUT /api/v1/projects/{id}/values/{key} # 更新要素值 POST /api/v1/projects/{id}/values/batch # 批量更新要素值 ``` ### 6.4 附件接口 ``` POST /api/v1/projects/{id}/attachments/upload # 上传附件 GET /api/v1/projects/{id}/attachments # 获取附件列表 DELETE /api/v1/attachments/{id} # 删除附件 POST /api/v1/attachments/{id}/parse # 解析附件 ``` ### 6.5 实体接口 ``` GET /api/v1/projects/{id}/entities # 获取项目所有实体 GET /api/v1/attachments/{id}/entities # 获取附件实体 PUT /api/v1/entities/{id} # 更新实体 POST /api/v1/entities/merge # 合并实体 ``` ### 6.6 规则接口 ``` GET /api/v1/projects/{id}/rules # 获取项目规则 POST /api/v1/projects/{id}/rules # 创建规则 PUT /api/v1/rules/{id} # 更新规则 DELETE /api/v1/rules/{id} # 删除规则 POST /api/v1/rules/{id}/execute # 执行单个规则 POST /api/v1/projects/{id}/rules/execute-all # 批量执行规则 ``` --- ## 七、模板库功能(可选) 虽然前端不区分模板,但可以提供"模板库"作为快速创建的辅助功能: ### 7.1 系统预设模板 ``` - 电力安全生产标准化复审报告 - 安全评估报告 - 项目可行性研究报告 - 技术方案报告 ``` ### 7.2 用户自定义模板 用户可以将项目"保存为模板": ``` 1. 编辑项目,定义好要素结构 2. 点击"保存为模板" 3. 输入模板名称和描述 4. 系统创建一个特殊的PROJECT节点(is_template=true) 5. 其他用户可以"从模板创建项目" ``` 实现方式: ```sql -- PROJECT节点增加属性 is_template: BOOLEAN -- 是否为模板 template_name: TEXT -- 模板名称 ``` --- ## 八、数据迁移策略 如果已有旧数据,迁移方案: ```sql -- 1. 将所有REPORT节点转为PROJECT节点 UPDATE nodes SET node_type = 'PROJECT' WHERE node_type = 'REPORT'; -- 2. 删除原PROJECT节点(如果是空的容器) DELETE FROM nodes WHERE node_type = 'PROJECT' AND id NOT IN ( SELECT DISTINCT from_node_id FROM edges WHERE edge_type = 'CONTAINS' ); -- 3. 更新关系 UPDATE edges SET edge_type = 'HAS_ELEMENT' WHERE edge_type IN ('HAS_ELEMENT', 'INSTANCE_OF'); -- 4. 删除不需要的关系 DELETE FROM edges WHERE edge_type = 'CONTAINS'; ``` --- ## 九、总结 ### 9.1 核心变化 | 维度 | 原设计 | 新设计 | |------|--------|--------| | 概念层级 | 3层(项目/模板/报告) | 1层(项目) | | 节点类型 | 8种 | 6种 | | 关系类型 | 10种 | 8种 | | 前端页面 | 4个主页面 | 2个主页面 | | 操作步骤 | 创建项目→选模板→创建报告 | 创建项目→直接编辑 | ### 9.2 优势 ✅ **用户体验**: 概念简单,操作直观 ✅ **开发效率**: 前后端代码量减少30% ✅ **维护成本**: 状态管理简化,Bug更少 ✅ **灵活性**: 保留图数据库优势,扩展性不减 ### 9.3 注意事项 ⚠️ **模板功能**: 可通过"保存为模板"实现,不影响核心流程 ⚠️ **历史数据**: 需要数据迁移脚本 ⚠️ **文档更新**: 需要同步更新所有设计文档