diff --git a/openspec/changes/integrate-insurance-flow/design.md b/openspec/changes/archive/2026-01-12-integrate-insurance-flow/design.md similarity index 100% rename from openspec/changes/integrate-insurance-flow/design.md rename to openspec/changes/archive/2026-01-12-integrate-insurance-flow/design.md diff --git a/openspec/changes/integrate-insurance-flow/proposal.md b/openspec/changes/archive/2026-01-12-integrate-insurance-flow/proposal.md similarity index 100% rename from openspec/changes/integrate-insurance-flow/proposal.md rename to openspec/changes/archive/2026-01-12-integrate-insurance-flow/proposal.md diff --git a/openspec/changes/integrate-insurance-flow/specs/bank-insurance-integration/spec.md b/openspec/changes/archive/2026-01-12-integrate-insurance-flow/specs/bank-insurance-integration/spec.md similarity index 100% rename from openspec/changes/integrate-insurance-flow/specs/bank-insurance-integration/spec.md rename to openspec/changes/archive/2026-01-12-integrate-insurance-flow/specs/bank-insurance-integration/spec.md diff --git a/openspec/changes/integrate-insurance-flow/specs/bank-insurance-ui/spec.md b/openspec/changes/archive/2026-01-12-integrate-insurance-flow/specs/bank-insurance-ui/spec.md similarity index 100% rename from openspec/changes/integrate-insurance-flow/specs/bank-insurance-ui/spec.md rename to openspec/changes/archive/2026-01-12-integrate-insurance-flow/specs/bank-insurance-ui/spec.md diff --git a/openspec/changes/integrate-insurance-flow/specs/government-bad-loans/spec.md b/openspec/changes/archive/2026-01-12-integrate-insurance-flow/specs/government-bad-loans/spec.md similarity index 100% rename from openspec/changes/integrate-insurance-flow/specs/government-bad-loans/spec.md rename to openspec/changes/archive/2026-01-12-integrate-insurance-flow/specs/government-bad-loans/spec.md diff --git a/openspec/changes/integrate-insurance-flow/specs/insurance-claim-review/spec.md b/openspec/changes/archive/2026-01-12-integrate-insurance-flow/specs/insurance-claim-review/spec.md similarity index 100% rename from openspec/changes/integrate-insurance-flow/specs/insurance-claim-review/spec.md rename to openspec/changes/archive/2026-01-12-integrate-insurance-flow/specs/insurance-claim-review/spec.md diff --git a/openspec/changes/integrate-insurance-flow/specs/insurance-navigation/spec.md b/openspec/changes/archive/2026-01-12-integrate-insurance-flow/specs/insurance-navigation/spec.md similarity index 100% rename from openspec/changes/integrate-insurance-flow/specs/insurance-navigation/spec.md rename to openspec/changes/archive/2026-01-12-integrate-insurance-flow/specs/insurance-navigation/spec.md diff --git a/openspec/changes/integrate-insurance-flow/specs/insurance-underwriting/spec.md b/openspec/changes/archive/2026-01-12-integrate-insurance-flow/specs/insurance-underwriting/spec.md similarity index 100% rename from openspec/changes/integrate-insurance-flow/specs/insurance-underwriting/spec.md rename to openspec/changes/archive/2026-01-12-integrate-insurance-flow/specs/insurance-underwriting/spec.md diff --git a/openspec/changes/integrate-insurance-flow/tasks.md b/openspec/changes/archive/2026-01-12-integrate-insurance-flow/tasks.md similarity index 100% rename from openspec/changes/integrate-insurance-flow/tasks.md rename to openspec/changes/archive/2026-01-12-integrate-insurance-flow/tasks.md diff --git a/openspec/specs/bank-insurance-integration/spec.md b/openspec/specs/bank-insurance-integration/spec.md new file mode 100644 index 0000000..02efb34 --- /dev/null +++ b/openspec/specs/bank-insurance-integration/spec.md @@ -0,0 +1,140 @@ +# bank-insurance-integration Specification + +## Purpose +TBD - created by archiving change integrate-insurance-flow. Update Purpose after archive. +## Requirements +### Requirement: 保险购买入口 +银行端 SHALL 在贷款审核通过后提供保险购买入口,该入口为可选操作。 + +#### Scenario: 显示保险购买入口 +- **WHEN** 银行端用户查看已审核通过的贷款详情 +- **THEN** 系统 SHALL 显示"购买保险"按钮 +- **AND** 该按钮为可选操作,不强制要求购买 + +#### Scenario: 跳过保险购买 +- **WHEN** 银行端用户选择不购买保险 +- **THEN** 系统 SHALL 继续原贷款流程处理 +- **AND** 不影响贷款的后续放款流程 + +### Requirement: 选择合作保险公司 +银行端 SHALL 支持从合作保险公司列表中选择保险公司。 + +#### Scenario: 查看合作保险公司列表 +- **WHEN** 银行端用户点击购买保险 +- **THEN** 系统 SHALL 显示合作保险公司列表 +- **AND** 每个保险公司显示名称、联系方式和状态 + +#### Scenario: 选择保险公司 +- **WHEN** 银行端用户选择一个保险公司 +- **THEN** 系统 SHALL 加载该保险公司提供的保险产品列表 + +### Requirement: 选择保险产品 +银行端 SHALL 支持根据贷款类型选择相应的保险产品。 + +#### Scenario: 显示保险产品列表 +- **WHEN** 银行端用户选择保险公司后 +- **THEN** 系统 SHALL 显示该保险公司提供的保险产品列表 +- **AND** 每个产品显示名称、类型、描述和保险金额范围 + +#### Scenario: 根据贷款类型筛选产品 +- **WHEN** 银行端用户选择保险产品 +- **THEN** 系统 SHALL 根据贷款类型推荐相应的保险产品 +- **AND** 个人住房贷款推荐住房贷款保险 +- **AND** 企业信贷推荐履约保证保险 + +### Requirement: 确定保险金额和期限 +银行端 SHALL 支持确定保险金额和保险期限。 + +#### Scenario: 设置保险金额 +- **WHEN** 银行端用户设置保险金额 +- **THEN** 系统 SHALL 验证保险金额不低于抵押物价值 +- **AND** 保险金额应在保险产品的最小和最大金额范围内 + +#### Scenario: 设置保险期限 +- **WHEN** 银行端用户设置保险期限 +- **THEN** 系统 SHALL 默认保险期限与贷款期限一致 +- **AND** 允许用户根据需要调整保险期限 + +### Requirement: 提交投保申请 +银行端 SHALL 支持提交投保申请,系统自动发送给对应的保险公司。 + +#### Scenario: 提交投保申请 +- **WHEN** 银行端用户填写完整的投保信息并提交 +- **THEN** 系统 SHALL 创建投保申请记录 +- **AND** 系统 SHALL 自动发送投保申请给对应的保险公司 +- **AND** 系统 SHALL 显示投保申请已提交的提示 + +#### Scenario: 投保申请包含银行信息 +- **WHEN** 系统发送投保申请给保险公司 +- **THEN** 投保申请 SHALL 包含银行相关信息 +- **AND** 包含客户的基本信息和贷款信息 +- **AND** 包含银行对客户的评估信息 + +### Requirement: 查看投保申请状态 +银行端 SHALL 支持查看投保申请的审核状态。 + +#### Scenario: 查看待审核状态 +- **WHEN** 银行端用户查看投保申请 +- **AND** 保险公司尚未审核 +- **THEN** 系统 SHALL 显示"待审核"状态 + +#### Scenario: 查看审核通过状态 +- **WHEN** 保险公司核保通过 +- **THEN** 系统 SHALL 显示"审核通过"状态 +- **AND** 显示保险单信息 + +#### Scenario: 查看审核拒绝状态 +- **WHEN** 保险公司核保拒绝 +- **THEN** 系统 SHALL 显示"审核拒绝"状态 +- **AND** 显示拒绝原因 + +### Requirement: 保险单管理 +银行端 SHALL 支持查看和管理保险单。 + +#### Scenario: 查看保险单详情 +- **WHEN** 银行端用户点击保险单 +- **THEN** 系统 SHALL 显示保险单的完整信息 +- **AND** 包括保单号、保险公司、保险金额、保险期限等 + +#### Scenario: 保险单与贷款关联 +- **WHEN** 银行端用户查看贷款详情 +- **THEN** 系统 SHALL 显示关联的保险单信息(如果存在) + +### Requirement: 理赔申请功能 +银行端 SHALL 支持发起理赔申请并上传理赔材料。 + +#### Scenario: 发起理赔申请 +- **WHEN** 银行端用户选择一个保险单并发起理赔申请 +- **THEN** 系统 SHALL 显示理赔申请表单 +- **AND** 要求填写理赔金额和理赔原因 + +#### Scenario: 上传理赔材料 +- **WHEN** 银行端用户提交理赔申请 +- **THEN** 系统 SHALL 要求上传理赔材料 +- **AND** 支持上传多个文件 +- **AND** 验证文件格式和大小 + +#### Scenario: 提交理赔申请到保险公司 +- **WHEN** 银行端用户提交理赔申请 +- **THEN** 系统 SHALL 创建理赔申请记录 +- **AND** 系统 SHALL 发送理赔申请给对应的保险公司 +- **AND** 系统 SHALL 显示理赔申请已提交的提示 + +### Requirement: 查看理赔申请状态 +银行端 SHALL 支持查看理赔申请的审核状态。 + +#### Scenario: 查看待审核状态 +- **WHEN** 银行端用户查看理赔申请 +- **AND** 保险公司尚未审核 +- **THEN** 系统 SHALL 显示"待审核"状态 + +#### Scenario: 查看审核通过状态 +- **WHEN** 保险公司理赔审核通过 +- **THEN** 系统 SHALL 显示"审核通过"状态 +- **AND** 显示赔付金额和赔付日期 + +#### Scenario: 查看审核拒绝状态 +- **WHEN** 保险公司理赔审核拒绝 +- **THEN** 系统 SHALL 显示"审核拒绝"状态 +- **AND** 显示拒绝原因 + diff --git a/openspec/specs/bank-insurance-ui/spec.md b/openspec/specs/bank-insurance-ui/spec.md new file mode 100644 index 0000000..30da50c --- /dev/null +++ b/openspec/specs/bank-insurance-ui/spec.md @@ -0,0 +1,110 @@ +# bank-insurance-ui Specification + +## Purpose +TBD - created by archiving change integrate-insurance-flow. Update Purpose after archive. +## Requirements +### Requirement: Audit Detail Insurance Display + +The audit detail page MUST display insurance information based on the loan status. + +#### Scenario: Display insurance information for insured loans + +**Given** a loan application with status `DISBURSED` and insurance policy exists + +**When** the user views the audit detail page + +**Then** the system SHALL display: +- Insurance status as "保障中" +- Insurance company name +- Insurance product name +- Policy number +- Insurance amount matching the loan amount +- Insurance term matching the loan term +- "申请理赔" (Apply for Claim) button + +#### Scenario: Display purchase insurance option for uninsured loans + +**Given** a loan application with status `DISBURSED` and no insurance policy + +**When** the user views the audit detail page + +**Then** the system SHALL display: +- "购买保险" (Purchase Insurance) button +- No insurance policy details section + +### Requirement: Insurance Navigation + +The audit detail page MUST provide navigation to insurance-related pages. + +#### Scenario: Navigate to insurance application creation + +**Given** a loan application with status `DISBURSED` + +**When** the user clicks the "购买保险" button + +**Then** the system SHALL navigate to `/pagesBank/insurance/application/create` with query parameters: +- `loanId`: The loan application ID +- `loanAmount`: The loan amount in yuan +- `loanTerm`: The loan term in months + +#### Scenario: Navigate to claim application creation + +**Given** a loan application with an active insurance policy + +**When** the user clicks the "申请理赔" button + +**Then** the system SHALL navigate to `/pagesBank/insurance/claim/create` with query parameters: +- `loanId`: The loan application ID +- `policyId`: The insurance policy ID +- `policyNumber`: The insurance policy number + +### Requirement: Workflow Step Insurance Node + +The workflow step bar MUST conditionally display an insurance node. + +#### Scenario: Display insurance node for insured loans + +**Given** a loan application with status `DISBURSED` and an active insurance policy + +**When** the user views the audit detail page + +**Then** the system SHALL display an "投保" (Insurance) node in the workflow step bar + +**And** the insurance node SHALL appear between the "审批" (Approval) and "签约" (Signing) nodes + +**And** the insurance node SHALL be marked as completed + +#### Scenario: Hide insurance node for uninsured loans + +**Given** a loan application with status `DISBURSED` and no insurance policy + +**When** the user views the audit detail page + +**Then** the system SHALL NOT display an "投保" (Insurance) node in the workflow step bar + +### Requirement: Dashboard Insurance Shortcuts + +The bank dashboard MUST provide insurance management shortcuts. + +#### Scenario: Display insurance shortcuts on dashboard + +**Given** the user is on the bank dashboard page + +**When** the page loads + +**Then** the system SHALL display two insurance-related shortcuts in the quick actions area: +- "投保管理" (Insurance Management) with icon `i-carbon-security`, navigating to `/pagesBank/insurance/application/list` +- "理赔管理" (Claim Management) with icon `i-carbon-money`, navigating to `/pagesBank/insurance/claim/list` + +### Requirement: Audit List Insurance Shortcuts Removal + +The audit list page MUST NOT contain insurance shortcuts. + +#### Scenario: Remove insurance shortcuts from audit list + +**Given** the user is on the bank audit list page + +**When** the page loads + +**Then** the system SHALL NOT display the insurance actions section that was previously located above the audit list + diff --git a/openspec/specs/government-bad-loans/spec.md b/openspec/specs/government-bad-loans/spec.md new file mode 100644 index 0000000..1e1ef5a --- /dev/null +++ b/openspec/specs/government-bad-loans/spec.md @@ -0,0 +1,106 @@ +# government-bad-loans Specification + +## Purpose +TBD - created by archiving change integrate-insurance-flow. Update Purpose after archive. +## Requirements +### Requirement: 查看贷款信息 +政务端 SHALL 支持查看银行端的所有贷款信息,包括不良贷款。 + +#### Scenario: 查看贷款列表 +- **WHEN** 政务端用户访问贷款列表页面 +- **THEN** 系统 SHALL 显示所有银行的贷款信息 +- **AND** 每个贷款显示银行名称、客户姓名、贷款金额、贷款状态 + +#### Scenario: 识别不良贷款 +- **WHEN** 政务端用户查看贷款列表 +- **THEN** 系统 SHALL 标识不良贷款 +- **AND** 不良贷款 SHALL 显示特殊标识或颜色区分 + +#### Scenario: 筛选不良贷款 +- **WHEN** 政务端用户选择筛选条件 +- **THEN** 系统 SHALL 支持按贷款状态筛选 +- **AND** 支持单独查看不良贷款列表 + +### Requirement: 查看完整业务流程信息 +政务端 SHALL 支持查看完整的贷款业务流程信息。 + +#### Scenario: 查看用户信息 +- **WHEN** 政务端用户查看贷款详情 +- **THEN** 系统 SHALL 显示用户的基本信息 +- **AND** 包括姓名、身份证号、联系方式 + +#### Scenario: 查看贷款信息 +- **WHEN** 政务端用户查看贷款详情 +- **THEN** 系统 SHALL 显示贷款的完整信息 +- **AND** 包括贷款金额、贷款期限、贷款类型、贷款状态 + +#### Scenario: 查看保险信息 +- **WHEN** 政务端用户查看贷款详情 +- **AND** 该贷款购买了保险 +- **THEN** 系统 SHALL 显示保险相关信息 +- **AND** 包括保险公司、保险产品、保险金额、保险期限、保险单状态 + +#### Scenario: 查看投保申请记录 +- **WHEN** 政务端用户查看贷款详情 +- **AND** 该贷款有投保申请记录 +- **THEN** 系统 SHALL 显示投保申请的完整记录 +- **AND** 包括投保时间、核保结果、核保时间 + +#### Scenario: 查看理赔信息 +- **WHEN** 政务端用户查看贷款详情 +- **AND** 该贷款有理赔记录 +- **THEN** 系统 SHALL 显示理赔相关信息 +- **AND** 包括理赔申请时间、理赔金额、理赔审核结果、赔付金额 + +### Requirement: 查看审批流程记录 +政务端 SHALL 支持查看贷款相关的审批流程记录。 + +#### Scenario: 查看贷款审批记录 +- **WHEN** 政务端用户查看贷款详情 +- **THEN** 系统 SHALL 显示贷款审批的完整流程 +- **AND** 包括审批人、审批时间、审批结果、审批意见 + +#### Scenario: 查看保险核保记录 +- **WHEN** 政务端用户查看贷款详情 +- **AND** 该贷款有保险核保记录 +- **THEN** 系统 SHALL 显示保险核保的完整记录 +- **AND** 包括核保人、核保时间、核保结果、核保意见 + +#### Scenario: 查看理赔审核记录 +- **WHEN** 政务端用户查看贷款详情 +- **AND** 该贷款有理赔审核记录 +- **THEN** 系统 SHALL 显示理赔审核的完整记录 +- **AND** 包括审核人、审核时间、审核结果、审核意见 + +### Requirement: 不良贷款详情查看 +政务端 SHALL 支持查看不良贷款的详细信息。 + +#### Scenario: 查看不良贷款基本信息 +- **WHEN** 政务端用户点击不良贷款 +- **THEN** 系统 SHALL 显示不良贷款的基本信息 +- **AND** 包括逾期天数、逾期金额、当前状态 + +#### Scenario: 查看不良贷款保险情况 +- **WHEN** 政务端用户查看不良贷款详情 +- **AND** 该不良贷款购买了保险 +- **THEN** 系统 SHALL 显示保险情况 +- **AND** 包括是否已发起理赔、理赔状态、赔付金额 + +#### Scenario: 查看不良贷款处理记录 +- **WHEN** 政务端用户查看不良贷款详情 +- **THEN** 系统 SHALL 显示不良贷款的处理记录 +- **AND** 包括催收记录、理赔记录、处置记录 + +### Requirement: 按银行筛选贷款 +政务端 SHALL 支持按银行筛选贷款信息。 + +#### Scenario: 选择银行查看贷款 +- **WHEN** 政务端用户选择一个银行 +- **THEN** 系统 SHALL 显示该银行的所有贷款信息 +- **AND** 包括正常贷款和不良贷款 + +#### Scenario: 查看银行不良贷款统计 +- **WHEN** 政务端用户查看银行贷款信息 +- **THEN** 系统 SHALL 显示该银行的不良贷款统计 +- **AND** 包括不良贷款数量、不良贷款金额、不良贷款率 + diff --git a/openspec/specs/insurance-claim-review/spec.md b/openspec/specs/insurance-claim-review/spec.md new file mode 100644 index 0000000..bd66e81 --- /dev/null +++ b/openspec/specs/insurance-claim-review/spec.md @@ -0,0 +1,101 @@ +# insurance-claim-review Specification + +## Purpose +TBD - created by archiving change integrate-insurance-flow. Update Purpose after archive. +## Requirements +### Requirement: 接收理赔申请 +保险端 SHALL 接收银行端提交的理赔申请。 + +#### Scenario: 查看待理赔审核列表 +- **WHEN** 保险端理赔审核人员登录系统 +- **THEN** 系统 SHALL 显示待审核的理赔申请列表 +- **AND** 每个申请显示银行名称、保险单号、理赔金额、理赔原因 + +#### Scenario: 查看理赔申请详情 +- **WHEN** 保险端理赔审核人员点击理赔申请 +- **THEN** 系统 SHALL 显示理赔申请的完整信息 +- **AND** 包括银行信息、保险单信息、理赔金额、理赔原因 + +### Requirement: 查看理赔材料 +保险端 SHALL 支持理赔审核人员查看银行上传的理赔材料。 + +#### Scenario: 查看材料列表 +- **WHEN** 保险端理赔审核人员查看理赔申请详情 +- **THEN** 系统 SHALL 显示理赔材料列表 +- **AND** 每个材料显示文件名、文件类型、上传时间 + +#### Scenario: 下载和预览材料 +- **WHEN** 保险端理赔审核人员点击理赔材料 +- **THEN** 系统 SHALL 支持下载或预览材料 +- **AND** 支持常见的文件格式(图片、PDF、文档等) + +### Requirement: 理赔材料审核 +保险端 SHALL 支持理赔审核人员对材料进行审核。 + +#### Scenario: 审核通过 +- **WHEN** 保险端理赔审核人员审核理赔申请 +- **AND** 确认理赔材料完整且符合要求 +- **THEN** 系统 SHALL 允许审核人员选择"通过" +- **AND** 系统 SHALL 要求填写赔付金额 + +#### Scenario: 审核拒绝 +- **WHEN** 保险端理赔审核人员审核理赔申请 +- **AND** 发现理赔材料不完整或不符合要求 +- **THEN** 系统 SHALL 允许审核人员选择"拒绝" +- **AND** 系统 SHALL 要求填写拒绝原因 + +#### Scenario: 保存赔付金额 +- **WHEN** 保险端理赔审核人员审核通过理赔申请 +- **THEN** 系统 SHALL 保存赔付金额 +- **AND** 赔付金额 SHALL 返回给银行端 + +#### Scenario: 保存拒绝原因 +- **WHEN** 保险端理赔审核人员拒绝理赔申请 +- **THEN** 系统 SHALL 保存拒绝原因 +- **AND** 拒绝原因 SHALL 返回给银行端 + +### Requirement: 执行赔付 +保险端 SHALL 在理赔审核通过后执行赔付。 + +#### Scenario: 自动执行赔付 +- **WHEN** 理赔申请审核通过 +- **THEN** 系统 SHALL 自动执行赔付操作 +- **AND** 系统 SHALL 记录赔付日期和赔付金额 + +#### Scenario: 赔付结果通知 +- **WHEN** 赔付执行成功 +- **THEN** 系统 SHALL 将赔付结果通知银行端 +- **AND** 银行端 SHALL 能够查看赔付详情 + +### Requirement: 理赔审核历史记录 +保险端 SHALL 保存理赔审核历史记录,支持查询和追溯。 + +#### Scenario: 查看理赔审核历史 +- **WHEN** 保险端理赔审核人员查看已处理的理赔申请 +- **THEN** 系统 SHALL 显示理赔审核历史记录 +- **AND** 包括审核人员、审核时间、审核结果 + +#### Scenario: 查看拒绝原因历史 +- **WHEN** 保险端理赔审核人员查看已拒绝的理赔申请 +- **THEN** 系统 SHALL 显示拒绝原因 +- **AND** 支持查看详细的拒绝理由 + +### Requirement: 理赔审核模拟数据 +系统 SHALL 提供理赔审核的模拟数据以支持开发和测试。 + +#### Scenario: 模拟数据包含多种状态 +- **WHEN** 系统加载理赔审核模拟数据 +- **THEN** 数据 SHALL 包含待审核、已通过、已拒绝三种状态的理赔申请 +- **AND** 每种状态至少包含一条记录 + +#### Scenario: 模拟数据包含完整信息 +- **WHEN** 系统加载理赔审核模拟数据 +- **THEN** 每条记录 SHALL 包含理赔申请号、银行信息、保险单号、保险公司信息 +- **AND** 包含理赔金额、理赔原因、材料列表(文件名、文件类型、大小、上传时间) +- **AND** 包含申请时间、审核时间、审核人员、赔付金额、赔付日期、拒绝原因 + +#### Scenario: 模拟数据支持筛选 +- **WHEN** 保险端理赔审核人员按状态筛选理赔申请 +- **THEN** 系统 SHALL 返回对应状态的模拟数据 +- **AND** 支持待审核、已通过、已拒绝三种状态筛选 + diff --git a/openspec/specs/insurance-navigation/spec.md b/openspec/specs/insurance-navigation/spec.md new file mode 100644 index 0000000..6d5b2df --- /dev/null +++ b/openspec/specs/insurance-navigation/spec.md @@ -0,0 +1,142 @@ +# insurance-navigation Specification + +## Purpose +TBD - created by archiving change integrate-insurance-flow. Update Purpose after archive. +## Requirements +### Requirement: Insurance Application List Page + +The bank side MUST provide a dedicated page to list all insurance applications with search and pagination support. + +#### Scenario: Display insurance application list + +**Given** the user navigates to `/pagesBank/insurance/application/list` + +**When** the page loads + +**Then** the system SHALL display a list of all insurance applications with: +- Application ID +- Company name +- Product name +- Insurance amount +- Insurance term +- Status (pending/approved/rejected) +- Created timestamp +- Clickable items that navigate to application detail + +#### Scenario: Filter insurance applications by status + +**Given** the user is on the insurance application list page + +**When** the user selects a status filter (All, Pending, Approved, Rejected) + +**Then** the system SHALL display only applications matching the selected status + +#### Scenario: Search insurance applications + +**Given** the user is on the insurance application list page + +**When** the user enters a search term in the search box + +**Then** the system SHALL filter applications by: +- Application ID +- Company name +- Product name +- Policy number + +**And** display only matching applications in real-time + +#### Scenario: Paginate insurance applications + +**Given** the user is on the insurance application list page with more than 20 applications + +**When** the user scrolls to the bottom of the list + +**Then** the system SHALL load the next page of applications automatically + +**And** display a loading indicator while fetching + +### Requirement: Company and Product Selection Flow + +The audit detail page MUST support a multi-step navigation flow for selecting insurance company and product with search functionality. + +#### Scenario: Navigate from audit detail to company selection + +**Given** a loan application with status `DISBURSED` and no insurance + +**When** the user clicks "购买保险" button + +**Then** the system SHALL navigate to `/pagesBank/insurance/company/select` with parameters: +- `loanId`: The loan application ID +- `loanAmount`: The loan amount in yuan +- `loanTerm`: The loan term in months + +#### Scenario: Search and select insurance company + +**Given** the user is on the insurance company selection page + +**When** the user enters a search term in the search box + +**Then** the system SHALL filter companies by: +- Company name +- Contact information + +**And** display only matching companies in real-time + +#### Scenario: Select insurance company + +**Given** the user selects a company from the list + +**When** the selection is confirmed + +**Then** the system SHALL navigate to `/pagesBank/insurance/product/select` with parameters: +- `loanId`: The loan application ID +- `companyId`: The selected company ID +- `loanAmount`: The loan amount in yuan +- `loanTerm`: The loan term in months + +#### Scenario: Search and select insurance product + +**Given** the user is on the insurance product selection page + +**When** the user enters a search term in the search box + +**Then** the system SHALL filter products by: +- Product name +- Product description +- Product type + +**And** display only matching products in real-time + +#### Scenario: Select insurance product + +**Given** the user selects a product from the list + +**When** the selection is confirmed + +**Then** the system SHALL navigate to `/pagesBank/insurance/application/create` with parameters: +- `loanId`: The loan application ID +- `companyId`: The selected company ID +- `productId`: The selected product ID +- `loanAmount`: The loan amount in yuan +- `loanTerm`: The loan term in months + +### Requirement: Dashboard Shortcuts Navigation + +The dashboard shortcuts MUST navigate to the correct insurance management pages. + +#### Scenario: Navigate to insurance application list + +**Given** the user is on the bank dashboard + +**When** the user clicks the "投保管理" shortcut + +**Then** the system SHALL navigate to `/pagesBank/insurance/application/list` + +#### Scenario: Navigate to claim application list + +**Given** the user is on the bank dashboard + +**When** the user clicks the "理赔管理" shortcut + +**Then** the system SHALL navigate to `/pagesBank/insurance/claim/list` + diff --git a/openspec/specs/insurance-underwriting/spec.md b/openspec/specs/insurance-underwriting/spec.md new file mode 100644 index 0000000..052c9d3 --- /dev/null +++ b/openspec/specs/insurance-underwriting/spec.md @@ -0,0 +1,101 @@ +# insurance-underwriting Specification + +## Purpose +TBD - created by archiving change integrate-insurance-flow. Update Purpose after archive. +## Requirements +### Requirement: 接收投保申请 +保险端 SHALL 接收银行端提交的投保申请。 + +#### Scenario: 查看待核保申请列表 +- **WHEN** 保险端核保人员登录系统 +- **THEN** 系统 SHALL 显示待核保的投保申请列表 +- **AND** 每个申请显示银行名称、客户姓名、贷款金额、保险产品 + +#### Scenario: 查看投保申请详情 +- **WHEN** 保险端核保人员点击投保申请 +- **THEN** 系统 SHALL 显示投保申请的完整信息 +- **AND** 包括银行信息、客户信息、贷款信息、保险产品信息 + +### Requirement: 查看银行提供的信息 +保险端 SHALL 支持核保人员查看银行提供的客户情况和相关信息。 + +#### Scenario: 查看客户基本信息 +- **WHEN** 保险端核保人员查看投保申请详情 +- **THEN** 系统 SHALL 显示客户的基本信息 +- **AND** 包括姓名、身份证号、信用评分 + +#### Scenario: 查看贷款信息 +- **WHEN** 保险端核保人员查看投保申请详情 +- **THEN** 系统 SHALL 显示贷款相关信息 +- **AND** 包括贷款金额、贷款期限、贷款类型 + +#### Scenario: 查看银行评估信息 +- **WHEN** 保险端核保人员查看投保申请详情 +- **THEN** 系统 SHALL 显示银行对客户的评估信息 +- **AND** 包括银行的风险评估结果 + +### Requirement: 核保审核 +保险端 SHALL 支持核保人员进行承保条件审核。 + +#### Scenario: 核保通过 +- **WHEN** 保险端核保人员审核投保申请 +- **AND** 核保人员确认承保条件满足 +- **THEN** 系统 SHALL 允许核保人员选择"通过" +- **AND** 系统 SHALL 更新投保申请状态为"已通过" + +#### Scenario: 核保拒绝 +- **WHEN** 保险端核保人员审核投保申请 +- **AND** 核保人员发现承保条件不满足 +- **THEN** 系统 SHALL 允许核保人员选择"拒绝" +- **AND** 系统 SHALL 要求填写拒绝原因 + +#### Scenario: 保存拒绝原因 +- **WHEN** 保险端核保人员拒绝投保申请 +- **THEN** 系统 SHALL 保存拒绝原因 +- **AND** 拒绝原因 SHALL 返回给银行端 + +### Requirement: 出具保险单 +保险端 SHALL 在核保通过后出具保险单。 + +#### Scenario: 自动生成保险单 +- **WHEN** 投保申请核保通过 +- **THEN** 系统 SHALL 自动生成保险单 +- **AND** 保险单 SHALL 包含保单号、保险公司信息、被保险人信息、保险金额、保险期限 + +#### Scenario: 保险单发送给银行 +- **WHEN** 保险单生成成功 +- **THEN** 系统 SHALL 将保险单信息发送给银行端 +- **AND** 银行端 SHALL 能够查看保险单详情 + +### Requirement: 核保历史记录 +保险端 SHALL 保存核保历史记录,支持查询和追溯。 + +#### Scenario: 查看核保历史 +- **WHEN** 保险端核保人员查看已处理的投保申请 +- **THEN** 系统 SHALL 显示核保历史记录 +- **AND** 包括核保人员、核保时间、核保结果 + +#### Scenario: 查看拒绝原因历史 +- **WHEN** 保险端核保人员查看已拒绝的投保申请 +- **THEN** 系统 SHALL 显示拒绝原因 +- **AND** 支持查看详细的拒绝理由 + +### Requirement: 核保申请模拟数据 +系统 SHALL 提供核保申请的模拟数据以支持开发和测试。 + +#### Scenario: 模拟数据包含多种状态 +- **WHEN** 系统加载核保申请模拟数据 +- **THEN** 数据 SHALL 包含待审核、已通过、已拒绝三种状态的投保申请 +- **AND** 每种状态至少包含一条记录 + +#### Scenario: 模拟数据包含完整信息 +- **WHEN** 系统加载核保申请模拟数据 +- **THEN** 每条记录 SHALL 包含投保申请号、银行信息、保险公司信息、保险产品信息 +- **AND** 包含客户信息(姓名、身份证号、信用评分、贷款金额、贷款期限) +- **AND** 包含保险金额、保险期限、申请时间、审核时间、审核人员、拒绝原因 + +#### Scenario: 模拟数据支持筛选 +- **WHEN** 保险端核保人员按状态筛选投保申请 +- **THEN** 系统 SHALL 返回对应状态的模拟数据 +- **AND** 支持待审核、已通过、已拒绝三种状态筛选 +