# 实施计划: 银行选择逻辑优化

## 概述

通过重构前端组件和后端数据模型，实现银行选择逻辑的优化，消除用户在申请和提交阶段的重复操作，提升用户体验。

## 任务

- [x] 1. 数据库结构优化
  - 修改 service_period_loan 表结构，增加银行选择相关字段
  - 创建数据库迁移脚本
  - _需求: 1.2, 5.1, 5.2, 5.3_

- [ ] 2. 后端数据模型和服务层修改
  - [ ] 2.1 更新 ServicePeriodLoan 实体类
    - 增加 submitComments、bankSelectedTime、bankSelectionHistory 等字段
    - 更新字段映射和验证注解
    - _需求: 1.2, 5.1_

  - [ ]* 2.2 编写 ServicePeriodLoan 实体类属性测试
    - **属性 5: 修改操作幂等性**
    - **验证: 需求 2.4, 2.5**

  - [x] 2.3 修改 ServicePeriodLoanService 接口和实现
    - 增加 createLoanWithBankSelection 方法
    - 增加 quickSubmitToBank 方法
    - 修改现有的更新方法以支持银行选择历史
    - _需求: 1.1, 1.2, 4.2, 4.3_

  - [ ]* 2.4 编写服务层单元测试
    - 测试银行选择保存逻辑
    - 测试一键提交功能
    - 测试变更历史记录
    - _需求: 1.2, 4.2, 5.3_

- [ ] 3. 后端控制器层修改
  - [x] 3.1 修改 ServicePeriodLoanController
    - 修改贷款申请接口以支持银行选择
    - 新增一键提交接口
    - 修改查询接口以返回银行选择状态
    - _需求: 1.1, 1.5, 4.1, 4.2_

  - [ ]* 3.2 编写控制器集成测试
    - 测试完整的申请流程
    - 测试一键提交流程
    - 测试错误处理机制
    - _需求: 1.5, 4.2, 4.5_

- [ ] 4. 检查点 - 确保后端功能正常
  - 确保所有测试通过，如有问题请询问用户

- [ ] 5. 前端数据模型和状态管理优化
  - [x] 5.1 修改 LoanManagement.vue 数据模型
    - 扩展 loanApplicationForm 以包含银行选择和提交说明
    - 简化 detailSubmitForm 数据结构
    - 增加银行选择状态计算函数
    - _需求: 1.1, 1.2, 3.1, 3.2, 3.3_

  - [ ]* 5.2 编写前端状态管理属性测试
    - **属性 3: 状态显示准确性**
    - **验证: 需求 3.1, 3.2, 3.3, 3.4, 3.5**

- [ ] 6. 前端界面和交互优化
  - [x] 6.1 重构贷款申请对话框
    - 在银行选择表格后增加提交说明输入框
    - 调整表单验证规则
    - 优化银行选择确认流程
    - _需求: 1.1, 1.3_

  - [ ] 6.2 优化贷款详情页面
    - 显示已选择的银行信息和提交说明
    - 简化提交操作为一键提交
    - 增加银行选择修改功能
    - _需求: 1.3, 1.4, 2.1, 2.2, 4.1_

  - [x] 6.3 增强贷款列表显示
    - 显示银行选择状态
    - 优化操作按钮逻辑
    - 增加一键提交按钮
    - _需求: 3.1, 3.4, 3.5, 4.1_

- [ ]* 6.4 编写前端交互属性测试
  - **属性 1: 银行选择一致性**
  - **属性 2: 提交说明保持性**
  - **验证: 需求 1.2, 1.5, 2.4**

- [ ] 7. 业务逻辑集成和优化
  - [ ] 7.1 实现一键提交功能
    - 集成前后端一键提交逻辑
    - 实现提交前的数据验证
    - 处理提交成功和失败的状态更新
    - _需求: 4.1, 4.2, 4.3, 4.4, 4.5_

  - [ ] 7.2 实现银行选择修改功能
    - 允许用户在待提交状态下修改银行选择
    - 重新计算相关的利率和还款信息
    - 记录银行选择变更历史
    - _需求: 2.1, 2.2, 2.3, 2.4, 5.1, 5.2_

  - [ ]* 7.3 编写业务逻辑属性测试
    - **属性 4: 一键提交条件**
    - **属性 6: 变更历史完整性**
    - **验证: 需求 4.1, 4.2, 5.1, 5.2, 5.3**

- [ ] 8. 错误处理和用户体验优化
  - [ ] 8.1 实现错误处理机制
    - 银行信息缺失的友好提示
    - 网络错误的重试机制
    - 数据不一致的自动修复
    - _需求: 设计文档错误处理部分_

  - [x] 8.2 优化用户提示和反馈
    - 改进成功和错误消息的显示
    - 增加操作确认对话框
    - 优化加载状态显示
    - _需求: 用户体验相关_

- [ ]* 8.3 编写错误处理单元测试
  - 测试各种错误场景的处理
  - 测试用户提示的准确性
  - 测试数据恢复机制
  - _需求: 错误处理相关_

- [ ] 9. 最终检查点 - 确保所有功能正常
  - 确保所有测试通过，验证用户体验改进效果

## 注意事项

- 标记为 `*` 的任务为可选任务，可以跳过以加快MVP开发
- 每个任务都引用了具体的需求条目以确保可追溯性
- 检查点任务确保增量验证和及时发现问题
- 属性测试验证系统的正确性保证