Files
urbanLifeline/.kiro/specs/urbanlifeline-to-pigx-migration/tasks.md
2026-01-14 15:42:26 +08:00

388 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Implementation Plan: urbanLifeline 业务功能迁移到 pigx-ai
## Overview
将 urbanLifelineServ 和 urbanLifelineWeb 的业务功能迁移到 pigx-ai 平台,完全使用 pigx 原生的用户权限体系,只迁移业务代码和数据。
## Tasks
- [x] 1. 数据库迁移准备
- 分析源项目 PostgreSQL 表结构
- 生成 MySQL DDL 转换脚本
- 为所有业务表添加 tenant_id 字段
- _Requirements: 8.1, 8.2, 8.4_
- [x] 1.1 编写数据库转换脚本
- 已完成 database-migration-script.md 文档
- 包含工单、AI、招标、消息模块的完整 MySQL DDL
- **Validates: Requirements 8.1, 8.2, 8.3, 8.4**
- [x] 2. 权限和菜单规划
- 设计业务功能的权限标识规范
- 规划前端路由路径
- 定义菜单层级结构
- _Requirements: 10.2, 11.3_
- [x] 2.1 创建权限标识映射表
- 已完成 permission-mapping.md 文档
- 包含完整的权限映射和菜单配置 SQL
- _Requirements: 11.1, 11.2_
- [x] 2.2 编写权限注解转换指南
- 已完成 permission-annotation-guide.md 文档
- 包含 @PreAuthorize@pms.hasPermission 转换规则
- _Requirements: 11.1, 11.2_
- [x] 2.3 配置 SecurityUtils 和 RemoteUserService
- 已完成 security-config-guide.md 文档
- 包含完整的使用示例和最佳实践
- _Requirements: 11.4, 11.5_
- [x] 2.4 配置业务功能菜单
- 在 pigx sys_menu 表中执行菜单配置 SQLID从10000开始
- 配置对应的权限标识和路由路径
- _Requirements: 10.2, 11.3_
- [x] 2.5 分配角色权限
- 已在 permission-mapping.md 中提供完整的角色权限分配 SQL
- 管理员角色分配所有业务权限menu_id 10000-15000
- 普通用户角色分配查看权限
- 执行时需在 MySQL 中运行 sys_role_menu 插入语句
- _Requirements: 10.3, 11.3_
- [x] 3. 后端基础架构搭建
- 创建 pigx-workcase、pigx-bidding、pigx-dify 三个独立模块
- 每个模块包含 api 和 biz 子模块
- 配置 Maven 依赖和模块引用
- _Requirements: 1.1, 2.1, 3.1, 5.1_
- [x] 4. 工单模块迁移 (pigx-workcase)
- [x] 4.1 迁移工单实体和 Mapper
- 已创建 TbWorkcase、TbChatRoom、TbChatRoomMessage、TbChatRoomMember、TbWorkcaseProcess、TbVideoMeeting 实体
- 使用 pigx 标准格式:@TenantTable、Model<T>、createBy/updateBy/delFlag
- 已创建对应的 Mapper 接口
- _Requirements: 2.1, 2.4_
- [x] 4.2 迁移工单 Service 层
- 已创建 TbWorkcaseService、TbChatRoomService、TbChatRoomMessageService、TbChatRoomMemberService、TbWorkcaseProcessService、TbVideoMeetingService、TbCustomerServiceService
- TbChatRoomService 包含完整业务逻辑:创建聊天室、关闭聊天室、成员管理、消息管理、客服分配、服务评分
- TbVideoMeetingService 包含完整业务逻辑:创建会议、加入会议、开始/结束会议、权限验证
- TbCustomerServiceService 包含客服管理:获取可用客服、更新状态、工作量管理
- 已创建对应的 ServiceImpl 实现类
- _Requirements: 2.1, 2.2_
- [x] 4.3 迁移工单 Controller 层
- 已创建 TbWorkcaseController、TbChatRoomController、TbVideoMeetingController、TbCustomerServiceController
- TbChatRoomController 包含完整的聊天室功能:成员管理、消息管理、客服分配、服务评分
- TbVideoMeetingController 包含完整的会议功能:创建、加入、开始、结束会议
- TbCustomerServiceController 包含客服人员管理功能
- 使用 @HasPermission 权限注解
- 响应格式使用 R<T>
- _Requirements: 2.1, 11.1, 11.4_
- [x] 4.4 迁移视频会议功能
- 已创建 TbVideoMeetingService 和 TbVideoMeetingServiceImpl
- 包含创建会议、加入会议、开始会议、结束会议、获取活跃会议等功能
- 会议访问权限验证(基于聊天室成员)
-Jitsi JWT Token 生成需要后续配置 Jitsi 服务器参数
- _Requirements: 2.6_
- [x] 4.5 迁移聊天室 WebSocket 功能
- 已创建 ChatRoomWebSocketMessage、ChatRoomNotificationMessage 消息类
- 已创建 ChatRoomMessageHandler、ChatRoomNotificationHandler 消息处理器
- 已创建 ChatRoomWebSocketService 用于主动推送消息
- 使用 pigx-common-websocket 进行实时推送
- 配置 WebSocket 路径为 /ws/chat
- _Requirements: 2.1, 5.2_
- [x] 4.6 迁移 Jitsi JWT Token 生成功能
- 已创建 JitsiProperties 配置类
- 已创建 JitsiTokenService 接口和 JitsiTokenServiceImpl 实现
- 已创建 JitsiTokenController 提供 Token 生成、验证、URL 构建 API
- 支持一键生成会议信息(房间名+Token+URL
- 使用 jjwt 0.12.x 版本 API
- _Requirements: 2.6_
- [x] 4.7 迁移词云管理功能
- 已创建 TbWordCloud 实体类
- 已创建 TbWordCloudMapper 接口和 XML 映射文件
- 已创建 TbWordCloudService 接口和 TbWordCloudServiceImpl 实现
- 已创建 TbWordCloudController 提供词云 CRUD 和词频增加 API
- 支持词频自动累加(同一天、同一分类的相同词条)
- _Requirements: 2.1_
- [x] 5. AI 模块迁移pigx-dify 模块)
- [x] 5.1 创建 pigx-dify 模块结构
- 已创建 pigx-dify-api 和 pigx-dify-biz 子模块
- 已配置 Maven 依赖和模块引用
- 已创建启动类和配置文件
- _Requirements: 4.1_
- [x] 5.2 迁移 AI 实体和数据层
- 已创建 TbAgent、TbChat、TbChatMessage、TbKnowledge、TbKnowledgeFile、TbKnowledgeFileLog、PromptCard 实体
- 使用 pigx 标准格式
- 已创建对应的 Mapper 接口
- _Requirements: 4.4, 4.6_
- [x] 5.3 迁移 Dify API 客户端
- 已创建 DifyApiClient 完整功能(知识库管理、文档管理、对话、工作流、模型管理)
- 已创建 DifyProperties 配置类
- 已创建 DifyException 异常类
- 已创建 StreamCallback 回调接口
- 已创建所有 DTO 类ChatRequest/Response、Dataset*、Document*、Retrieval*、Workflow*、Conversation*、MessageHistory*、EmbeddingModel*、RerankModel*、DifyFileInfo
- 支持流式响应和阻塞调用两种模式
- 已配置 OkHttp 依赖
- 已更新 application.yml 添加 Dify 配置
- _Requirements: 4.2, 4.3_
- [x] 5.4 迁移 AI 业务逻辑
- 已创建 TbAgentService、TbChatService、TbKnowledgeService 等服务接口和实现类
- _Requirements: 4.1, 4.2_
- [x] 5.5 迁移 AI Controller 层
- 已创建 TbAgentController、TbChatController、TbKnowledgeController
- 使用 @HasPermission 权限注解
- _Requirements: 4.1, 11.1_
- [x] 5.6 配置 Dify 集成
- 已配置 DifyProperties 包含完整配置API地址、密钥、超时、上传、知识库
- 已在 application.yml 中添加 Dify 配置项
- 配置支持环境变量覆盖
- _Requirements: 4.3, 4.7_
- [x] 6. 招标模块迁移 (pigx-bidding)
- [x] 6.1 迁移招标实体和数据层
- 已创建 TbBiddingProject、TbBiddingDocument、TbBiddingRequirement、TbBidResponse、TbProcessNode 实体
- 已创建对应的 Mapper 接口
- _Requirements: 1.1, 1.3_
- [x] 6.2 迁移招标业务逻辑
- 已创建 TbBiddingProjectService、TbBiddingDocumentService 等服务接口和实现类
- _Requirements: 1.1, 1.2_
- [x] 6.3 迁移招标 API 接口
- 已创建 TbBiddingProjectController、TbBiddingDocumentController
- 使用 @HasPermission 权限注解
- _Requirements: 1.1, 1.5_
- [x] 7. 平台管理模块迁移 (platform)
- [x] 7.1 迁移平台管理功能
- 源项目 platform 模块只有启动类,无实际业务代码
- 平台配置功能可使用 pigx 的 sys_config 表和配置管理功能
- _Requirements: 3.1, 3.2_
- [x] 7.2 迁移平台数据表
- 无需迁移,使用 pigx 现有的配置管理表
- _Requirements: 3.3_
- [x] 8. 消息模块迁移 (message)
- [x] 8.1 迁移消息实体和数据层
- 源项目消息模块主要是邮件/短信发送功能,大部分方法为 TODO 状态
- pigx 已有完善的消息通知功能pigx-common-sms、pigx-common-mail
- 直接使用 pigx 现有的消息功能即可
- _Requirements: 5.1, 5.4_
- [x] 8.2 迁移消息通知功能
- 使用 pigx-common-websocket 进行实时推送(已在 pigx-workcase 中实现)
- 使用 pigx-common-sms 进行短信发送
- 使用 pigx-common-mail 进行邮件发送
- _Requirements: 5.1, 5.2_
- [x] 8.3 保留微信通知功能
- pigx 已有微信公众号/小程序消息推送功能
- 可通过 pigx-mp 模块实现微信消息推送
- _Requirements: 5.3_
- [x] 9. 文件服务适配
- [x] 9.1 替换文件上传逻辑
- 已在 pigx-workcase-biz、pigx-dify-biz、pigx-bidding-biz 中添加 pigx-common-oss 依赖
- 使用 pigx 的 OssTemplate 进行文件上传/下载
- 文件访问 URL 通过 pigx 网关统一管理
- _Requirements: 6.1, 6.2_
- [x] 10. 定时任务迁移
- [x] 10.1 迁移定时任务到 XXL-Job
- 源项目无定时任务需要迁移
- 如需添加定时任务,可使用 pigx-visual/xxl-job 进行配置
- _Requirements: 7.1, 7.2, 7.3_
- [ ] 11. 前端页面迁移
- [x] 11.1 迁移工单前端页面
- ✅ 已创建 API 层 (workcase.ts, chat.ts)
- ✅ 已创建类型定义 (workcase.ts, chatRoom.ts, customer.ts, conversation.ts, wordCloud.ts)
- ✅ 已创建工单列表页面 (views/workcase/index.vue)
- ✅ 已创建工单指派组件 (components/workcase/WorkcaseAssign.vue)
- ✅ 已创建工单详情组件 (views/workcase/detail/WorkcaseDetail.vue)
- ✅ 已创建聊天室消息组件 (views/workcase/chatRoom/ChatMessage.vue)
- 适配 pigx 的 request 工具和响应格式
- _Requirements: 2.5_
- [ ] 11.2 迁移 AI 前端页面
- 将 AI 相关页面迁移到 pigx-ai-ui/src/views/dify 目录
- 包括智能体管理、对话界面、知识库管理
- 适配 pigx 的 request 工具和响应格式
- _Requirements: 4.5_
- [ ] 11.3 迁移招标前端页面
- 将 bidding 页面迁移到 pigx-ai-ui/src/views/urban/bidding
- 适配 pigx 的 request 工具
- _Requirements: 1.4_
- [ ] 11.4 迁移平台管理前端页面
- 将 platform 页面迁移到 pigx-ai-ui/src/views/urban/platform
- _Requirements: 3.4_
- [ ] 11.5 迁移共享组件
- 将 shared 包组件迁移到 pigx-ai-ui/src/components/urban
- 更新导入路径使用 pigx 工具函数
- _Requirements: 9.1, 9.2_
- [ ] 11.6 适配 API 调用
- 创建 pigx-ai-ui/src/api/urban 目录
- 创建 workcase.ts、bidding.ts、platform.ts API 定义
- 创建 pigx-ai-ui/src/api/dify 目录
- 创建 agent.ts、chat.ts、knowledge.ts API 定义
- 使用 pigx 的 request 工具和 R<T> 响应格式
- 更新 API 路径为 pigx 网关规则
- _Requirements: 1.5, 9.4_
- [ ] 12. 数据迁移执行
- [ ] 12.1 执行数据库 DDL 脚本
- 在 MySQL 中执行 database-migration-script.md 中的建表语句
- 验证表结构正确性
- _Requirements: 8.1, 8.2_
- [ ] 12.2 执行业务数据迁移
- 运行数据迁移脚本
- 验证数据完整性
- _Requirements: 8.5_
- [ ] 13. 集成测试和验证
- [ ] 13.1 后端编译验证
- 确保所有迁移代码可以通过编译
- 验证 Maven 依赖正确
- _Requirements: 所有后端需求_
- [ ] 13.2 端到端功能测试
- 测试所有迁移功能的完整流程
- 验证权限控制正确性
- _Requirements: 所有需求_
- [ ] 13.3 租户隔离验证
- 验证多租户数据隔离正确性
- _Requirements: 8.4, 11.6_
- [ ] 14. 最终验收
- 确保所有功能正常运行
- 确认权限控制有效
- 验证多租户数据隔离
## Notes
- 任务 1、2.1、2.2、2.3 的文档已完成,可直接使用
- 重点关注权限适配和用户服务调用的正确性
- 已创建三个独立模块pigx-workcase、pigx-bidding、pigx-dify
- 每个模块包含 api 和 biz 子模块,遵循 pigx 架构规范
- 实体类使用 pigx 标准格式:@TenantTable、Model<T>、createBy/updateBy/delFlag
- 前端迁移需要适配 pigx-ai-ui 的技术栈Vue3 + TypeScript + Element Plus
- 数据库迁移脚本已在 database-migration-script.md 中准备好
## 已创建的文件
### pigx-ai-ui 前端已迁移文件
#### API 层
- `src/api/workcase/workcase.ts` - 工单管理 API
- `src/api/workcase/chat.ts` - 聊天室、客服、视频会议 API
#### 类型定义
- `src/types/workcase/workcase.ts` - 工单相关类型
- `src/types/workcase/chatRoom.ts` - 聊天室相关类型
- `src/types/workcase/customer.ts` - 客服相关类型
- `src/types/workcase/conversation.ts` - 对话相关类型
- `src/types/workcase/wordCloud.ts` - 词云相关类型
#### 组件
- `src/components/workcase/WorkcaseAssign.vue` - 工单指派组件
#### 页面
- `src/views/workcase/index.vue` - 工单列表页面
- `src/views/workcase/detail/WorkcaseDetail.vue` - 工单详情组件
- `src/views/workcase/detail/WorkcaseDetail.scss` - 工单详情样式
- `src/views/workcase/chatRoom/ChatMessage.vue` - 聊天室消息组件
#### 导出文件
- `src/views/workcase/chatRoom/index.ts`
- `src/views/workcase/detail/index.ts`
- Entity: TbWorkcase, TbChatRoom, TbChatRoomMessage, TbChatRoomMember, TbWorkcaseProcess, TbVideoMeeting, TbCustomerService, TbWordCloud
- Mapper: TbWorkcaseMapper, TbChatRoomMapper, TbChatRoomMessageMapper, TbChatRoomMemberMapper, TbWorkcaseProcessMapper, TbVideoMeetingMapper, TbCustomerServiceMapper, TbWordCloudMapper
- Service: TbWorkcaseService, TbChatRoomService含完整业务逻辑, TbChatRoomMessageService, TbChatRoomMemberService, TbWorkcaseProcessService, TbVideoMeetingService含完整业务逻辑, TbCustomerServiceService, TbWordCloudService, JitsiTokenService
- Controller: TbWorkcaseController, TbChatRoomController含成员/消息/客服分配API, TbVideoMeetingController含创建/加入/开始/结束会议API, TbCustomerServiceController, TbWordCloudController, JitsiTokenController
- WebSocket: ChatRoomWebSocketMessage, ChatRoomNotificationMessage, ChatRoomMessageHandler, ChatRoomNotificationHandler, ChatRoomWebSocketService
- Config: JitsiProperties, application.yml (port: 7070, WebSocket: /ws/chat)
- Application: PigxWorkcaseApplication
#### 聊天室功能已迁移的API
- 聊天室CRUD创建、查询、修改、关闭、删除
- 成员管理:添加成员、移除成员、获取成员列表、获取未读数、更新已读状态
- 消息管理:发送消息、分页查询消息、删除消息
- 客服分配:自动分配客服到聊天室
- 服务评分:提交聊天室服务评分
#### 视频会议功能已迁移的API
- 会议CRUD创建、查询、删除
- 会议操作:获取会议信息、加入会议、开始会议、结束会议
- 聊天室关联:获取聊天室当前活跃会议
#### 客服人员管理已迁移的API
- 客服CRUD新增、查询、修改、删除
- 状态管理:更新客服在线状态
- 可用客服:获取可接待客服列表
#### WebSocket 实时推送功能:
- 消息类型chat_message聊天消息、chat_notification通知消息
- 通知类型member_join成员加入、member_leave成员离开、typing正在输入、room_closed聊天室关闭
- ChatRoomWebSocketService主动推送消息、广播到聊天室、发送给指定用户
#### Jitsi JWT Token 功能:
- 生成 JWT Token支持主持人/普通成员角色
- 验证 Token检查 Token 有效性和过期时间
- 构建 iframe URL包含默认配置和自定义配置
- 生成房间名基于工单ID生成唯一房间名
- 一键生成会议信息:房间名+Token+URL
#### 词云管理功能:
- 词云CRUD新增、查询、修改、删除
- 词频累加:同一天、同一分类的相同词条自动累加词频
- 分页查询:支持按词语、分类、日期筛选
### pigx-dify 模块
- Entity: TbAgent, TbChat, TbChatMessage, TbKnowledge, TbKnowledgeFile, TbKnowledgeFileLog, PromptCard
- Mapper: TbAgentMapper, TbChatMapper, TbChatMessageMapper, TbKnowledgeMapper, TbKnowledgeFileMapper, TbKnowledgeFileLogMapper
- Service: TbAgentService, TbChatService, TbChatMessageService, TbKnowledgeService, TbKnowledgeFileService, TbKnowledgeFileLogService
- Controller: TbAgentController, TbChatController, TbKnowledgeController
- Client: DifyApiClient完整的 Dify API 客户端)
- Client DTO: ChatRequest, ChatResponse, DatasetCreateRequest, DatasetCreateResponse, DatasetDetailResponse, DatasetListResponse, DatasetUpdateRequest, DocumentListResponse, DocumentStatusResponse, DocumentUploadRequest, DocumentUploadResponse, RetrievalModel, RetrievalRequest, RetrievalResponse, WorkflowRunRequest, WorkflowRunResponse, ConversationListResponse, ConversationVariablesResponse, MessageHistoryResponse, EmbeddingModelResponse, RerankModelResponse, DifyFileInfo
- Callback: StreamCallback流式响应回调接口
- Exception: DifyException
- Config: DifyProperties, application.yml (port: 7080, Dify API 配置)
- Application: PigxDifyApplication
#### Dify API 客户端功能:
- 知识库管理:创建、查询、更新、删除知识库
- 文档管理:上传文档、查询文档列表、查询文档状态、删除文档
- 知识库检索:从知识库检索相关内容
- 对话功能:流式对话、阻塞式对话、停止对话、消息反馈
- 工作流:执行工作流(阻塞模式)
- 对话历史:获取消息历史、对话列表、对话变量
- 模型管理获取嵌入模型列表、Rerank模型列表
- 通用HTTPGET、POST、PATCH、DELETE 方法
### pigx-bidding 模块
- Entity: TbBiddingProject, TbBiddingDocument, TbBiddingRequirement, TbBidResponse, TbProcessNode
- Mapper: TbBiddingProjectMapper, TbBiddingDocumentMapper, TbBiddingRequirementMapper, TbBidResponseMapper, TbProcessNodeMapper
- Service: TbBiddingProjectService, TbBiddingDocumentService, TbBiddingRequirementService, TbBidResponseService, TbProcessNodeService
- Controller: TbBiddingProjectController, TbBiddingDocumentController
- Application: PigxBiddingApplication
- Config: application.yml (port: 7090)