anxin-ruoyi/.kiro/specs/department-data-isolation/requirements.md

99 lines
4.7 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.

# 部门数据隔离功能需求文档
## 介绍
为安信平台的核心业务表添加部门数据隔离功能,让不同部门的用户只能看到和操作自己部门的数据,提高数据安全性。
## 术语表
- **系统**: 部门数据隔离系统
- **业务表**: 合同管理表、服务周期管理表、员工表、员工库表、债权管理表、银行管理表
- **部门字段**: dept_id字段
- **访问控制**: 数据访问控制
- **权限检查**: 权限验证
## 需求
### 需求 1: 数据库表结构修改
**用户故事:** 作为系统管理员,我希望为核心业务表添加部门字段,以便实现基于部门的数据隔离。
#### 验收标准
1. 修改合同管理表(dc_contract)时系统应该添加dept_id字段并与部门表建立关联
2. 修改服务周期管理表(dc_service_period)时系统应该添加dept_id字段并与部门表建立关联
3. 修改员工表(dc_employee_info)时系统应该添加dept_id字段并与部门表建立关联
4. 修改员工库表(dc_employee_library)时系统应该添加dept_id字段并与部门表建立关联
5. 修改债权管理表(dc_credit)时系统应该添加dept_id字段并与部门表建立关联
6. 修改银行管理表(dc_bank_institution)时系统应该添加dept_id字段并与部门表建立关联
7. 添加部门字段时,系统应该为所有新增字段创建索引以提高查询速度
8. 添加部门字段时,系统应该确保字段不能为空并设置合理的默认值
### 需求 2: 数据迁移和初始化
**用户故事:** 作为系统管理员,我希望为现有数据分配合适的部门,确保数据迁移的完整性和准确性。
#### 验收标准
1. 执行数据迁移时系统应该为所有现有记录分配默认部门ID
2. 分配默认部门时,系统应该使用系统配置的默认部门或根据业务逻辑智能分配
3. 数据迁移完成后,系统应该验证所有记录都已正确分配部门
4. 迁移过程中出现错误时,系统应该记录详细的错误日志并提供回滚机制
### 需求 3: 数据访问权限控制
**用户故事:** 作为业务用户,我希望只能查看和操作属于我所在部门的数据,确保数据安全和隐私保护。
#### 验收标准
1. 用户查询业务数据时,系统应该自动添加部门过滤条件
2. 用户创建新记录时系统应该自动设置当前用户所属部门ID
3. 用户修改记录时,系统应该验证记录是否属于用户所在部门
4. 用户删除记录时,系统应该验证记录是否属于用户所在部门
5. 跨部门访问被拒绝时,系统应该返回明确的权限错误信息
### 需求 4: 超级管理员权限
**用户故事:** 作为超级管理员,我希望能够查看和管理所有部门的数据,以便进行系统维护和数据分析。
#### 验收标准
1. 超级管理员访问数据时,系统应该允许查看所有部门的数据
2. 超级管理员操作数据时,系统应该允许对任意部门的数据进行增删改操作
3. 识别超级管理员时,系统应该通过角色或特殊权限标识进行判断
4. 超级管理员操作时,系统应该记录详细的操作日志
### 需求 5: 关联数据一致性
**用户故事:** 作为系统架构师,我希望确保关联数据的部门一致性,避免数据孤岛和引用错误。
#### 验收标准
1. 创建服务周期时,系统应该验证关联合同属于同一部门
2. 分配员工到服务周期时,系统应该验证员工和服务周期属于同一部门
3. 创建债权记录时,系统应该验证关联合同属于同一部门
4. 关联数据部门不一致时,系统应该阻止操作并返回错误信息
5. 部门变更时,系统应该提供级联更新机制或警告
### 需求 6: 查询性能优化
**用户故事:** 作为系统用户,我希望添加部门隔离后系统查询性能不会显著下降。
#### 验收标准
1. 执行部门过滤查询时,系统应该利用部门字段索引优化查询性能
2. 创建复合索引时系统应该将dept_id作为索引的第一个字段
3. 查询大量数据时,系统应该确保响应时间在可接受范围内
4. 监控查询性能时,系统应该提供性能指标和慢查询日志
### 需求 7: 向后兼容性
**用户故事:** 作为开发人员我希望部门隔离功能不会破坏现有的业务逻辑和API接口。
#### 验收标准
1. 现有API调用时系统应该保持接口签名不变
2. 业务逻辑执行时,系统应该透明地添加部门过滤而不影响业务流程
3. 数据库查询时系统应该通过拦截器或AOP方式添加部门条件
4. 系统升级时,系统应该提供平滑的迁移路径
5. 功能开关时,系统应该支持部门隔离功能的启用/禁用配置