# UrbanLifeline 到 Pigx 迁移文档总览 ## 📋 文档清单 本目录包含了 UrbanLifeline 系统迁移到 Pigx 平台所需的全部技术文档。 ### 核心文档 | 文档名称 | 文件路径 | 说明 | |---------|---------|------| | **需求文档** | [requirements.md](./requirements.md) | 定义迁移需求,明确创建 pigx-dify 模块 | | **设计文档** | [design.md](./design.md) | 技术设计方案,包含 pigx-dify 模块架构 | | **任务清单** | [tasks.md](./tasks.md) | 详细的迁移任务列表,包含 AI 模块迁移步骤 | ### 技术指南 | 文档名称 | 文件路径 | 用途 | |---------|---------|------| | **权限映射表** | [permission-mapping.md](./permission-mapping.md) | 权限标识从 urbanLifeline 到 pigx 的映射对照 | | **权限注解转换指南** | [permission-annotation-guide.md](./permission-annotation-guide.md) | @PreAuthorize 到 @pms.hasPermission 的转换方法 | | **用户服务配置指南** | [security-config-guide.md](./security-config-guide.md) | SecurityUtils 和 RemoteUserService 的使用说明 | | **数据库迁移脚本** | [database-migration-script.md](./database-migration-script.md) | PostgreSQL 到 MySQL 的完整迁移 SQL | | **租户隔离指南** | [tenant-isolation-guide.md](./tenant-isolation-guide.md) | 多租户字段添加和隔离实现方案 | | **Dify模块架构** | [pigx-dify-architecture.md](./pigx-dify-architecture.md) | 新建 pigx-dify 模块的详细架构设计 | ## 🎯 迁移要点总结 ### 1. 核心变更 - ✅ 创建独立的 **pigx-dify** 模块承载 AI 功能 - ✅ 保留原有 Dify API 集成方式 - ✅ 权限体系完全适配 pigx(@pms.hasPermission) - ✅ 所有业务表添加 tenant_id 实现多租户隔离 - ✅ 数据库从 PostgreSQL 迁移到 MySQL ### 2. 模块分布 | 模块 | 目标位置 | 状态 | |------|---------|------| | 工单 (workcase) | pigx-app-server-biz | 待迁移 | | 招标 (bidding) | pigx-app-server-biz | 待迁移 | | 平台管理 (platform) | pigx-app-server-biz | 待迁移 | | AI功能 (ai) | **pigx-dify(新建)** | 待迁移 | | 消息 (message) | pigx-app-server-biz | 待迁移 | ### 3. 关键技术适配 #### 权限转换 ```java // 原系统 @PreAuthorize("hasAuthority('workcase:ticket:create')") // 新系统 @PreAuthorize("@pms.hasPermission('workcase_ticket_add')") ``` #### 用户信息获取 ```java // 原系统 JwtUtils.getUserId() // 新系统 SecurityUtils.getUser().getId() ``` #### 响应格式 ```java // 原系统 ResultDomain.success(data) // 新系统 R.ok(data) ``` ## 📝 使用指南 ### 第一步:理解需求和设计 1. 阅读 [requirements.md](./requirements.md) 了解迁移需求 2. 阅读 [design.md](./design.md) 理解技术方案 3. 查看 [pigx-dify-architecture.md](./pigx-dify-architecture.md) 了解 AI 模块设计 ### 第二步:准备迁移 1. 使用 [tasks.md](./tasks.md) 作为任务清单 2. 参考 [permission-mapping.md](./permission-mapping.md) 准备权限映射 3. 阅读 [database-migration-script.md](./database-migration-script.md) 准备数据库 ### 第三步:执行迁移 1. 按照 [permission-annotation-guide.md](./permission-annotation-guide.md) 转换权限注解 2. 根据 [security-config-guide.md](./security-config-guide.md) 配置用户服务 3. 使用 [tenant-isolation-guide.md](./tenant-isolation-guide.md) 实现租户隔离 ### 第四步:验证测试 1. 验证权限控制正确性 2. 测试租户数据隔离 3. 确认 Dify 集成正常 4. 检查所有功能模块 ## 🔧 工具和脚本 ### 批量权限转换 ```bash # 权限注解批量替换 find . -name "*.java" -exec sed -i \ 's/@PreAuthorize("hasAuthority(\x27\([^:]*\):\([^:]*\):\([^x27]*\)\x27)")/@PreAuthorize("@pms.hasPermission(\x27\1_\2_\3\x27)")/g' {} \; ``` ### 数据库迁移 ```sql -- 执行顺序 1. 创建 MySQL 数据库结构 2. 添加 tenant_id 字段 3. 迁移业务数据 4. 建立用户映射关系 5. 验证数据完整性 ``` ## 📊 迁移进度跟踪 使用 [tasks.md](./tasks.md) 中的任务清单跟踪进度: - [ ] 基础设施准备 - [ ] 权限体系迁移 - [ ] 数据库迁移 - [ ] 后端代码迁移 - [ ] 前端页面迁移 - [ ] 集成测试 - [ ] 上线部署 ## 🚨 重要提醒 1. **数据备份**:迁移前必须完整备份所有数据 2. **权限测试**:每个模块迁移后都要测试权限控制 3. **租户隔离**:确保所有查询都包含租户条件 4. **Dify配置**:保存好 Dify API Key 和配置信息 5. **回滚方案**:准备好回滚脚本和流程 ## 📞 支持与反馈 如有问题,请参考相应的技术指南文档,或联系技术支持团队。 --- *最后更新时间:2024年*