Commit Graph

11 Commits

Author SHA1 Message Date
TanWenyan 89b1d2e5f5 feat(evaluation): 模块1.3 - 增强评查点分组删除接口安全性
## 主要改进

### 1. 删除策略优化(从级联删除改为阻止删除)
-  **安全优先**:采用阻止删除策略而非级联删除
-  删除前检查子分组,如有则拒绝删除
-  删除前检查关联评查点,如有则拒绝删除
-  只有空分组才能被删除

### 2. 详细的删除检查
-  ID有效性验证
-  分组存在性验证
-  子分组检查(仅一级分组)
-  评查点关联检查(所有分组)
-  返回详细的检查结果(childCount, pointCount)

### 3. 友好的错误提示
-  明确提示存在多少个子分组
-  明确提示存在多少个评查点
-  建议用户先清理关联数据
-  区分不同类型的删除失败原因

### 4. 标记废弃函数
-  deleteChildGroup 标记为 @deprecated
-  deleteEvaluationPointsByGroupId 标记为 @deprecated
-  保留代码以备将来批量删除功能使用

## 删除策略对比

### 旧策略(级联删除)- 高风险
 删除一级分组时自动删除所有子分组
 自动删除所有关联的评查点
 用户可能误删大量数据
 无法恢复

### 新策略(阻止删除)- 安全
 拒绝删除有子分组的一级分组
 拒绝删除有评查点的分组
 用户必须手动清理关联数据
 防止误删除
 提供清晰的错误提示

## 返回值增强

```typescript
{
  success: boolean;
  error?: string;
  details?: {
    hasChildren: boolean;  // 是否有子分组
    hasPoints: boolean;    // 是否有评查点
    childCount?: number;   // 子分组数量
    pointCount?: number;   // 评查点数量
  }
}
```

## 相关文件
- app/api/evaluation_points/rule-groups.ts

## 验收清单
- [x] TypeScript 类型检查通过
- [x] 删除前完整的关联检查
- [x] 阻止删除有依赖的分组
- [x] 详细的错误提示
- [x] 返回详细的检查结果

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 12:13:57 +08:00
TanWenyan e148fca429 feat(evaluation): 模块1.2 - 增强评查点分组创建/更新接口验证
## 主要改进

### 1. 增强 createRuleGroup 函数
-  名称长度验证(1-100字符)
-  编码格式验证(只允许字母、数字、连字符、下划线)
-  编码长度验证(1-50字符)
-  编码唯一性验证(查询数据库确保不重复)
-  父级ID存在性验证(二级分组必须有有效的父级)
-  三级分组防护(不允许在二级分组下创建子分组)
-  数据库约束错误友好提示

### 2. 增强 updateRuleGroup 函数
-  ID有效性验证(检查分组是否存在)
-  名称长度验证(1-100字符)
-  编码格式验证(只允许字母、数字、连字符、下划线)
-  编码长度验证(1-50字符)
-  编码唯一性验证(排除自身)
-  **禁止修改pid**(防止分组层级混乱)
-  数据库约束错误友好提示
-  提供清晰的错误消息

### 3. 类型安全性改进
-  修复所有 TypeScript 类型错误
-  添加类型守卫防止 undefined 访问
-  确保所有返回值类型正确

## 验证规则

### 分组名称
- 必填,不能为空
- 长度:1-100字符
- 自动去除首尾空格

### 分组编码
- 必填,不能为空
- 长度:1-50字符
- 格式:只允许字母、数字、连字符(-)、下划线(_)
- 必须全局唯一
- 自动去除首尾空格

### 父级ID
- 一级分组:pid = null 或 '0'
- 二级分组:pid = 有效的父级分组ID
- 不允许三级分组
- **更新时不允许修改pid**

## 相关文件
- app/api/evaluation_points/rule-groups.ts

## 验收清单
- [x] TypeScript 类型检查通过
- [x] 完整的字段验证
- [x] 编码唯一性验证
- [x] 父级ID验证
- [x] 禁止修改pid
- [x] 友好的错误提示

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 12:11:12 +08:00
TanWenyan d3b9403d64 feat(evaluation): 模块1.1 - 增强评查点分组查询接口
## 主要改进

### 1. 增强 getRuleGroups 函数
-  添加完整的分页参数支持 (page, pageSize)
-  添加筛选参数 (name, code, is_enabled, pid)
-  添加排序参数 (orderBy, order)
-  返回总数 (totalCount)
-  支持一级分组和二级分组查询

### 2. 优化 getChildGroups 函数
-  内部使用改进后的 getRuleGroups 函数
-  自动添加评查点数量统计
-  改进类型安全性

### 3. 优化 getRuleGroup 函数
-  确保评查点数量统计准确
-  改进错误处理
-  优化类型守卫逻辑

### 4. 类型定义改进
-  新增 RuleGroupQueryParams 接口
-  ApiRuleGroup.pid 类型支持 null
-  修复所有 TypeScript 类型错误

### 5. 创建对接计划文档
-  详细的 API 对接实施计划
-  分模块逐步实施策略
-  验收标准和风险评估

## 相关文件
- app/api/evaluation_points/rule-groups.ts
- docs/evaluation/API对接实施计划.md

## 验收清单
- [x] TypeScript 类型检查通过
- [x] 支持分页、筛选、排序
- [x] 返回评查点数量统计
- [x] 向后兼容现有代码

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 12:06:48 +08:00
LiangShiyong 6dc9b4e468 feat: 1. 完善文档列表的显示效果,数据对接后端接口返回。
2. 对评查点分组和文档类型的编辑删除新增操作进行限制。
2025-11-20 15:26:11 +08:00
LiangShiyong 34cba4a34f fix: 修复评查点分组的结果保存异常 2025-11-03 09:47:46 +08:00
LiangShiyong 064f05ffa5 添加根据合同/卷宗的入口进行分类评查点列表,同时区分卷宗添加的分组属于卷宗,合同添加的分组属于合同 2025-10-29 21:01:01 +08:00
LiangShiyong 59706b70d0 给所有请求都加上jwt,隐藏生成jwt的secret(放到.env中),隐藏app-secret(放在pm2运行配置文件中,后续直接读取环境配置即可) 2025-10-17 15:28:22 +08:00
LiangShiyong b02978508d 删除所有console.log输出,优化评查结果的表格的显示,添加新的页码获取逻辑 2025-06-02 18:55:00 +08:00
LiangShiyong 5c2c367856 新增提示Toast组件 2025-04-21 09:22:13 +08:00
LiangShiyong 5cf05eca40 完成评查点分组的增删改 2025-04-07 22:40:51 +08:00
LiangShiyong 17f330d07d 创建评查点分组的API文件 2025-04-07 00:46:31 +08:00