简化设计说明.md 11 KB

灵越智报 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 节点类型定义

-- 只保留必要的节点类型
INSERT INTO node_types (type_code, type_name, description) VALUES
('PROJECT', '项目', '智报项目'),
('ELEMENT', '要素', '报告要素定义'),
('VALUE', '要素值', '要素的具体值'),
('ATTACHMENT', '附件', '项目附件'),
('ENTITY', '实体', 'NER识别的实体'),
('RULE', '规则', '数据提取规则');

3.2 关系类型定义

-- 简化后的关系类型
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节点属性

-- 项目节点的属性(合并了原模板和报告的属性)
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. 其他用户可以"从模板创建项目"

实现方式:

-- PROJECT节点增加属性
is_template: BOOLEAN  -- 是否为模板
template_name: TEXT   -- 模板名称

八、数据迁移策略

如果已有旧数据,迁移方案:

-- 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 注意事项

⚠️ 模板功能: 可通过"保存为模板"实现,不影响核心流程
⚠️ 历史数据: 需要数据迁移脚本
⚠️ 文档更新: 需要同步更新所有设计文档