Commit Graph

17 Commits

Author SHA1 Message Date
TanWenyan 32fe0da48a refactor: 移除dify:dataset:manage权限映射
数据库已经删除了统一的dify:dataset:manage权限(id:103),
保留了细分的CRUD权限:
- dify:bind:list (查看)
- dify:bind:create (创建)
- dify:bind:update (更新)
- dify:bind:delete (删除)

修改内容:
1. 从permission-mapper.ts中移除所有权限键映射
2. 现在前端直接显示数据库权限键,不再进行任何转换
3. 权限检查直接使用数据库中的细分权限

优势:
- 更灵活的角色权限配置
- 不同角色可以拥有不同的操作组合
- 符合最小权限原则
2025-12-08 15:47:26 +08:00
TanWenyan d3418ef31b fix: 修复权限映射的反向保存逻辑
问题:权限映射只在显示层面进行,但保存时还需要反向映射回数据库权限键

解决方案:
1. 分离显示权限和原始权限:
   - originalRoutePermissionsMap:存储未映射的原始权限(用于保存)
   - routePermissionsMap:存储映射后的权限(用于显示)
   - originalAllPermissions:存储所有原始权限的列表

2. 加载角色权限时:
   - 从API获取角色已分配的权限ID(原始ID)
   - 直接存储到 selectedPermissionIds
   - 不做任何映射转换

3. 显示权限列表时:
   - 从原始权限构建映射后的权限(合并相同的)
   - 用户看到的就是映射后的权限(如dify:dataset:manage)
   - 但勾选状态基于原始权限ID

4. 保存权限时:
   - 直接使用 selectedPermissionIds(原始ID)
   - 无需反向映射

验证方式:
1. 取消勾选 dify:dataset:manage → 数据库中4个bind权限被DENY → 接口返回403
2. 重新勾选 dify:dataset:manage → 数据库中4个bind权限被GRANT → 接口可访问
2025-12-08 15:39:39 +08:00
TanWenyan 547633bf38 feat: 修复权限键不匹配问题 - 前端权限映射
问题:前端权限列表显示dify:bind:*,但路由实际检查dify:dataset:*和dify:file:*
导致取消勾选后权限控制失效

解决方案:
1. 创建权限映射工具(permission-mapper.ts)
   - dify:bind:list/create/update/delete → dify:dataset:manage
   - 自动将数据库权限键映射为实际生效的权限键

2. 修改角色权限管理页面
   - 加载角色权限时应用权限键映射
   - 渲染权限列表时显示实际生效的权限键
   - 保存权限时使用映射后的权限ID

影响范围:
- 知识库管理权限(/chat-with-llm/dataset-manager)
- 角色权限分配页面(/role-permissions)

验证方式:
取消勾选dify:dataset:manage后,知识库管理接口应返回403
2025-12-08 15:29:31 +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 bfe39e45a9 feat: 1. 添加axios全局路由拦截进行自动添加请求jwt。 2.重新整理路由表。 3. 文档列表新增版本差异对比。 4.菜单路由可访问列表通过对接接口返回,添加全局路由检测。
5. 修改统一认证登录和管理员登录是通过接口形式进行,存储返回的accessToken。    6. 修改交叉评查的部分样式
2025-11-18 11:06:24 +08:00
TanWenyan c93a87a65e 优化思考模式AI回复的UI显示,支持<think>标签解析
新增功能:
1. 创建消息解析工具 message-parser.ts
   - 解析 <think> 标签,提取思考过程
   - 分离思考内容和实际回复

2. 创建思考过程展示组件 thinking-block.tsx
   - 可折叠/展开的思考过程区域
   - 参考 GPT-5 和 Claude 网页版设计
   - 默认折叠,点击展开查看详细思考过程

3. 修改聊天消息组件 chat-message.tsx
   - 集成思考过程解析和展示
   - 思考过程单独显示在顶部
   - 实际回复正常显示在下方

