Commit Graph

242 Commits

Author SHA1 Message Date
LiangShiyong eca98fc540 Merge branch 'PingChuan' into shiy-login
# Conflicts:
#	app/config/api-config.ts
2025-12-03 12:10:21 +08:00
LiangShiyong d88cfc818b feat: 1. 实现一键替换。
2. 优化追加附件和模板上传的样式。
2025-12-03 12:07:56 +08:00
PingChuan a13f3b3635 feat: 完善Dify知识库管理召回测试模块,优化知识库上传文件时的分段配置设置 2025-12-03 12:03:09 +08:00
PingChuan 0f49426a2e feat:完成上传文档时调整嵌入参数模块初版 2025-12-02 22:29:32 +08:00
LiangShiyong 2897423404 feat: 大模型对话适配移动端的样式 2025-12-02 11:41:21 +08:00
LiangShiyong 88466b7a8b feat: 1. 完善交叉评查上传创建任务,改成动态加载文档类型。
2. 重新对齐交叉评查的接口。
2025-12-02 10:10:03 +08:00
LiangShiyong c9e0d5abba Merge branch 'PingChuan' into shiy-login 2025-12-01 12:40:22 +08:00
LiangShiyong c43485ec27 fix: 添加交叉评查的案卷类型的查询,动态选择文档类型 2025-12-01 12:36:38 +08:00
PingChuan 0c1b81cfb2 temp:临时备份,完成一半知识库管理模块 2025-12-01 12:33:53 +08:00
PingChuan 754ec2c7b5 feat:完成dify知识库文档基础CRUD模块 2025-11-30 21:28:49 +08:00
PingChuan d85010bada feat:完善知识库管理路由权限配置 2025-11-30 20:14:51 +08:00
LiangShiyong af258fe669 Merge branch 'PingChuan' into shiy-login 2025-11-30 19:33:46 +08:00
LiangShiyong 4fcc92a381 feat: 1. 接入CollaboraViewer选中的高亮效果,清除高亮功能,页面销毁自动清除高亮。
2. 合同模板对比接入monaco editor的效果。
3. 添加交叉评查的案卷类型的数据查询。

fix: 1. 修复文档列表的打开模态框蒙板层显示效果。
2025-11-30 19:33:05 +08:00
PingChuan c94cc00138 feat:前端新增初版知识库管理页面 2025-11-30 19:27:01 +08:00
PingChuan 9614899171 feat:重构dify前端组件以及转发逻辑 2025-11-30 16:24:35 +08:00
LiangShiyong fb67f138dc fix: 1. 全局axios添加formData文件上传的检测,删除Content-Type让axios自动检测。
2. 完善入口模块管理的接口的对接。
3. 完善角色权限管理的接口对接和测试。
4. 完善主页的入口模块的图标的显示和图片的显示。
2025-11-29 19:37:29 +08:00
LiangShiyong 875ce19bb8 Merge branch 'PingChuan' into shiy-login
# Conflicts:
#	app/routes/files.upload.tsx
2025-11-29 10:59:50 +08:00
LiangShiyong e3d09aafb3 fix: 修复文档上传的页面bug 2025-11-29 10:57:05 +08:00
PingChuan 2865970f01 fix: 修复从react 引入 useRevalidator的问题,改为从remix引入 2025-11-29 10:54:56 +08:00
LiangShiyong 30e100ef3e feat: 1. 本地化思源黑体的字体包并优先使用。
2. 添加权限映射表和全局查看权限的hook,便于路由控制不同权限按钮显示/隐藏。
3. 删除评查点分组的部分旧api方法。
4. 对接评查点分组接口,文档类型接口, 提示词管理接口, 入口模块管理的接口。
5. 优化角色权限管理的接口,完善不用地区的访问权限认证。
6. 优化主页交叉评查和设置的入口样式和布局。
7. 优化评查点分组,评查规则的功能权限校验。
2025-11-29 10:37:35 +08:00
PingChuan f2714360d3 feat:完成清除高亮脚本封装 2025-11-27 16:13:51 +08:00
LiangShiyong d5827a2146 fix: 1. 接入入口模块的管理接口,优化样式。
2. 将查看文档评查结果详情对接接口,采用接口的方式进行查询。
2025-11-26 23:37:14 +08:00
LiangShiyong 9a1a78d578 fix: 删除冗余文件 2025-11-26 19:11:45 +08:00
LiangShiyong e9e2934c4e Merge branch 'Wren' into shiy-login 2025-11-26 18:05:24 +08:00
LiangShiyong 1b0108e518 fix: 1. 系统设置入口进来只会跳转到拥有权限访问的页面。
2. 优化登录样式
2025-11-26 18:05:15 +08:00
TanWenyan c491ad228c chore: 删除RBAC Mock API路由和数据
删除以下Mock文件(已迁移到真实后端API):
- api.v3.rbac.roles._index.tsx
- api.v3.rbac.roles.$roleId.tsx
- api.v3.rbac.roles.$roleId.users.tsx
- api.v3.rbac.users.$userId.roles.tsx
- api.v3.rbac.users.$userId.roles.$roleId.tsx
- rbac-mock-data.server.ts

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 17:08:11 +08:00
TanWenyan 1e9e0044ba feat: 角色权限管理v3.0及错误处理优化
1. 角色权限管理升级:
   - 添加路由下展开式API权限管理功能
   - 新增 getRoleRoutesWithPermissions 和 saveRoleApiPermissions API
   - 支持按路由展开/收起查看和勾选权限
   - 过滤"所有权限"选项,只显示具体权限

