anxin-ruoyi/.kiro/specs/user-enterprise-identity-verification/tasks.md

467 lines
17 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: 用户企业认证、身份认证和员工CA二维码认证
## Overview
本实现计划将用户企业认证、身份认证和员工CA二维码认证功能分解为可执行的开发任务。实现将采用增量开发方式优先实现核心功能然后逐步添加高级特性。
## Tasks
- [x] 1. 数据库表结构和权限初始化
- 创建用户企业认证表、用户身份认证表、认证审核日志表包含operator_roles字段
- 创建员工实名认证二维码表、CA服务配置表
- 初始化CA服务配置数据
- 创建认证审核员和认证管理员角色
- 创建认证管理相关菜单和权限
- 为角色分配相应的权限
- _Requirements: 所有需求的数据基础, 10.1, 10.2, 10.3_
- [x] 2. 通用工具类和权限常量实现
- [x] 2.1 创建权限常量类 (VerificationPermissions)
- 定义所有认证相关的权限常量
- _Requirements: 10.4_
- [x] 2.2 创建角色常量类 (VerificationRoles)
- 定义认证审核员角色常量
- 定义认证管理员角色常量
- _Requirements: 10.1_
- [x] 2.3 实现身份证号验证工具类 (IdCardValidator)
- 实现GB 11643-1999标准的身份证号格式验证
- 实现身份证号校验位验证
- _Requirements: 2.3_
- [ ]* 2.4 编写身份证号验证的属性测试
- **Property 6: 身份证号格式验证**
- **Validates: Requirements 2.3**
- [x] 2.5 实现加密工具类 (EncryptionUtil)
- 实现AES-256-GCM加密方法
- 实现AES-256-GCM解密方法
- 实现RSA签名和验证方法
- _Requirements: 8.1, 8.4, 8.5_
- [ ]* 2.6 编写加密工具的属性测试
- **Property 7: 身份证号加密存储 (round-trip)**
- **Validates: Requirements 2.5, 8.1**
- [x] 2.7 实现二维码生成工具类 (QRCodeGenerator)
- 使用ZXing库生成二维码图片
- 支持自定义二维码尺寸
- _Requirements: 4.1, 4.2_
- [ ]* 2.8 编写二维码生成的单元测试
- 测试二维码生成功能
- 测试不同尺寸的二维码生成
- _Requirements: 4.1, 4.2_
- [x] 3. CA服务接口适配层实现
- [x] 3.1 创建CA服务适配器接口和数据模型
- 定义CAServiceAdapter接口
- 定义IdentityVerificationRequest/Response
- _Requirements: 4.1, 4.2_
- [x] 3.2 实现CA服务配置类 (CAServiceConfig)
- 从数据库读取CA服务配置
- 支持配置热更新
- _Requirements: 4.2_
- [x] 3.3 实现Mock CA服务适配器 (MockCAServiceAdapter)
- 实现身份认证Mock逻辑
- _Requirements: 4.5_
- [ ]* 3.4 编写CA服务适配器的单元测试
- 测试Mock适配器的各个方法
- 测试配置读取功能
- _Requirements: 4.2, 4.5_
- [x] 3.5 实现CA服务调用的错误处理和超时控制
- 实现30秒超时机制
- 实现错误日志记录
- 实现友好的错误信息返回
- _Requirements: 4.3, 4.6, 4.7_
- [ ]* 3.6 编写CA服务错误处理的属性测试
- **Property 17: CA服务错误处理**
- **Property 18: CA服务超时处理**
- **Property 19: CA服务调用日志**
- **Validates: Requirements 4.3, 4.6, 4.7**
- [x] 4. Checkpoint - 确保基础工具和CA适配层测试通过
- 确保所有测试通过,如有问题请向用户询问
- [x] 5. 用户企业认证功能实现
- [x] 5.1 创建用户企业认证实体类和Mapper
- 创建UserEnterpriseVerification实体类
- 创建UserEnterpriseVerificationMapper接口
- 创建Mapper XML文件
- _Requirements: 1.1, 1.2_
- [x] 5.2 实现用户企业认证Service层
- 实现提交企业认证申请方法
- 实现查询企业认证状态方法
- 实现管理员审核企业认证方法(添加@PreAuthorize权限注解
- 实现企业认证列表查询方法(添加@PreAuthorize权限注解
- 实现权限验证逻辑
- _Requirements: 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 10.4, 10.5_
- [ ]* 5.3 编写企业认证的属性测试
- **Property 1: 企业认证信息验证**
- **Property 2: 企业认证状态转换**
- **Property 3: 企业认证错误处理**
- **Property 4: 企业认证审核记录**
- **Property 5: 企业认证重新申请**
- **Validates: Requirements 1.2, 1.3, 1.4, 1.6, 1.7**
- [ ]* 5.4 编写权限控制的单元测试
- 测试具有权限的用户可以审核
- 测试不具有权限的用户被拒绝
- 测试超级管理员可以审核
- _Requirements: 1.6, 10.4, 10.5, 10.7_
- [x] 5.5 实现用户企业认证Controller层
- 实现提交企业认证申请接口
- 实现查询企业认证状态接口
- 实现管理员审核企业认证接口
- 实现企业认证列表查询接口
- 添加权限不足的异常处理
- _Requirements: 1.1, 1.2, 1.5, 10.5_
- [ ]* 5.6 编写企业认证Controller的集成测试
- 使用MockMvc测试API接口
- 测试请求参数验证
- 测试响应格式
- 测试权限控制
- _Requirements: 1.1, 1.2, 1.5, 10.4_
- [x] 6. 用户身份认证功能实现
- [x] 6.1 创建用户身份认证实体类和Mapper
- 创建UserIdentityVerification实体类
- 创建UserIdentityVerificationMapper接口
- 创建Mapper XML文件
- _Requirements: 2.1, 2.2_
- [x] 6.2 实现用户身份认证Service层
- 实现提交身份认证申请方法调用CA服务
- 实现查询身份认证状态方法
- 实现身份认证列表查询方法
- 集成IdCardValidator进行身份证号验证
- 集成EncryptionUtil进行身份证号加密
- _Requirements: 2.2, 2.3, 2.4, 2.5, 2.6_
- [ ]* 6.3 编写身份认证的属性测试
- **Property 8: CA服务身份认证调用**
- **Property 9: CA身份认证成功处理**
- **Property 10: CA身份认证失败处理**
- **Validates: Requirements 2.5, 2.6, 2.7**
- [x] 6.4 实现用户身份认证Controller层
- 实现提交身份认证申请接口
- 实现查询身份认证状态接口
- 实现身份认证列表查询接口
- _Requirements: 2.1, 2.2_
- [ ]* 6.5 编写身份认证Controller的集成测试
- 使用MockMvc测试API接口
- 测试CA服务集成
- _Requirements: 2.1, 2.2, 2.5_
- [x] 7. 认证审核日志功能实现
- [x] 7.1 创建认证审核日志实体类和Mapper
- 创建VerificationAuditLog实体类包含operator_roles字段
- 创建VerificationAuditLogMapper接口
- 创建Mapper XML文件
- _Requirements: 1.7, 6.7, 10.6_
- [x] 7.2 在认证Service中集成审核日志记录
- 在企业认证审核时记录日志(包含操作人角色)
- 在认证状态变更时记录日志
- 获取当前用户的角色信息并记录
- _Requirements: 1.7, 6.7, 10.6_
- [ ]* 7.3 编写审核日志的单元测试
- 测试日志记录功能
- 测试日志查询功能
- 测试角色信息记录
- _Requirements: 1.7, 6.7, 10.6_
- [x] 8. Checkpoint - 确保用户认证功能测试通过
- 确保所有测试通过,如有问题请向用户询问
- [x] 9. 员工实名认证二维码功能实现
- [x] 9.1 创建员工实名认证二维码实体类和Mapper
- 创建EmployeeQRCode实体类包含员工ID、姓名、身份证号、时间戳
- 创建EmployeeQRCodeMapper接口
- 创建Mapper XML文件
- _Requirements: 3.1, 3.2_
- [x] 9.2 实现员工实名认证二维码Service层
- 实现生成二维码方法(包含员工身份信息)
- 实现获取二维码图片方法
- 实现验证二维码方法调用CA服务进行身份认证
- 实现二维码过期检查逻辑
- _Requirements: 3.1, 3.2, 3.3, 3.4, 3.5, 3.6_
- [ ]* 9.3 编写员工实名认证二维码的属性测试
- **Property 11: 二维码内容完整性**
- **Property 12: 二维码CA认证调用**
- **Property 13: 二维码认证成功处理**
- **Property 14: 二维码认证失败处理**
- **Property 15: 二维码过期验证**
- **Validates: Requirements 3.1, 3.3, 3.4, 3.5, 3.6_
- [x] 9.4 实现员工实名认证二维码Controller层
- 实现生成二维码接口
- 实现获取二维码图片接口
- 实现验证二维码接口调用CA服务
- _Requirements: 3.2, 3.3, 3.4, 3.5_
- [ ]* 9.5 编写二维码Controller的集成测试
- 使用MockMvc测试API接口
- 测试二维码生成和CA认证流程
- _Requirements: 3.2, 3.3, 3.4_
- [x] 10. Checkpoint - 确保员工实名认证二维码功能测试通过
- 确保所有测试通过,如有问题请向用户询问
- [x] 11. 认证状态权限控制实现
- [x] 11.1 实现认证拦截器 (VerificationInterceptor)
- 检查用户的企业认证和身份认证状态
- 拦截未认证用户访问受限功能
- 超级管理员例外处理
- _Requirements: 5.1, 5.3, 5.5, 5.8_
- [x] 11.2 配置拦截器和受限路径
- 在WebMvcConfig中注册拦截器
- 配置需要认证的路径(如/credit/contract/**
- 排除认证接口本身
- _Requirements: 5.3, 5.9_
- [ ]* 11.3 编写权限控制的属性测试
- **Property 20: 未认证用户访问拦截**
- **Property 21: 双认证完成解除限制**
- **Property 22: 超级管理员特殊权限**
- **Property 23: 权限检查双认证状态**
- **Property 24: 认证菜单配置化**
- **Validates: Requirements 5.1, 5.3, 5.4, 5.5, 5.8, 5.9**
- [x] 11.4 实现认证状态查询Service方法
- 实现isUserFullyVerified方法
- 实现getUserVerificationStatus方法
- _Requirements: 5.4, 5.8_
- [ ]* 11.5 编写权限控制的集成测试
- 测试拦截器功能
- 测试不同认证状态的访问权限
- 测试超级管理员例外
- _Requirements: 5.1, 5.3, 5.4, 5.5_
- [x] 12. 企业认证管理功能实现
- [x] 12.1 实现企业认证管理Service方法
- 实现企业认证列表查询(支持筛选和搜索,添加@PreAuthorize权限注解
- 实现企业认证详情查询(包含审核历史,添加@PreAuthorize权限注解
- 实现批量审核企业认证方法(添加@PreAuthorize权限注解
- 实现导出企业认证数据方法(添加@PreAuthorize权限注解
- _Requirements: 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 10.4_
- [x] 12.2 实现企业认证管理Controller层
- 实现企业认证列表查询接口
- 实现企业认证详情查询接口
- 实现批量审核接口
- 实现导出企业认证数据接口
- 添加权限不足的异常处理
- _Requirements: 6.1, 6.2, 6.3, 6.4, 6.6, 10.5_
- [ ]* 12.3 编写企业认证管理的单元测试
- 测试列表查询和筛选功能
- 测试批量审核功能
- 测试导出功能
- 测试权限控制
- _Requirements: 6.1, 6.2, 6.4, 6.6, 10.4_
- [x] 13. 通知机制实现
- [x] 13.1 集成现有的通知服务
- 实现认证申请确认通知
- 实现认证审核通过通知
- 实现认证审核拒绝通知
- 支持站内消息和邮件两种方式
- _Requirements: 8.1, 8.2, 8.3, 8.5_
- [ ]* 13.2 编写通知功能的单元测试
- 测试各种通知场景
- 测试通知内容格式
- _Requirements: 8.1, 8.2, 8.3_
- [x] 14. Checkpoint - 确保后端所有功能测试通过
- 确保所有测试通过,如有问题请向用户询问
- [x] 15. 前端Vue3界面实现 - 用户认证模块
- [x] 15.1 创建用户认证页面组件
- 创建企业认证表单组件
- 创建身份认证表单组件
- 创建认证状态显示组件
- _Requirements: 9.1, 9.2, 9.3_
- [x] 15.2 实现认证表单验证
- 实现企业信息格式验证
- 实现身份证号格式验证
- 实现实时验证反馈
- _Requirements: 9.4_
- [x] 15.3 集成认证API接口
- 调用提交企业认证接口
- 调用提交身份认证接口
- 调用查询认证状态接口
- _Requirements: 9.1, 9.2_
- [ ]* 15.4 编写前端组件测试
- 使用Vitest测试组件渲染
- 测试表单验证逻辑
- _Requirements: 9.1, 9.2, 9.3, 9.4_
- [x] 16. 前端Vue3界面实现 - 认证提示横幅
- [x] 16.1 创建认证提示横幅组件
- 显示企业认证和身份认证状态
- 提供快速认证入口链接
- 支持关闭和最小化
- _Requirements: 5.1, 5.2, 5.6, 9.7_
- [x] 16.2 实现路由守卫
- 在Vue Router中添加beforeEach守卫
- 检查用户认证状态
- 显示认证提示横幅
- 阻止未认证用户访问受限页面
- _Requirements: 5.1, 5.3, 5.6, 5.7_
- [ ]* 16.3 编写路由守卫测试
- 测试不同认证状态的路由行为
- 测试超级管理员例外
- _Requirements: 5.1, 5.3, 5.5_
- [x] 17. 前端Vue3界面实现 - 员工实名认证二维码
- [x] 17.1 在员工管理页面添加"实名认证"按钮和二维码显示功能
- 在员工操作列添加"实名认证"按钮
- 点击按钮后显示员工实名认证二维码
- 提供二维码下载功能
- 提供二维码打印功能
- 显示二维码有效期和认证状态
- _Requirements: 3.1, 3.2, 9.5_
- [x] 17.2 集成员工实名认证二维码API接口
- 调用生成员工实名认证二维码接口
- 调用获取二维码图片接口
- 调用验证二维码接口扫描后调用CA服务
- _Requirements: 3.2, 3.3, 9.5_
- [ ]* 17.3 编写员工实名认证二维码组件测试
- 测试组件渲染
- 测试API调用
- 测试二维码显示和下载功能
- _Requirements: 3.2, 9.5_
- [ ] 18. 前端Vue3界面实现 - 企业认证管理页面
- [ ] 18.1 创建企业认证管理页面
- 创建企业认证列表组件
- 创建认证筛选组件
- 创建企业认证详情对话框(显示审核历史和审核人角色)
- 创建批量审核对话框
- _Requirements: 6.1, 6.2, 6.3, 6.6, 9.6, 10.6_
- [ ] 18.2 实现企业认证管理功能
- 实现企业认证列表查询和分页
- 实现认证状态筛选
- 实现企业认证搜索(按用户姓名、企业名称、企业代码)
- 实现企业认证详情查看(包含审核人角色信息)
- 实现批量审核企业认证
- 实现导出企业认证数据
- 实现权限控制(根据用户角色显示/隐藏功能)
- _Requirements: 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 9.6, 10.3, 10.4_
- [ ]* 18.3 编写企业认证管理页面测试
- 测试列表渲染
- 测试筛选和搜索功能
- 测试审核功能
- 测试权限控制
- _Requirements: 6.1, 6.2, 6.3, 6.6, 9.6, 10.4_
- [ ] 19. Checkpoint - 确保前端所有功能正常
- 确保所有前端功能正常,如有问题请向用户询问
- [ ] 20. 数据安全和权限加固
- [ ] 20.1 实现数据访问权限控制
- 在Service层添加权限检查
- 记录敏感数据访问日志
- 验证用户只能访问自己的认证数据(管理员除外)
- _Requirements: 7.6, 10.4, 10.5_
- [ ]* 20.2 编写数据安全的属性测试
- **Property 25: 认证数据访问权限**
- **Validates: Requirements 7.6**
- [ ]* 20.3 编写权限控制的集成测试
- 测试不同角色的权限边界
- 测试未授权访问被拒绝
- 测试审核日志记录角色信息
- _Requirements: 10.4, 10.5, 10.6_
- [ ] 20.4 配置HTTPS和安全头
- 配置HTTPS证书
- 配置安全响应头HSTS, CSP等
- _Requirements: 7.2_
- [ ] 21. 性能优化
- [ ] 21.1 实现认证状态缓存
- 使用Redis缓存用户认证状态
- 设置合理的缓存过期时间
- 认证状态变更时清除缓存
- [ ] 21.2 实现二维码图片缓存
- 缓存生成的二维码图片
- 设置合理的缓存过期时间
- [ ] 21.3 优化数据库查询
- 添加必要的索引
- 优化复杂查询的SQL
- [ ] 22. 文档和部署准备
- [ ] 22.1 编写API文档
- 使用Swagger生成API文档
- 补充接口说明和示例
- [ ] 22.2 编写部署文档
- 数据库迁移脚本说明
- 配置项说明
- 部署步骤说明
- [ ] 22.3 准备数据库迁移脚本
- 创建Flyway或Liquibase迁移脚本
- 测试迁移脚本
- [ ] 23. 最终集成测试和验收
- [ ] 23.1 执行完整的E2E测试
- 测试用户企业认证完整流程
- 测试用户身份认证完整流程
- 测试员工实名认证二维码生成和验证流程
- 测试权限控制流程
- 测试认证管理流程
- [ ] 23.2 性能测试
- 测试并发认证申请
- 测试CA服务调用性能
- 测试二维码生成性能
- [ ] 23.3 安全测试
- 测试加密功能
- 测试权限控制
- 测试SQL注入防护
- 测试XSS防护
## Notes
- 标记为 `*` 的任务是可选的测试任务,可以根据项目进度决定是否执行
- 每个Checkpoint任务是重要的验证点确保在继续之前所有功能正常
- CA服务适配器使用Mock实现进行开发和测试真实CA服务对接可以在后期进行
- 前端开发可以与后端开发并行进行使用Mock数据进行开发
- 属性测试使用jqwik框架每个测试至少运行100次迭代
- 单元测试使用JUnit 5框架
- 集成测试使用Spring Boot Test和MockMvc