hookehuyr

docs(plan): 添加多阶段提取方案设计文档

- 新增多阶段提取方案设计文档,辨析多阶段与多方案概念
- 添加客户资料示例(3岁小公主、37岁提取方案)
- 设计多阶段数据结构和组件架构
- 提供多方案实施建议(待客户确认需求)

关键内容:
- 多阶段提取:一个方案内的多个阶段(教育→创业→退休)
- 多方案:多个独立的备选方案(方案一、二、三)
- 组件设计:WithdrawalStagesEditor.vue
- Schema 配置和字段映射

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 +# 多阶段提取方案设计文档
2 +
3 +> **创建时间**: 2026-02-25
4 +> **状态**: ⏳ 待客户确认需求
5 +> **设计师**: Claude Code
6 +> **版本**: 1.1.0
7 +> **更新内容**: 新增需求说明章节,辨析多阶段与多方案概念
8 +
9 +---
10 +
11 +## 📋 目录
12 +
13 +1. [需求说明(待客户确认)](#需求说明待客户确认)
14 +2. [需求背景](#需求背景)
15 +3. [现状分析](#现状分析)
16 +4. [方案设计](#方案设计)
17 +5. [数据结构](#数据结构)
18 +6. [组件设计](#组件设计)
19 +7. [Schema 配置](#schema-配置)
20 +8. [字段映射](#字段映射)
21 +9. [多方案需求分析](#多方案需求分析)
22 +10. [实施清单](#实施清单)
23 +11. [待确认事项](#待确认事项)
24 +
25 +---
26 +
27 +## 📖 需求说明(待客户确认)
28 +
29 +> **重要说明**:以下是我们对客户资料的理解分析,**请客户确认实际需求**。
30 +
31 +### 概念辨析:多阶段 vs 多方案
32 +
33 +客户提供的资料中出现了两个容易混淆的概念,需要明确区分:
34 +
35 +#### 1️⃣ 多阶段提取(Multi-Stage Withdrawal)
36 +
37 +**定义****一个提取方案**中,包含**多个不同阶段**的提取计划。
38 +
39 +**示例**(3岁小公主 - 方案一):
40 +```
41 +同一个方案内的三个阶段:
42 +├─ 第一阶段:18-21岁,每年5万(教育基金)
43 +├─ 第二阶段:30岁,一笔过40万(创业金/婚嫁金)
44 +└─ 第三阶段:50-100岁,每年7万(退休养老年金)
45 +```
46 +
47 +**特点**
48 +- ✅ 这是一个方案
49 +- ✅ 包含多个提取阶段
50 +- ✅ 每个阶段针对不同人生阶段的需求
51 +
52 +#### 2️⃣ 多方案(Multiple Scenarios)
53 +
54 +**定义****同一份计划书**中,展示**多个备选提取方案**供客户选择。
55 +
56 +**示例**(3岁小公主 - 3个方案):
57 +```
58 +方案一:多阶段分时提取
59 + └─ 教育(18-21岁) + 创业(30岁) + 退休(50-100岁)
60 +
61 +方案二:长期定期提取
62 + └─ 9-100岁,每年1.75万
63 +
64 +方案三:财富传承
65 + └─ 不提取,展示保单价值增长表
66 +```
67 +
68 +**特点**
69 +- ✅ 这是三个独立的方案
70 +- ✅ 每个方案代表不同的提取策略
71 +- ✅ 客户可以在方案之间对比选择
72 +
73 +### 对比总结
74 +
75 +| 维度 | 多阶段 | 多方案 |
76 +|------|--------|--------|
77 +| **是什么** | 一个方案内的多个提取阶段 | 多个独立的备选方案 |
78 +| **为什么** | 满足不同人生阶段的资金需求 | 提供不同风险/收益的提取策略 |
79 +| **数据量** | 1个方案,3-5个阶段 | 3个方案,每个方案可能有多个阶段 |
80 +| **客户选择** | 无需选择,按阶段执行 | 客户需要选择采用哪个方案 |
81 +
82 +### 需要客户确认的问题
83 +
84 +#### 问题 1:是否需要多阶段提取?
85 +
86 +**说明**:是否需要在一个方案中设置多个提取阶段(如:教育→创业→退休)?
87 +
88 +- [ ] 是,需要多阶段提取
89 +- [ ] 否,每个方案只需要一种提取方式
90 +
91 +#### 问题 2:是否需要多方案?
92 +
93 +**说明**:是否需要在同一份计划书中展示多个备选方案供客户选择?
94 +
95 +- [ ] 是,需要多方案对比(如:保守方案 vs 积极方案 vs 传承方案)
96 +- [ ] 否,每个客户只需要一个方案
97 +
98 +#### 问题 3:实施方案选择
99 +
100 +如果需要多方案,请选择实施方案:
101 +
102 +**选项 A:单次提交,多方案对比**
103 +- 优点:一次性输入多个方案,计划书可直接对比展示
104 +- 缺点:需要后端改动支持,开发周期较长
105 +
106 +**选项 B:多次提交,分别生成**(推荐)
107 +- 优点:复用现有逻辑,无需后端改动,快速上线
108 +- 缺点:每个方案单独生成,需要人工对比
109 +
110 +**选项 C:混合方案**
111 +- 第一阶段:先实现选项B(快速上线)
112 +- 第二阶段:再升级为选项A(完整体验)
113 +
114 +---
115 +
116 +## 需求背景
117 +
118 +### 客户文档中的提取方案
119 +
120 +根据客户提供的储蓄类保险文档,提取方案主要分为三种模式:
121 +
122 +| 模式 | 描述 | 示例 |
123 +|------|------|------|
124 +| **模式 A:分阶段提取** | 多个不同年龄段提取不同金额 | 18-21岁教育基金 + 30岁创业金 + 50-100岁退休金 |
125 +| **模式 B:定期定额** | 从某年龄开始每年固定金额 | 43-100岁每年3.75万美金 |
126 +| **模式 C:一笔过/传承** | 在特定年龄一次性全额提取("一笔过"=一次性提取) | 30岁一次性提取40万(创业金/婚嫁金) |
127 +
128 +### 核心差异
129 +
130 +**现有系统**:仅支持单阶段定期提取
131 +
132 +**客户需求**:支持多阶段分时提取(教育+创业+退休组合)
133 +
134 +---
135 +
136 +## 现状分析
137 +
138 +### 现有系统字段
139 +
140 +```javascript
141 +// 单阶段提取字段
142 +withdrawal_enabled: '是' | '否'
143 +withdrawal_mode: '指定提取金额' | '最高固定提取金额'
144 +withdrawal_method: '按年岁'
145 +withdrawal_start_age: 18
146 +withdrawal_period: '10年'
147 +annual_withdrawal_amount: 50000
148 +annual_increase_percentage: 5
149 +```
150 +
151 +### 支持情况对比
152 +
153 +| 提取模式 | 现有系统支持 | 匹配度 |
154 +|---------|-------------|--------|
155 +| 模式 A:分阶段提取 | ❌ 不支持 | 0% |
156 +| 模式 B:定期定额 | ✅ 完全支持 | 100% |
157 +| 模式 C:一笔过(一次性提取) | ⚠️ 部分支持(需手动设置开始=结束年龄) | 50% |
158 +
159 +---
160 +
161 +## 方案设计
162 +
163 +### 核心思路
164 +
165 +**提取模式二选一**
166 +1. **单阶段定期提取**(现有逻辑)- 退休年金计划
167 +2. **多阶段分时提取**(新增)- 教育+创业+退休组合
168 +
169 +### 设计原则
170 +
171 +-**向后兼容**:不影响现有单阶段提取功能
172 +-**纯前端实现**:不依赖后端改动
173 +-**用户友好**:提供预设方案快速填充
174 +-**灵活扩展**:支持1-5个阶段自定义
175 +
176 +---
177 +
178 +## 数据结构
179 +
180 +### 表单数据结构
181 +
182 +```javascript
183 +formData = {
184 + // ========== 基础字段(不变) ==========
185 + customer_name: '张三',
186 + gender: '男',
187 + birthday: '1990-01-01',
188 + smoker: '否',
189 + age: 30,
190 + coverage: 50000,
191 + payment_period: '5 年',
192 +
193 + // ========== 提取计划入口字段 ==========
194 + withdrawal_enabled: '是',
195 + withdrawal_mode: '多阶段分时提取', // '单阶段定期提取' | '多阶段分时提取'
196 +
197 + // ========== 单阶段提取字段(现有逻辑复用) ==========
198 + withdrawal_method: '按年岁',
199 + withdrawal_start_age_single: 60,
200 + withdrawal_period_single: '10年',
201 + annual_withdrawal_amount_single: 30000,
202 + annual_increase_percentage: 5,
203 +
204 + // ========== 多阶段提取字段(新增) ==========
205 + withdrawal_stages: [
206 + {
207 + stage_id: 1,
208 + stage_name: '教育基金', // 阶段名称
209 + start_age: 18, // 开始年龄
210 + end_age: 21, // 结束年龄(开始=结束表示一笔过)
211 + withdrawal_type: '每年提取', // '每年提取' | '一笔过'
212 + annual_amount: 50000, // 每年金额
213 + lump_sum_amount: null, // 一笔过金额
214 + increase_rate: null // 递增百分比(可选)
215 + },
216 + {
217 + stage_id: 2,
218 + stage_name: '创业金/婚嫁金',
219 + start_age: 30,
220 + end_age: 30, // 开始=结束表示一笔过
221 + withdrawal_type: '一笔过',
222 + annual_amount: null,
223 + lump_sum_amount: 400000,
224 + increase_rate: null
225 + },
226 + {
227 + stage_id: 3,
228 + stage_name: '退休养老年金',
229 + start_age: 50,
230 + end_age: 100,
231 + withdrawal_type: '每年提取',
232 + annual_amount: 70000,
233 + lump_sum_amount: null,
234 + increase_rate: null
235 + }
236 + ]
237 +}
238 +```
239 +
240 +### 字段说明
241 +
242 +| 字段 | 类型 | 说明 | 示例 |
243 +|------|------|------|------|
244 +| `stage_id` | Number | 阶段唯一标识 | Date.now() |
245 +| `stage_name` | String | 阶段名称 | "教育基金" |
246 +| `start_age` | Number | 开始年龄 | 18 |
247 +| `end_age` | Number | 结束年龄 | 21 |
248 +| `withdrawal_type` | String | 提取方式 | "每年提取" / "一笔过" |
249 +| `annual_amount` | Number | 每年金额(分) | 5000000 |
250 +| `lump_sum_amount` | Number | 一笔过金额(分) | 40000000 |
251 +| `increase_rate` | String | 递增百分比 | "5" |
252 +
253 +### 提取方式说明
254 +
255 +**"一笔过"** = **一次性提取**
256 +
257 +- 客户术语"一笔过"即"一次性提取"的意思
258 +- 当选择"一笔过"时,用户只需输入开始年龄,无需输入结束年龄
259 +- 示例:30岁一次性提取40万(创业金/婚嫁金)
260 +- 数据表示:`start_age = 30, end_age = 30, withdrawal_type = '一笔过'`
261 +
262 +**"每年提取"** = **分期定期提取**
263 +
264 +- 在指定年龄段内,每年固定提取一定金额
265 +- 示例:18-21岁每年提取5万(教育基金,共4年)
266 +- 数据表示:`start_age = 18, end_age = 21, withdrawal_type = '每年提取'`
267 +
268 +---
269 +
270 +## 组件设计
271 +
272 +### 新增组件:WithdrawalStagesEditor.vue
273 +
274 +**文件位置**`src/components/plan/PlanFields/WithdrawalStagesEditor.vue`
275 +
276 +**功能描述**
277 +- 多阶段提取计划编辑器
278 +- 支持添加/删除阶段(1-5个)
279 +- 可折叠卡片展示
280 +- 预设方案快速填充
281 +
282 +**组件结构**
283 +
284 +```
285 +WithdrawalStagesEditor
286 + ├── 阶段卡片列表(v-for)
287 + │ ├── 阶段头部(可点击折叠)
288 + │ │ ├── 阶段标题
289 + │ │ └── 折叠图标
290 + │ └── 阶段内容
291 + │ ├── 阶段名称输入
292 + │ ├── 开始年龄选择器
293 + │ ├── 结束年龄选择器(一笔过时隐藏)
294 + │ ├── 提取方式单选(每年/一笔过)
295 + │ ├── 每年金额输入(每年提取时显示)
296 + │ ├── 一笔过金额输入(一笔过时显示)
297 + │ ├── 递增百分比输入(可选)
298 + │ └── 删除按钮(至少保留1个)
299 + ├── 添加阶段按钮(<5个时显示)
300 + └── 快速填充预设方案
301 + ├── 教育+创业+退休
302 + ├── 退休年金
303 + └── 财富传承
304 +```
305 +
306 +**组件接口**
307 +
308 +```javascript
309 +// Props
310 +props: {
311 + modelValue: {
312 + type: Array,
313 + default: () => []
314 + },
315 + currency: {
316 + type: String,
317 + default: 'USD'
318 + }
319 +}
320 +
321 +// Events
322 +emits: ['update:modelValue']
323 +
324 +// 预设方案模板
325 +presetTemplates = [
326 + {
327 + id: 'education_marriage_retirement',
328 + name: '教育+创业+退休',
329 + stages: [
330 + { stage_name: '教育基金', start_age: 18, end_age: 21, ... },
331 + { stage_name: '创业金/婚嫁金', start_age: 30, end_age: 30, ... },
332 + { stage_name: '退休养老年金', start_age: 50, end_age: 100, ... }
333 + ]
334 + }
335 +]
336 +```
337 +
338 +---
339 +
340 +## Schema 配置
341 +
342 +### 配置文件位置
343 +
344 +`src/config/plan-templates.js`
345 +
346 +### Schema 扩展
347 +
348 +```javascript
349 +const savingsFormSchema = {
350 + base_fields: [
351 + // ... 现有基础字段
352 + ],
353 +
354 + withdrawal_fields: [
355 + // === 入口字段(是否启用提取) ===
356 + {
357 + id: 'withdrawal_enabled',
358 + key: 'withdrawal_enabled',
359 + type: 'radio',
360 + label: '是否希望生成一份允许减少名义金额的提取说明?',
361 + options: ['是', '否'],
362 + required: true,
363 + default: '否'
364 + },
365 +
366 + // === 提取模式选择(二选一) ===
367 + {
368 + id: 'withdrawal_mode',
369 + key: 'withdrawal_mode',
370 + type: 'radio',
371 + label: '提取模式',
372 + options: ['单阶段定期提取', '多阶段分时提取'],
373 + required: true,
374 + default: '单阶段定期提取',
375 + section_title: '款项提取(允许减少名义金额)',
376 + show_when: { field: 'withdrawal_enabled', op: 'eq', value: '是' },
377 + clear_when_hidden: true
378 + },
379 +
380 + // ========== 单阶段字段(现有逻辑) ==========
381 + {
382 + id: 'withdrawal_method',
383 + key: 'withdrawal_method',
384 + type: 'radio',
385 + label: '提取方式',
386 + options: ['按年岁'],
387 + required: true,
388 + default: '按年岁',
389 + show_when: {
390 + op: 'AND',
391 + conditions: [
392 + { field: 'withdrawal_enabled', op: 'eq', value: '是' },
393 + { field: 'withdrawal_mode', op: 'eq', value: '单阶段定期提取' }
394 + ]
395 + },
396 + clear_when_hidden: true
397 + },
398 + {
399 + id: 'withdrawal_start_age_single',
400 + key: 'withdrawal_start_age_single',
401 + type: 'age',
402 + label: '由几岁开始',
403 + placeholder: '请输入开始提取年龄',
404 + required: true,
405 + show_when: {
406 + op: 'AND',
407 + conditions: [
408 + { field: 'withdrawal_enabled', op: 'eq', value: '是' },
409 + { field: 'withdrawal_mode', op: 'eq', value: '单阶段定期提取' }
410 + ]
411 + },
412 + clear_when_hidden: true
413 + },
414 + {
415 + id: 'withdrawal_period_single',
416 + key: 'withdrawal_period_single',
417 + type: 'select',
418 + label: '提取期(年)',
419 + placeholder: '请选择提取期',
420 + required: true,
421 + options_from: 'withdrawal_plan.withdrawal_periods',
422 + show_when: {
423 + op: 'AND',
424 + conditions: [
425 + { field: 'withdrawal_enabled', op: 'eq', value: '是' },
426 + { field: 'withdrawal_mode', op: 'eq', value: '单阶段定期提取' }
427 + ]
428 + },
429 + clear_when_hidden: true
430 + },
431 + {
432 + id: 'annual_withdrawal_amount_single',
433 + key: 'annual_withdrawal_amount_single',
434 + type: 'amount',
435 + label: '每年提取金额',
436 + placeholder: '请输入每年提取金额',
437 + input_label: '请输入每年提取金额',
438 + required: true,
439 + currency_from: 'withdrawal_plan.default_currency',
440 + show_when: {
441 + op: 'AND',
442 + conditions: [
443 + { field: 'withdrawal_enabled', op: 'eq', value: '是' },
444 + { field: 'withdrawal_mode', op: 'eq', value: '单阶段定期提取' }
445 + ]
446 + },
447 + clear_when_hidden: true
448 + },
449 + {
450 + id: 'annual_increase_percentage',
451 + key: 'annual_increase_percentage',
452 + type: 'percentage',
453 + label: '每年递增提取之百分比(%)',
454 + placeholder: '请输入递增百分比',
455 + required: false,
456 + show_when: {
457 + op: 'AND',
458 + conditions: [
459 + { field: 'withdrawal_enabled', op: 'eq', value: '是' },
460 + { field: 'withdrawal_mode', op: 'eq', value: '单阶段定期提取' }
461 + ]
462 + },
463 + clear_when_hidden: true
464 + },
465 +
466 + // ========== 多阶段字段(新增) ==========
467 + {
468 + id: 'withdrawal_stages',
469 + key: 'withdrawal_stages',
470 + type: 'multi_stage',
471 + label: '分阶段提取计划',
472 + required: true,
473 + show_when: {
474 + op: 'AND',
475 + conditions: [
476 + { field: 'withdrawal_enabled', op: 'eq', value: '是' },
477 + { field: 'withdrawal_mode', op: 'eq', value: '多阶段分时提取' }
478 + ]
479 + },
480 + clear_when_hidden: true
481 + }
482 + ]
483 +}
484 +```
485 +
486 +---
487 +
488 +## 字段映射
489 +
490 +### API 提交映射
491 +
492 +```javascript
493 +const savingsSubmitMapping = {
494 + ...baseSubmitMapping,
495 +
496 + // 提取计划入口
497 + withdrawal_enabled: { api_field: 'allow_reduce_amount' },
498 + withdrawal_mode: { api_field: 'withdrawal_mode' }, // 'single' | 'multi'
499 +
500 + // 单阶段字段映射
501 + withdrawal_method: { api_field: 'withdrawal_method' },
502 + withdrawal_start_age_single: { api_field: 'withdrawal_start_age' },
503 + withdrawal_period_single: { api_field: 'withdrawal_period' },
504 + annual_withdrawal_amount_single: {
505 + api_field: 'annual_withdrawal_amount',
506 + transform: 'fen_to_yuan'
507 + },
508 + annual_increase_percentage: { api_field: 'annual_increase_percentage' },
509 +
510 + // 多阶段字段映射(新增)
511 + withdrawal_stages: {
512 + api_field: 'withdrawal_stages_json',
513 + transform: (value) => {
514 + // 将数组转为 JSON 字符串提交
515 + return JSON.stringify(value.map(stage => ({
516 + stage_name: stage.stage_name,
517 + start_age: stage.start_age,
518 + end_age: stage.end_age,
519 + withdrawal_type: stage.withdrawal_type,
520 + annual_amount: stage.annual_amount ? stage.annual_amount / 100 : null, // 分转元
521 + lump_sum_amount: stage.lump_sum_amount ? stage.lump_sum_amount / 100 : null,
522 + increase_rate: stage.increase_rate
523 + })))
524 + }
525 + }
526 +}
527 +```
528 +
529 +---
530 +
531 +## 实施清单
532 +
533 +### 开发任务
534 +
535 +| 序号 | 任务 | 文件 | 工作量 |
536 +|------|------|------|--------|
537 +| 1 | 创建多阶段编辑器组件 | `src/components/plan/PlanFields/WithdrawalStagesEditor.vue` | 2-3小时 |
538 +| 2 | 更新 Schema 配置 | `src/config/plan-templates.js` | 30分钟 |
539 +| 3 | 注册新组件类型 | `src/components/plan/PlanTemplates/SavingsTemplate.vue` | 15分钟 |
540 +| 4 | 更新字段映射 | `src/config/plan-templates.js` | 15分钟 |
541 +| 5 | 表单校验逻辑 | `SavingsTemplate.vue` validate() | 30分钟 |
542 +| 6 | 测试调试 | - | 1小时 |
543 +
544 +**总工作量**:约 4-5 小时
545 +
546 +### 组件代码框架
547 +
548 +```vue
549 +<!-- WithdrawalStagesEditor.vue -->
550 +<template>
551 + <div class="withdrawal-stages-editor">
552 + <!-- 阶段卡片列表 -->
553 + <div v-for="(stage, index) in stages" :key="stage.stage_id" class="stage-card">
554 + <div class="stage-header" @click="toggleCollapse(index)">
555 + <span class="stage-title">阶段 {{ index + 1 }}: {{ stage.stage_name || '未命名' }}</span>
556 + <span class="collapse-icon">{{ collapsed[index] ? '▼' : '▲' }}</span>
557 + </div>
558 +
559 + <div v-show="!collapsed[index]" class="stage-content">
560 + <!-- 阶段名称 -->
561 + <nut-input v-model="stage.stage_name" label="阶段名称" placeholder="如:教育基金、创业金" />
562 +
563 + <!-- 开始/结束年龄 -->
564 + <PlanFieldAgePicker v-model="stage.start_age" label="开始年龄" :required="true" />
565 + <PlanFieldAgePicker v-if="stage.withdrawal_type !== '一笔过'" v-model="stage.end_age" label="结束年龄" :required="true" />
566 +
567 + <!-- 提取方式 -->
568 + <PlanFieldRadio v-model="stage.withdrawal_type" label="提取方式" :options="['每年提取', '一笔过']" :required="true" />
569 +
570 + <!-- 金额输入 -->
571 + <PlanFieldAmount v-if="stage.withdrawal_type === '每年提取'" v-model="stage.annual_amount" label="每年提取金额" :currency="currency" :required="true" />
572 + <PlanFieldAmount v-if="stage.withdrawal_type === '一笔过'" v-model="stage.lump_sum_amount" label="提取金额" :currency="currency" :required="true" />
573 +
574 + <!-- 删除按钮 -->
575 + <nut-button v-if="stages.length > 1" type="danger" size="small" @click="removeStage(index)">
576 + 删除此阶段
577 + </nut-button>
578 + </div>
579 + </div>
580 +
581 + <!-- 添加阶段按钮 -->
582 + <nut-button v-if="stages.length < 5" type="primary" block @click="addStage">
583 + + 添加提取阶段
584 + </nut-button>
585 +
586 + <!-- 快速填充 -->
587 + <div class="preset-templates">
588 + <div class="text-sm text-gray-700 mb-2">快速填充:</div>
589 + <nut-button v-for="template in presetTemplates" :key="template.id" size="small" @click="applyTemplate(template)">
590 + {{ template.name }}
591 + </nut-button>
592 + </div>
593 + </div>
594 +</template>
595 +```
596 +
597 +---
598 +
599 +## 多方案需求分析
600 +
601 +> **说明**:如果客户确认需要多方案功能,以下是技术实施建议。
602 +
603 +### 现有系统能力评估
604 +
605 +| 功能 | 现有支持 | 客户需求 | 差距 |
606 +|------|---------|---------|------|
607 +| 单个提取方案 | ✅ 完全支持 | ✅ 需要 | 无 |
608 +| 多阶段分时提取 | ❌ 不支持 | ✅ 需要 | 本文档已设计方案 |
609 +| **多个提取方案** | ❌ 不支持 | ⏳ 待确认 | **需确认后设计** |
610 +
611 +### 多方案架构设计建议
612 +```javascript
613 +formData = {
614 + // ... 基础字段
615 +
616 + withdrawal_enabled: '是',
617 +
618 + // 多方案模式
619 + withdrawal_scenarios: [
620 + {
621 + scenario_id: 1,
622 + scenario_name: '方案一:教育+创业+退休',
623 + withdrawal_mode: '多阶段分时提取',
624 + withdrawal_stages: [
625 + { stage_name: '教育基金', start_age: 18, end_age: 21, withdrawal_type: '每年提取', annual_amount: 50000 },
626 + { stage_name: '创业金', start_age: 30, end_age: 30, withdrawal_type: '一笔过', lump_sum_amount: 400000 },
627 + { stage_name: '退休金', start_age: 50, end_age: 100, withdrawal_type: '每年提取', annual_amount: 70000 }
628 + ]
629 + },
630 + {
631 + scenario_id: 2,
632 + scenario_name: '方案二:长期年金',
633 + withdrawal_mode: '单阶段定期提取',
634 + withdrawal_start_age: 9,
635 + withdrawal_period: 92, // 9-100岁
636 + annual_withdrawal_amount: 17500
637 + },
638 + {
639 + scenario_id: 3,
640 + scenario_name: '方案三:财富传承',
641 + withdrawal_mode: '不提取',
642 + withdrawal_stages: []
643 + }
644 + ]
645 +}
646 +```
647 +
648 +#### 方案 B:多次提交,分别生成方案(推荐)
649 +
650 +**优点**
651 +- ✅ 表单简单,复用现有逻辑
652 +- ✅ 无需后端改动
653 +- ✅ 用户可灵活组合不同方案
654 +
655 +**缺点**
656 +- ❌ 每个方案单独生成,无法直接对比
657 +- ❌ 用户需要多次操作
658 +
659 +**用户流程**
660 +```
661 +用户填写方案一 → 提交 → 生成计划书1(方案一)
662 +
663 +用户点击"添加方案" → 填写方案二 → 提交 → 生成计划书2(方案二)
664 +
665 +用户点击"添加方案" → 填写方案三 → 提交 → 生成计划书3(方案三)
666 +
667 +计划书列表展示 3 个方案,用户可选择查看/分享
668 +```
669 +
670 +#### 方案 C:混合方案(最佳用户体验)
671 +
672 +**第一阶段**:快速实现
673 +- 支持多次提交(方案B)
674 +- 在计划书列表页添加"同一客户的多个方案"分组展示
675 +
676 +**第二阶段**:完整方案
677 +- 支持单次提交多方案(方案A)
678 +- 计划书生成后可展示方案对比表格
679 +
680 +### 实施建议
681 +
682 +#### 短期(MVP)
683 +1. **实现多阶段提取**(本文档原有方案)
684 +2. **支持多次提交不同方案**
685 + - 在计划书列表中按客户/产品分组
686 + - 允许用户快速复制已有方案创建新方案
687 +
688 +#### 中期(完整多方案)
689 +1. **改造表单支持多方案**
690 + - 添加"方案管理"组件
691 + - 支持添加/删除/切换方案
692 +2. **后端支持多方案数据结构**
693 + - 新增 `withdrawal_scenarios_json` 字段
694 +3. **计划书生成支持方案对比**
695 +
696 +#### 技术架构调整
697 +
698 +```javascript
699 +// 数据结构扩展
700 +formData = {
701 + // ... 基础字段
702 +
703 + // 新增:方案模式
704 + scenario_mode: 'single' | 'multiple', // 单方案 | 多方案
705 +
706 + // 单方案模式(现有逻辑复用)
707 + withdrawal_enabled: '是',
708 + withdrawal_mode: '单阶段定期提取' | '多阶段分时提取',
709 + // ... 单方案字段
710 +
711 + // 多方案模式(新增)
712 + withdrawal_scenarios: [
713 + {
714 + scenario_id: Date.now(),
715 + scenario_name: '方案一',
716 + withdrawal_mode: '多阶段分时提取',
717 + withdrawal_stages: [...]
718 + },
719 + {
720 + scenario_id: Date.now() + 1,
721 + scenario_name: '方案二',
722 + withdrawal_mode: '单阶段定期提取',
723 + // ... 单方案字段
724 + }
725 + ]
726 +}
727 +```
728 +
729 +---
730 +
731 +## 待确认事项
732 +
733 +### 与客户确认
734 +
735 +#### 多阶段提取功能
736 +- [ ] 确认是否需要"多阶段分时提取"功能
737 +- [ ] 确认最多支持多少个阶段(设计方案:1-5个)
738 +- [ ] 确认预设方案是否满足需求(教育+创业+退休、退休年金、财富传承)
739 +- [ ] 确认后端是否能够接收 `withdrawal_stages_json` 字段
740 +- [ ] 确认多阶段提取的计划书生成方式
741 +
742 +#### 多方案功能(重要)
743 +- [ ] **确认是否需要在一个计划书中展示多个提取方案**
744 +- [ ] 确认方案数量上限(客户资料中显示3个方案)
745 +- [ ] 确认实施方案:
746 + - **方案A**:单次提交多方案(需要后端改动)
747 + - **方案B**:多次提交不同方案(快速实现,无需后端改动)
748 + - **方案C**:混合方案(先B后A)
749 +- [ ] 确认后端是否能够接收 `withdrawal_scenarios_json` 字段
750 +
751 +### 技术细节
752 +
753 +- [ ] 确认一笔过提取时的年龄表示方式(start_age = end_age)
754 +- [ ] 确认金额单位(前端:分,后端:元)
755 +- [ ] 确认阶段数量上限(设计方案:5个)
756 +- [ ] 确认多方案UI交互设计(Tab切换?卡片列表?)
757 +
758 +---
759 +
760 +## 附录
761 +
762 +### 客户文档提取方案参考
763 +
764 +**方案一(3岁小公主)**
765 +```
766 +18-21岁:每年 5万(教育基金)
767 +30岁:一笔过 40万(创业金/婚嫁金)← "一笔过" = 一次性提取
768 +50-100岁:每年 7万(退休养老年金)
769 +```
770 +
771 +> **术语说明**:"一笔过"是客户使用的术语,等同于"一次性提取",即在特定年龄一次性全额提取保单价值,而非分期提取。
772 +
773 +**方案二(37岁)**
774 +```
775 +43-100岁:每年 3.75万(退休年金)
776 +```
777 +
778 +**方案三(财富传承)**
779 +```
780 +不填写提取计划,展示保单价值增长表
781 +```
782 +
783 +### 现有系统架构参考
784 +
785 +- 配置文件:`src/config/plan-templates.js`
786 +- 模板组件:`src/components/plan/PlanTemplates/SavingsTemplate.vue`
787 +- 字段组件:`src/components/plan/PlanFields/`
788 +- 架构文档:`docs/plan/plan-entry-architecture.md`
789 +- Schema 规范:`docs/plan/plan-config-schema-reference.md`
790 +
791 +---
792 +
793 +**文档版本**: 1.0.0
794 +**最后更新**: 2026-02-25
No preview for this file type
1 +# Infinity Team 储蓄保障计划解析
2 +
3 +**核心标语**:短期供款 富过三代
4 +
5 +## 一、基础投保信息
6 +
7 +| 项目 | 详情 |
8 +| -------------- | ------------------------------------------------------------ |
9 +| 投保年龄 | 37 岁 |
10 +| 供款模式 | 5 年供款 |
11 +| 基础年供款 | 25 万美元 |
12 +| 5 年实际总成本 | 119.5 万美元 |
13 +| 折扣优惠 | 1. 首年折扣 12%,优惠后年付 22 万美元2. 第二年折扣 10%,优惠后年付 22.5 万美元 |
14 +
15 +## 二、计划核心价值
16 +
17 +建立终身储蓄户口,给自己一份保障,送给孩子一份终身的礼物。
18 +
19 +> 提取规则:可按照预设方案提取,也可根据自身需求自定义设置提取方式。
20 +
21 +## 三、预设提取方案
22 +
23 +### 方案一:退休年金计划(保单第 6 年开始每年领取)
24 +
25 +- **领取年龄**:43 岁至 100 岁
26 +- **年领取金额**:37,500 美元(约 63 万人民币)
27 +- **领取时长**:58 年
28 +- **累计提取总额**:507.5 万美金(约 3,654 万人民币)
29 +- **账户余额**:领取至 120 岁退保,户口还剩 2,630,328 美金(约 1,701.6 万人民币),可继续滚利或选择一笔过提取
30 +
31 +### 方案二:退休年金计划(保单第 11 年开始每年领取)
32 +
33 +- **领取年龄**:48 岁至 100 岁
34 +- **年领取金额**:125,000 美金(人民币 90 万元)
35 +- **领取时长**:53 年
36 +- **累计提取总额**:662.5 万美金(人民币 4,770 万元)
37 +- **账户余额**:提取到 100 岁后,户口还剩 2,530,328 美金(人民币 1,822 万元),可继续滚利或选择一笔过提取
38 +
39 +### 方案三:财富传承
40 +
41 +- **提取方式**:可分阶段提取、退休时一笔过取回,或传承至下一代
42 +
43 +- **保单价值增长明细**
44 +
45 + | 保单年度 | 对应年龄 | 保单价值(美金) | 保单价值(人民币) |
46 + | -------- | -------- | ---------------- | ------------------ |
47 + | 第 10 年 | 47 岁 | 1,751,745 | 1,261.3 万元 |
48 + | 第 20 年 | 57 岁 | 3,371,466 | 2,427.5 万元 |
49 + | 第 30 年 | 67 岁 | 6,516,859 | 4,692.1 万元 |
50 + | 第 40 年 | 77 岁 | 12,929,864 | 9,309.5 万元 |
51 + | 第 63 年 | 100 岁 | 72,613,466 | 5 亿 2,281.6 万元 |
52 +
53 +
54 +
55 +- **总回报**:扣除本金后,总回报高达 7,141.9 万美金!
...\ No newline at end of file ...\ No newline at end of file
1 +# 短期供款 富过三代
2 +
3 +## 3 岁小公主
4 +
5 +- 每年供款:**5 万美金**
6 +
7 +- 5 年存:**25 万美金**
8 +
9 +- 实际应付本金:**24.4 万美金**
10 +
11 + - 首年折扣 8%,优惠后只需付 **46,000 美金**
12 + - 第二年折扣 4%,优惠后只需付 **48,000 美金**
13 +
14 +
15 +
16 +> 建立终身储蓄户口,送给孩子一份终身的礼物
17 +
18 +------
19 +
20 +## 建议提取方案一:在通货膨胀的影响下,不同时期的财富规划
21 +
22 +### 第一笔:教育基金
23 +
24 +18 岁到 21 岁时,每年领取 **5 万** 美元,连续 4 年,共提取 **20 万美元**,作为教育基金。
25 +
26 +### 第二笔:创业金 / 婚嫁金
27 +
28 +到 30 岁时,可一笔过提取 **40 万** 美金,作为创业金或婚嫁金。
29 +
30 +### 第三笔:退休养老年金
31 +
32 +50 岁至 100 岁时,每年提取 **7 万** 美元作为退休养老年金,51 年共提取 **357 万美元**,享受精彩人生。
33 +
34 +> 提取到 100 岁后,户口还剩 **9,110,787 美元** 继续滚利息,也可选择一笔过提取。
35 +
36 +------
37 +
38 +## 建议提取方案二:
39 +
40 +从保单第 6 个保单年度开始,9 岁至 100 岁,每年提取 **17,500 美金 / 约 12.5 万人民币**,作为生活基金及养老金。
41 +
42 +- 92 年共提取 **161 万美金 / 约 1,151 万人民币**,享受精彩人生。
43 +
44 +> 提取到 100 岁后,户口还剩 **3,374,469 美金 / 约 2,412 万人民币** 继续滚利息,也可选择一笔过提取。
45 +
46 +------
47 +
48 +## 建议提取方案三:财富传承
49 +
50 +可以选择不分阶段提取,在退休时可一笔过取回,或传承至下一代:
51 +
52 +- 保单第 20 年年度时,户口剩余现金价值为 **716,025 美元**
53 +- 保单第 30 年年度时,户口剩余现金价值为 **1,303,372 美元**
54 +- 保单第 40 年年度时,户口剩余现金价值为 **2,585,973 美元**
55 +- 保单第 50 年年度时,户口剩余现金价值为 **5,157,533 美元**
56 +- 保单第 60 年年度时,户口剩余现金价值为 **9,681,398 美元**
57 +- 100 岁时,户口剩余现金价值为 **99,511,576 美元**
...\ No newline at end of file ...\ No newline at end of file
1 +# 宏挚传承保障计划 - 1 岁宝宝
2 +
3 +**保证红利守护财富,提升长远储蓄潜力。**
4 +
5 +- 每年存 **100 万美金**,存 5 年
6 +- 5 年存 **500 万美金**(实际应付本金 **480 万美金**
7 +- 首年折扣 **12%**,优惠后只需支付 **880,000 美金**
8 +- 第二年折扣 **8%**,优惠后只需支付 **920,000 美金**
9 +
10 +------
11 +
12 +## 产品特点
13 +
14 +- **保单分拆选项**
15 +- **保单承继人功能**(连保单暂托选项)
16 +- **安枕无忧服务**
17 +- **多达 7 种保单货币转换选择**(七种货币选项,迎合您未来发展)
18 +- **更改受保人选项及后备受保人选项**
19 +
20 +------
21 +
22 +可按照以下建议方案提取,也可按照自己需求设置提取方案
23 +
24 +------
25 +
26 +## 假设提取方案 1
27 +
28 +在通货膨胀的影响下,不同的时期财富规划
29 +
30 +### 第一笔:教育基金
31 +
32 +18 岁到 22 岁时,每年领取 **70 万美元**,连续 5 年,共提取 **350 万美元**,作为教育基金。
33 +
34 +### 第二笔:创业金或婚嫁金
35 +
36 +到 30 岁,可一笔过提取 **1,200 万美元**,作为创业金或婚嫁金。
37 +
38 +### 第三笔:每年环游世界和退休年金
39 +
40 +50 岁至 100 岁时,每年领取 **180 万美元**,51 年共提取 **9,180 万美元**,提前退休,享受人生。
41 +
42 +100 岁退保,还一次性 **27,260,213 美元**
43 +
44 +------
45 +
46 +## 假设提取方案 2
47 +
48 +假设在某岁数退保及领取:
49 +
50 +本金会不断增值,翻倍!红利随年期滚存,充分发挥复利效应!
51 +
52 +- 假设 65 岁取,可以一笔过领取 **313,501,936 美金**
53 +- 假设 70 岁取,可以一笔过领取 **459,640,980 美金**
54 +- 假设第 80 岁取,可以一笔过领取 **991,044,050 美金**
55 +- 假设第 90 岁取,可以一笔过领取 **2,051,373,776 美金**
56 +- 假设 100 岁时取,可以一笔过领取 **4,230,421,304 美金**
57 +
58 +------
59 +
60 +**总结**:扣取本金,总回报高达美元 **42.25 亿**
...\ No newline at end of file ...\ No newline at end of file