2. 错误处理优化:
   - 403 无权限错误显示为"无权限访问该资源"
   - 修复评查点分组批量删除显示"成功删除 undefined 个分组"的问题

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 17:04:18 +08:00
LiangShiyong efbf78246f Merge branch 'Wren' into shiy-login 2025-11-26 10:49:26 +08:00
LiangShiyong fe75b4fabd feat: 1. 将交叉评查转移在入口页。
2. 交叉评查渲染的pdf预览组件复用评查点详情的,同时在评查结果中的数据也添加坐标信息。
2025-11-26 10:49:15 +08:00
TanWenyan e7646d17a6 fix(evaluation-groups): 修复一级分组显示错误和 React key 警告
## 修复内容

### 1. 修复一级分组过滤问题
- **问题**: getEvaluationPointGroups 函数忽略了 pid 参数,导致返回所有分组(包括二级分组)
- **修复**: 添加 pid 参数处理逻辑,支持传递 "null" 字符串来查询一级分组
- **文件**: app/api/evaluation_points/rule-groups.ts:1186-1198

### 2. 修复 React key 重复警告
- **问题**: 父分组和子分组可能有相同的 ID,导致 "Encountered two children with the same key" 警告
- **修复**: 将 rowKey 从简单的 "id" 改为根据 isParent 生成唯一 key
- **文件**: app/routes/rule-groups._index.tsx:817

### 3. 新增后端 API 规范文档
- **文件**: docs/evaluation/evaluation_point_groups_backend_api_spec.md
- **内容**:
  - 完整的 9 个 FastAPI v3 接口规范
  - Python Pydantic 模型定义
  - TypeScript 接口定义
  - pid 参数处理说明(字符串 "null" 转换为 None)
  - 10 个完整测试用例
  - 数据库表结构建议

## 技术细节

**pid 参数处理**:
```typescript
// 前端发送
GET /api/v3/evaluation-point-groups?pid=null&page=1

// 后端需要识别字符串 "null" 并转换为 None/NULL
if (pid == "null") {
  query = query.filter(EvaluationPointGroup.pid.is_(None))
}
```

**唯一 key 生成**:
```typescript
rowKey={(record) => record.isParent ? `parent-${record.id}` : `child-${record.id}`}
```