4. 新增样式 thinking-block.css
   - 契合当前淡绿色(#a4e2ad)配色方案
   - 渐变背景和流畅动画效果
   - 灯泡图标标识思考过程
   - 完整的响应式设计

UI效果:
- 思考过程:淡绿色渐变背景,可折叠区域
- 实际回复:正常Markdown渲染
- 交互流畅:展开/折叠动画平滑

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 15:21:27 +08:00
TanWenyan cf6e9c2421 紧急修复:客户端改为调用Remix API routes,不再直接调用Dify API
根本问题:客户端代码直接调用Dify API(12980端口),绕过了服务端代理

修改内容:
1. app/config/api-config.ts
   - 添加独立的 difyBaseUrl 配置(指向外网 nas.7bm.co:8000)
   - 导出 DIFY_BASE_URL 供服务端使用

2. app/config/chat.ts
   - 移除直接Dify API配置(NEXT_PUBLIC_API_URL, APP_ID, API_KEY)
   - 移除 generateUserId 函数
   - API_URL 改为 '/api'(指向Remix API routes)

3. app/services/api.client.ts
   - 所有fetch调用改为相对路径 /api/*
   - 移除所有 Authorization 头(服务端自动处理JWT)
   - 移除所有 user 参数传递(服务端从JWT提取)
   - credentials 改为 'include' 以携带cookie

4. app/services/dify-client.server.ts
   - 使用 DIFY_BASE_URL 替代 API_BASE_URL

5. app/utils/dify-test.client.ts
   - 测试函数改为调用Remix API routes

调用链路:
客户端 → /api/* → Remix API routes → dify-client.server.ts → FastAPI /dify → Dify

解决问题:
-  不再直接调用 nas.7bm.co:12980(Dify端口)
-  统一通过 nas.7bm.co:8000/dify(FastAPI代理)
-  所有请求都经过JWT认证
-  user字段由后端自动管理

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 11:25:37 +08:00
TanWenyan e41c457076 修复session中的user生成逻辑
问题:
- session.server.ts 还在调用已删除的 generateUserId 函数
- 生成的 user 格式为 user_{APP_ID}:{sessionId},与后端期望的 username 不符
- 导致后端无法正确识别用户

修复:
- 移除 difyUtils 导入
- 移除 getSessionInfo 中的 user 字段生成
- 现在完全由后端从 JWT 中提取 username 管理 user 字段

影响:
- getSessionInfo 返回值不再包含 user 字段
- 所有 API 路由已经不再使用 session 中的 user

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 10:48:18 +08:00
LiangShiyong 59706b70d0 给所有请求都加上jwt,隐藏生成jwt的secret(放到.env中),隐藏app-secret(放在pm2运行配置文件中,后续直接读取环境配置即可) 2025-10-17 15:28:22 +08:00
LiangShiyong ccd5cdf71e 修复系统概览数据不准确的查询。修复交叉评查意见列表的数量查询。优化全局消息提示的层级。优化提交意见进行局部更新。 2025-07-25 09:49:36 +08:00
LiangShiyong 47664fc0e8 添加jwt验证,添加交叉评查首页加载对接接口,评查任务文档列表对接接口,意见列表对接接口 2025-07-22 14:37:37 +08:00
LiangShiyong 328f326db3 优化登录逻辑的实现,将认证请求和token验证的处理分成两个逻辑文件。新增交叉评查任务列表的页面(尚未对接真实数据)。 2025-07-16 14:32:20 +08:00
LiangShiyong d876d66dcb 添加交叉评查菜单页面,添加单点登录相关逻辑(待完善) 2025-07-15 20:17:51 +08:00
LiangShiyong fff474f46b 添加登录内容,尚未完善,先创建分支 2025-07-14 12:31:43 +08:00
pingchuan ce851cc448 取消统一转发Dify请求,改为由客户端直接发送 2025-07-01 15:54:28 +08:00
pingchuan af33de09db 基于 shiy-temp分支修改 2025-06-04 11:18:52 +08:00