🔗 相关文档: docs/evaluation/evaluation_point_groups_backend_api_spec.md
2025-11-26 10:05:39 +08:00
TanWenyan d1f764028c Merge branch 'shiy-login' into Wren 2025-11-25 20:59:59 +08:00
LiangShiyong 83f8d80e12 合并代码 2025-11-25 20:50:34 +08:00
TanWenyan 02658b77b2 fix(document-types): 修复构建错误 - 替换为 FastAPI v3 接口
问题:
- document-types.new.tsx 仍在使用已重命名的 getAllRuleGroups 函数
- 导致构建失败:"getAllRuleGroups" is not exported

修复:
- getAllRuleGroups → getAllEvaluationPointGroups
- 传递正确的参数:includeDisabled=false, withRuleCount=true

影响范围:
- app/routes/document-types.new.tsx (文档类型创建/编辑页面)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 20:24:24 +08:00
TanWenyan dbc9512c8b refactor(rule-groups): 替换创建/编辑页面为 FastAPI v3 接口
变更内容:
1. 补充重命名 getRuleGroup → getRuleGroup_legacy (rule-groups.ts)
2. 更新导入语句,使用新的 FastAPI v3 函数 (rule-groups.new.tsx)
3. 替换所有函数调用:
   - getRuleGroups → getEvaluationPointGroups (2处)
   - getRuleGroup → getEvaluationPointGroup
   - createRuleGroup → createEvaluationPointGroup
   - updateRuleGroup → updateEvaluationPointGroup

影响范围:
- app/api/evaluation_points/rule-groups.ts (补充遗漏的重命名)
- app/routes/rule-groups.new.tsx (创建/编辑页面)

功能:
- 分组创建、编辑、编码唯一性验证

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 20:20:52 +08:00
TanWenyan ef8b843dc5 refactor(rule-groups): 替换列表页面为 FastAPI v3 接口
变更内容:
- 更新导入语句,使用新的 FastAPI v3 函数
- getRuleGroups → getEvaluationPointGroups
- deleteRuleGroup → deleteEvaluationPointGroup
- batchUpdateRuleGroupStatus → batchUpdateEvaluationPointGroupStatus
- batchDeleteRuleGroups → batchDeleteEvaluationPointGroups

影响范围:
- app/routes/rule-groups._index.tsx(评查点分组列表页面)

功能:
- 列表查询、删除、批量启用/禁用、批量删除

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 20:17:39 +08:00
LiangShiyong ff0a99cbb4 Merge branch 'Wren' into shiy-login 2025-11-25 18:24:28 +08:00
LiangShiyong f76b3a8a92 feat: 接入pdf文件的显示高亮效果 2025-11-25 18:23:35 +08:00
TanWenyan f938ca6c00 feat(rbac): 添加 RBAC 角色管理 API 代理和模拟数据
添加角色基于访问控制(RBAC)相关接口:

1. API 代理路由
   - api.v3.rbac.roles._index.tsx: 角色列表和创建
   - api.v3.rbac.roles.$roleId.tsx: 角色详情、更新和删除
   - api.v3.rbac.roles.$roleId.users.tsx: 角色用户关联管理
   - api.v3.rbac.users.$userId.roles.tsx: 用户角色列表
   - api.v3.rbac.users.$userId.roles.$roleId.tsx: 用户角色分配

2. 模拟数据服务
   - rbac-mock-data.server.ts: 提供模拟角色和用户角色数据
   - 支持 CRUD 操作
   - 包含预置的系统管理员、开发者等角色

接口功能:
-  获取角色列表(支持分页和搜索)
-  获取角色详情
-  创建、更新、删除角色
-  获取角色的用户列表
-  为用户分配/移除角色

注:当前使用模拟数据,待后端接口完善后切换到真实 API

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 18:19:05 +08:00
TanWenyan 7c47b11ec7 feat(ui): 添加删除操作延迟确认功能
增强用户体验,防止误删除操作:

1. MessageModal 组件增强
   - 添加 confirmDelay 属性(秒)
   - 确认按钮倒计时功能
   - 倒计时期间禁用确认按钮
   - 按钮显示剩余秒数 (例如: "删除 (4s)")

2. 删除操作应用延迟确认(4秒)
   -  文档类型删除 (document-types._index.tsx)
   -  文档删除和批量删除 (documents.list.tsx)
   -  入口模块删除 (entry-modules._index.tsx)
   -  提示词删除 (prompts._index.tsx)
   -  规则组删除 (rule-groups._index.tsx)

技术实现:
- 使用 useEffect + setInterval 实现倒计时
- 倒计时结束自动清理定时器
- 按钮禁用状态控制(disabled + opacity + cursor)

用户体验提升:
- 防止误操作:4秒思考时间
- 视觉反馈:倒计时提示
- 操作可逆:倒计时期间可取消

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 18:17:52 +08:00
TanWenyan be529d2f2a Revert "fix(evaluation): 修复选择全部评查点类型时的筛选查询"
This reverts commit 948e652201.
2025-11-25 18:07:07 +08:00
TanWenyan 948e652201 fix(evaluation): 修复选择全部评查点类型时的筛选查询
问题:
- 前端选择"全部"时,将多个类型 ID 拼接成 "1,2,3" 传给后端
- 后端 evaluation_point_groups_pid 参数类型是 int,不支持逗号分隔的字符串
- 导致查询失败或返回错误结果

解决方案:
- 选择"全部"时,不传递 ruleType 参数(即 evaluation_point_groups_pid)
- 让后端根据用户权限返回所有有权限查看的评查点类型数据
- 只有选择具体类型时,才传递单个类型 ID

技术细节:
- 移除了 loadedRuleTypes.map(type => type.id).join(',') 逻辑
- 将 finalRuleType 设置为 undefined 而不是拼接的 ID 字符串
- getRulesList 函数已有判断,只在 ruleType 存在时添加查询参数

测试场景:
 选择"全部" → 不传 evaluation_point_groups_pid → 返回所有类型
 选择具体类型 → 传 evaluation_point_groups_pid=1 → 返回该类型

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 18:04:34 +08:00
LiangShiyong 87a6cae1d5 Merge branch 'PingChuan' into shiy-login
# Conflicts:
#	app/components/reviews/ReviewTabs.tsx
2025-11-25 15:05:48 +08:00
LiangShiyong 6064941265 修改合同比对demo 2025-11-25 15:04:05 +08:00
TanWenyan f5a5887651 feat(evaluation): 完成评查点完整CRUD接口对接
## 主要变更

### API层 (app/api/evaluation_points/rules.ts)
- 新增 `EvaluationPointData` 接口,支持完整评查点数据结构
- 新增 `createEvaluationPoint` 函数,用于创建评查点
- 新增 `updateEvaluationPoint` 函数,用于更新评查点
- 新增 `getEvaluationPoint` 函数,用于获取完整评查点数据
- 重命名原 `getEvaluationPoint` 为 `getFormattedEvaluationPoint`,避免命名冲突
- 修复 `postgrestPut` 调用的类型参数问题

### 前端页面 (app/routes/rules.new.tsx)
- 更新 `fetchEvaluationPoint` 函数,使用新的 `getEvaluationPoint` API
- 更新 `handleSave` 函数,使用 `createEvaluationPoint` 和 `updateEvaluationPoint` API
- 添加 `postgrestGet` 导入,支持评查点组数据获取
- 优化错误处理逻辑,统一使用新API响应格式
- 修复类型转换问题,正确处理 `EvaluationPointData` 和 `EvaluationPoint` 类型

## 技术改进
- 替代直接调用 `postgrestPost`/`postgrestPut`,使用封装的API函数
- 统一错误处理和响应格式
- 保留 `extractApiData` 辅助函数用于评查点组数据处理
- 所有变更通过 TypeScript 类型检查

## 相关文档
参考 docs/evaluation/evaluation_points.md 中的 FastAPI 接口定义
2025-11-25 14:55:42 +08:00
TanWenyan 37134ff650 feat(evaluation): 完成模块2.6 - 评查点前端组件增强
- rules.list.tsx 新增批量操作功能:
  * 添加批量选择复选框
  * 实现批量启用/禁用评查点
  * 实现批量删除评查点
  * 添加操作结果提示和部分失败处理

- BasicInfo.tsx 新增异步编码验证:
  * 实现500ms防抖的实时编码唯一性验证
  * 集成 getRulesList API 进行编码查重
  * 编辑模式下排除当前评查点
  * 添加验证中状态和错误提示UI

- 通过TypeScript类型检查,无新增类型错误
- 批量操作支持部分成功场景,详细报告结果
- 改善用户体验,提供实时反馈
2025-11-25 13:23:36 +08:00
TanWenyan ac60d64775 feat(evaluation): 模块1.5(2/2) - 增强评查点分组列表页功能
功能变更:
1. 服务端筛选和分页
   - Loader函数使用增强的 getRuleGroups API
   - 支持名称、编码、状态筛选
   - 支持分页参数(page, pageSize)
   - 仅加载一级分组(pid: null)
   - 返回总数用于分页展示

2. 批量操作功能
   - 添加批量选择状态管理
   - 复选框列(全选/单选)
   - 批量启用按钮
   - 批量禁用按钮
   - 批量删除按钮
   - 显示选中数量提示
   - 操作后自动刷新列表

3. 用户体验优化
   - 仅对有编辑权限的用户显示批量操作
   - 批量按钮仅在有选中项时显示
   - 操作成功/失败的 Toast 提示
   - 删除前二次确认

技术实现:
- useState 管理选中ID列表
- 条件渲染批量操作按钮
- 类型安全的复选框列定义
- 防止事件冒泡(onClick stopPropagation)
- URL参数驱动的服务端筛选

安全性:
- 权限检查(hasEditPermission)
- 批量删除前确认
- 操作失败详细提示

验收标准:
 Loader使用服务端筛选和分页
 表格支持复选框多选
 批量操作按钮显示/隐藏正确
 批量启用/禁用功能正常
 批量删除功能正常
 无TypeScript类型错误
 仅有编辑权限的用户可见批量操作

符合实施计划:
- 阶段 1.5(2/2):rule-groups._index.tsx 更新 
- 模块 1.5 完成 

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 12:43:01 +08:00
TanWenyan 374e3626cc feat(evaluation): 模块1.5(1/2) - 优化评查点分组表单验证和父级分组选择
功能变更:
1. 优化父级分组选择
   - 使用增强的 getRuleGroups API 获取父级分组列表
   - 仅显示一级分组(pid: null)
   - 仅显示已启用的分组(is_enabled: true)
   - 提高分组选择的准确性和安全性

2. 新增编码唯一性异步验证
   - 实时验证分组编码唯一性
   - 防抖处理(500ms)避免频繁API调用
   - 编辑模式下自动排除当前分组自身
   - 显示"验证中..."状态提示用户
   - 验证失败时显示清晰的错误提示

3. 改进用户体验
   - 实时反馈编码是否可用
   - 防止提交重复编码的分组
   - 优雅的错误处理和状态管理

技术实现:
- 使用 useState 管理验证状态
- setTimeout 实现防抖机制
- 异步函数处理唯一性检查
- 类型安全的错误处理

验收标准:
 父级分组列表仅显示一级分组
 父级分组列表仅显示已启用的分组
 编码唯一性实时验证(防抖)
 编辑模式下排除自身
 显示验证状态
 无TypeScript类型错误

符合实施计划:
- 阶段 1.5(1/2):rule-groups.new.tsx 更新 

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 12:38:41 +08:00
PingChuan bf738c190f Merge remote-tracking branch 'origin/shiy-login' into PingChuan 2025-11-25 11:03:42 +08:00
LiangShiyong 0ed6f0aaf4 备份 2025-11-25 11:02:40 +08:00
TanWenyan 47107b45df 优化操作提示 2025-11-24 20:52:00 +08:00