docs(parse): 清理审核文档并更新 parse-docs 脚本
主要变更: - 清理 CHANGELOG.md (移除历史记录,保持精简) - 移除旧的 pending 审核文件 - 删除 scripts/README.md - 更新 parse-docs.js 脚本 - 更新 README.md 和 to-parse/README.md Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Showing
12 changed files
with
77 additions
and
1372 deletions
| ... | @@ -430,6 +430,8 @@ export default { | ... | @@ -430,6 +430,8 @@ export default { |
| 430 | 5. 认证失败会自动跳转到 `/pages/login/index` | 430 | 5. 认证失败会自动跳转到 `/pages/login/index` |
| 431 | 6. **所有函数必须有 JSDoc 注释** - 详见 `~/.claude/rules/code-commenting.md` | 431 | 6. **所有函数必须有 JSDoc 注释** - 详见 `~/.claude/rules/code-commenting.md` |
| 432 | 7. 业务路由以 `src/app.config.js` 为准,计划类文档仅保留历史记录 | 432 | 7. 业务路由以 `src/app.config.js` 为准,计划类文档仅保留历史记录 |
| 433 | +8. 文档解析成功后原始文档会自动归档到 `docs/to-parse/archived/YYYY-MM-DD/` | ||
| 434 | +9. 待审核文件按原始文档名分目录存放于 `docs/parse-audit/pending/<原始文档名>/` | ||
| 433 | 435 | ||
| 434 | ## ✅ 优化建议 | 436 | ## ✅ 优化建议 |
| 435 | 437 | ... | ... |
| 1 | -## [2026-02-15] - 多产品文档解析支持 | 1 | +# CHANGELOG |
| 2 | - | 2 | +## [2026-02-15] - 待审核文件按文档分目录 |
| 3 | -### 新增 | ||
| 4 | -- 新增 `product-splitter.js` 产品边界检测模块 | ||
| 5 | - - 支持产品代码前缀识别(GS、GC、FA、LV2 等) | ||
| 6 | - - 支持产品命名模式(以"計劃"、"保障"、"保险"、"壽險"结尾) | ||
| 7 | - - 自动检测和分割多产品文档 | ||
| 8 | - | ||
| 9 | ### 优化 | 3 | ### 优化 |
| 10 | -- 增强 `parse-docs.js` 多产品处理能力 | 4 | +- 待审核文件按原始文档名分目录生成,避免 pending 混乱 |
| 11 | - - `parseSingleFile()` 支持返回多产品数组 | 5 | +- 更新审核文件位置说明(docs/to-parse/README.md 与 README.md) |
| 12 | - - `generateAuditFile()` 支持产品索引参数生成独立文件名 | ||
| 13 | - - 单文件模式 (`--file=`) 正确处理多产品结果 | ||
| 14 | - - `buildParseSummary()` 统计多产品数量 | ||
| 15 | - | ||
| 16 | -- 优化 `smart-field-extractor.js` 结构 | ||
| 17 | - - 新增 `smartExtractFieldsForProduct()` 单产品提取函数 | ||
| 18 | - - 移除重复的函数定义,统一调用接口 | ||
| 19 | - | ||
| 20 | ---- | ||
| 21 | - | ||
| 22 | -**详细信息**: | ||
| 23 | -- **影响文件**: scripts/product-splitter.js, scripts/parse-docs.js, scripts/smart-field-extractor.js | ||
| 24 | -- **技术栈**: Node.js, 正则表达式, 多产品分割 | ||
| 25 | -- **测试状态**: 已测试(解析 计划书模版2.docx 成功识别 4 个产品) | ||
| 26 | -- **备注**: 每个产品生成独立的审核文件,便于人工逐一确认 | ||
| 27 | - | ||
| 28 | ---- | ||
| 29 | - | ||
| 30 | -## [2026-02-15] - 智能字段提取器完善 | ||
| 31 | - | ||
| 32 | -### 新增 | ||
| 33 | -- 实现 `smartExtractList()` 智能列表提取函数 | ||
| 34 | -- 支持基于起始模式和结束关键词的列表边界识别 | ||
| 35 | - | ||
| 36 | -### 修复 | ||
| 37 | -- 修复 `insurance_period` 和 `withdrawal_modes` 字段的 `postProcess` 函数类型处理问题 | ||
| 38 | -- 优化 `payment_periods` 字段的过滤逻辑,排除"投保年龄"等无效项 | ||
| 39 | - | ||
| 40 | ---- | ||
| 41 | - | ||
| 42 | -**详细信息**: | ||
| 43 | -- **影响文件**: scripts/smart-field-extractor.js | ||
| 44 | -- **技术栈**: Node.js, 正则表达式, 智能提取 | ||
| 45 | -- **测试状态**: 单元测试通过 | ||
| 46 | -- **备注**: 提升了字段提取的准确性和健壮性 | ||
| 47 | - | ||
| 48 | ---- | ||
| 49 | - | ||
| 50 | -## [2026-02-14] - 消息功能全面优化 | ||
| 51 | - | ||
| 52 | -### 优化 | ||
| 53 | -- 优化消息列表卡片布局,提升信息可读性 | ||
| 54 | -- 简化消息列表逻辑,移除冗余代码 | ||
| 55 | -- 优化消息详情页布局,避免内容重复显示 | ||
| 56 | -- 统一消息页面样式和交互体验 | ||
| 57 | - | ||
| 58 | ---- | ||
| 59 | - | ||
| 60 | -**详细信息**: | ||
| 61 | -- **影响文件**: src/pages/message/index.vue, src/pages/message-detail/index.vue | ||
| 62 | -- **技术栈**: Vue 3, Taro 4, NutUI | ||
| 63 | -- **测试状态**: 已通过 | ||
| 64 | -- **备注**: 提升用户阅读体验,代码更简洁可维护 | ||
| 65 | - | ||
| 66 | ---- | ||
| 67 | - | ||
| 68 | -## [2026-02-14] - Git 工作流与版本管理优化 | ||
| 69 | - | ||
| 70 | -### 优化 | ||
| 71 | -- 使用 standard-version 替代自定义版本更新脚本 | ||
| 72 | -- 配置 standard-version 不自动生成 CHANGELOG(由人工维护) | ||
| 73 | -- 完善版本发布流程和 Git 工作流文档 | ||
| 74 | -- 移除旧的版本自动更新脚本 | ||
| 75 | - | ||
| 76 | -### 新增 | ||
| 77 | -- 配置 conventional commits 规范 | ||
| 78 | -- 完善版本管理最佳实践文档 | ||
| 79 | - | ||
| 80 | ---- | ||
| 81 | - | ||
| 82 | -**详细信息**: | ||
| 83 | -- **影响文件**: .versionrc.json, package.json, scripts/ (removed) | ||
| 84 | -- **技术栈**: standard-version, conventional commits | ||
| 85 | -- **测试状态**: 已验证 | ||
| 86 | -- **备注**: 统一版本管理工具,简化发布流程 | ||
| 87 | - | ||
| 88 | ---- | ||
| 89 | - | ||
| 90 | -## [2026-02-14] - 文档解析使用说明完善 | ||
| 91 | - | ||
| 92 | -### 优化 | ||
| 93 | -- 补充解析链路与使用思路,明确审核与合并边界 | ||
| 94 | -- 更新解析命令说明与默认行为 | ||
| 95 | - | ||
| 96 | ---- | ||
| 97 | - | ||
| 98 | -**详细信息**: | ||
| 99 | -- **影响文件**: docs/to-parse/README.md, README.md | ||
| 100 | -- **技术栈**: 文档维护 | ||
| 101 | -- **测试状态**: 未运行(仅文档更新) | ||
| 102 | -- **备注**: 使用方式与链路更清晰 | ||
| 103 | - | ||
| 104 | ---- | ||
| 105 | - | ||
| 106 | -## [2026-02-14] - 文档解析审核流程落地 | ||
| 107 | - | ||
| 108 | -### 优化 | ||
| 109 | -- 修复审核模板重复定义与内容断裂,统一字段命名与展示结构 | ||
| 110 | -- 完善审核流程指引,明确 pending/approved 目录治理与合并步骤 | ||
| 111 | -- 默认解析仅生成待审核文件,写入配置需显式开启 | ||
| 112 | - | ||
| 113 | ---- | ||
| 114 | - | ||
| 115 | -**详细信息**: | ||
| 116 | -- **影响文件**: scripts/parse-docs.js, docs/to-parse/README.md, docs/tasks/plan/改进文档解析工具-添加审核流程.md, README.md | ||
| 117 | -- **技术栈**: Node.js, 文档维护 | ||
| 118 | -- **测试状态**: pnpm test 通过;pnpm lint 30 warnings | ||
| 119 | -- **备注**: 已生成待审核文件并完成可读性校验 | ||
| 120 | - | ||
| 121 | ---- | ||
| 122 | - | ||
| 123 | -## [2026-02-14] - 文档解析审核方案整理 | ||
| 124 | - | ||
| 125 | -### 优化 | ||
| 126 | -- 整理审核流程文档并对齐字段命名与目录规范 | ||
| 127 | -- 补充审核模板修复重点与解析策略改进点 | ||
| 128 | - | ||
| 129 | ---- | ||
| 130 | - | ||
| 131 | -**详细信息**: | ||
| 132 | -- **影响文件**: docs/tasks/plan/改进文档解析工具-添加审核流程.md, README.md | ||
| 133 | -- **技术栈**: 文档维护 | ||
| 134 | -- **测试状态**: 未运行(仅文档更新) | ||
| 135 | -- **备注**: 明确审核流程现状与修复范围 | ||
| 136 | - | ||
| 137 | ---- | ||
| 138 | - | ||
| 139 | -## [2026-02-14] - markitdown 文档解析服务集成 | ||
| 140 | - | ||
| 141 | -### 新增 | ||
| 142 | -- 集成 markitdown CLI 工具支持 PDF/DOCX 文档解析 | ||
| 143 | -- 创建 parse-config.js 统一配置管理模块 | ||
| 144 | -- 添加配置状态检查命令 `npm run parse:docs:status` | ||
| 145 | -- 创建 .env.example 环境变量模板 | ||
| 146 | -- 新增 scripts/README.md 使用指南 | ||
| 147 | - | ||
| 148 | -### 优化 | ||
| 149 | -- MD/TXT 文件直接读取,无需 markitdown 处理 | ||
| 150 | -- PDF/DOCX 文件通过 markitdown CLI 转换 | ||
| 151 | -- 添加 markitdown 失败时的本地库回退机制 | ||
| 152 | - | ||
| 153 | ---- | ||
| 154 | - | ||
| 155 | -**详细信息**: | ||
| 156 | -- **影响文件**: scripts/parse-config.js, scripts/parse-docs.js, scripts/.env.example, scripts/README.md, package.json | ||
| 157 | -- **技术栈**: Node.js, Python (markitdown v0.1.4), child_process | ||
| 158 | -- **测试状态**: 已通过(MD 文件解析验证) | ||
| 159 | -- **备注**: markitdown CLI 已安装,配置已启用 (type: 'cli') | ||
| 160 | - | ||
| 161 | ---- | ||
| 162 | - | ||
| 163 | -## [2026-02-14] - 空表单回退规则补齐 | ||
| 164 | - | ||
| 165 | -### 修复 | ||
| 166 | -- 空 schema 自动回退默认 schema,避免生成空表单 | ||
| 167 | -- 生成结果中空 schema 配置回填为默认 schema 引用 | ||
| 168 | - | ||
| 169 | ---- | ||
| 170 | - | ||
| 171 | -**详细信息**: | ||
| 172 | -- **影响文件**: scripts/parse-docs.js, scripts/parse-docs.test.js, src/utils/parsers/config-generator.js, src/config/plan-templates.js, README.md | ||
| 173 | -- **技术栈**: Node.js, Vitest | ||
| 174 | -- **测试状态**: pnpm test 通过;pnpm lint 30 warnings | ||
| 175 | -- **备注**: form_schema 为空结构时将使用对应类型默认 schema | ||
| 176 | - | ||
| 177 | ---- | ||
| 178 | - | ||
| 179 | -## [2026-02-14] - 解析文件过滤 | ||
| 180 | - | ||
| 181 | -### 修复 | ||
| 182 | -- 解析待处理目录时跳过 README.md | ||
| 183 | - | ||
| 184 | ---- | ||
| 185 | - | ||
| 186 | -**详细信息**: | ||
| 187 | -- **影响文件**: scripts/parse-docs.js, README.md | ||
| 188 | -- **技术栈**: Node.js | ||
| 189 | -- **测试状态**: pnpm test 通过;pnpm lint 30 warnings | ||
| 190 | -- **备注**: 仅过滤 docs/to-parse/README.md | ||
| 191 | - | ||
| 192 | ---- | ||
| 193 | - | ||
| 194 | -## [2026-02-14] - 搜索测试 Mock 开关修正 | ||
| 195 | - | ||
| 196 | -### 修复 | ||
| 197 | -- 搜索页单测固定使用真实 API Mock,避免被全局 Mock 开关干扰 | ||
| 198 | - | ||
| 199 | ---- | ||
| 200 | - | ||
| 201 | -**详细信息**: | ||
| 202 | -- **影响文件**: src/pages/search/index.test.js | ||
| 203 | -- **技术栈**: Vitest | ||
| 204 | -- **测试状态**: pnpm test 通过;pnpm lint 30 warnings | ||
| 205 | -- **备注**: 用例统一 mock USE_MOCK_DATA=false | ||
| 206 | - | ||
| 207 | ---- | ||
| 208 | - | ||
| 209 | -## [2026-02-14] - 解析配置字段补齐 | ||
| 210 | - | ||
| 211 | -### 新增 | ||
| 212 | -- 解析配置生成按保险类型注入 form_schema 与 submit_mapping | ||
| 213 | -- 补充解析生成默认 schema/mapping 输出测试 | ||
| 214 | - | ||
| 215 | ---- | ||
| 216 | - | ||
| 217 | -**详细信息**: | ||
| 218 | -- **影响文件**: scripts/parse-docs.js, scripts/parse-docs.test.js, src/utils/parsers/config-generator.js, README.md | ||
| 219 | -- **技术栈**: Node.js, Vitest | ||
| 220 | -- **测试状态**: pnpm test 失败(search 页面 2 项断言);pnpm lint 30 warnings | ||
| 221 | -- **备注**: 解析生成不会再输出空的 form_schema/submit_mapping | ||
| 222 | - | ||
| 223 | ---- | ||
| 224 | - | ||
| 225 | -## [2026-02-14] - Mock 数据结构优化 | ||
| 226 | - | ||
| 227 | -### 新增 | ||
| 228 | -- 添加测试商品置顶功能(savings-product-30b41aae) | ||
| 229 | -- 产品列表 Mock 数据新增 form_sn 和 created_time 字段 | ||
| 230 | - | ||
| 231 | -### 修复 | ||
| 232 | -- 修复 Mock 数据结构与真实 API 一致性 | ||
| 233 | -- 将 category_id 改为 categories 数组结构 | ||
| 234 | -- 移除多余字段(name, description, premium) | ||
| 235 | - | ||
| 236 | ---- | ||
| 237 | - | ||
| 238 | -**详细信息**: | ||
| 239 | -- **影响文件**: src/utils/mockData.js | ||
| 240 | -- **技术栈**: Mock 数据生成 | ||
| 241 | -- **测试状态**: 已通过 | ||
| 242 | -- **备注**: 测试商品固定在第一页第一位,便于测试 | ||
| 243 | - | ||
| 244 | ---- | ||
| 245 | - | ||
| 246 | -## [2026-02-14] - 测试计划书解析验证 | ||
| 247 | - | ||
| 248 | -### 新增 | ||
| 249 | -- 成功解析 docs/to-parse/测试计划书-智享未来.md 并生成计划书配置 | ||
| 250 | - | ||
| 251 | ---- | ||
| 252 | - | ||
| 253 | -**详细信息**: | ||
| 254 | -- **影响文件**: src/config/plan-templates.js, docs/to-parse/测试计划书-智享未来.md | ||
| 255 | -- **技术栈**: Node.js, 文档解析脚本 | ||
| 256 | -- **测试状态**: pnpm run parse:docs -- --file="测试计划书-智享未来.md" 通过 | ||
| 257 | -- **备注**: 解析产物已写入 plan-templates 配置 | ||
| 258 | - | ||
| 259 | ---- | ||
| 260 | - | ||
| 261 | -## [2026-02-14] - 文档解析改造回归测试 | ||
| 262 | - | ||
| 263 | -### 测试 | ||
| 264 | -- pnpm test 通过(Vitest 全量用例) | ||
| 265 | -- pnpm lint 通过(30 个现存警告) | ||
| 266 | - | ||
| 267 | ---- | ||
| 268 | - | ||
| 269 | -**详细信息**: | ||
| 270 | -- **影响文件**: scripts/parse-docs.js, scripts/parse-docs.test.js, src/pages/search/index.test.js, src/components/list/LoadMoreList/index.vue | ||
| 271 | -- **技术栈**: Vitest, ESLint | ||
| 272 | -- **测试状态**: pnpm test 通过;pnpm lint 30 warnings | ||
| 273 | -- **备注**: 测试中出现 NutUI/Taro 组件解析警告与 Taro API mock 警告,但用例通过 | ||
| 274 | - | ||
| 275 | ---- | ||
| 276 | - | ||
| 277 | -## [2026-02-14] - 运营与审计完善 | ||
| 278 | - | ||
| 279 | -### 新增 | ||
| 280 | -- 解析摘要输出(成功/失败/耗时)并生成审计日志与变更摘要 | ||
| 281 | -- 使用说明补充解析摘要与审计日志位置 | ||
| 282 | - | ||
| 283 | ---- | ||
| 284 | - | ||
| 285 | -**详细信息**: | ||
| 286 | -- **影响文件**: scripts/parse-docs.js, scripts/parse-docs.test.js, docs/to-parse/README.md, docs/tasks/文档解析改造-tasks.md, README.md | ||
| 287 | -- **技术栈**: Node.js, Vitest, 文档维护 | ||
| 288 | -- **测试状态**: pnpm test 通过;pnpm lint 30 warnings | ||
| 289 | -- **备注**: 每次解析都有可追溯审计记录 | ||
| 290 | - | ||
| 291 | ---- | ||
| 292 | - | ||
| 293 | -## [2026-02-14] - 测试与验证完善 | ||
| 294 | - | ||
| 295 | -### 新增 | ||
| 296 | -- 补充解析流程集成测试与 updateConfigContent 边界测试 | ||
| 297 | -- 新增 fixtures 文档样本说明并补齐相关文档入口 | ||
| 298 | - | ||
| 299 | ---- | ||
| 300 | - | ||
| 301 | -**详细信息**: | ||
| 302 | -- **影响文件**: scripts/parse-docs.js, scripts/parse-docs.test.js, docs/to-parse/README.md, docs/tasks/文档解析改造-tasks.md, README.md | ||
| 303 | -- **技术栈**: Node.js, Vitest, 文档维护 | ||
| 304 | -- **测试状态**: 已通过(pnpm test),ESLint 存在现有警告 | ||
| 305 | -- **备注**: 解析流程测试可重复运行,覆盖冲突与插入边界路径 | ||
| 306 | - | ||
| 307 | ---- | ||
| 308 | - | ||
| 309 | -## [2026-02-14] - 生成与写入稳态化 | ||
| 310 | - | ||
| 311 | -### 新增 | ||
| 312 | -- 结构化定位 PLAN_TEMPLATES 插入位置并支持 dry-run 变更预览 | ||
| 313 | -- 增加重复 form_sn 冲突检测与阻断写入 | ||
| 314 | -- 完善备份记录并支持回滚入口 | ||
| 315 | - | ||
| 316 | ---- | ||
| 317 | - | ||
| 318 | -**详细信息**: | ||
| 319 | -- **影响文件**: scripts/parse-docs.js, scripts/parse-docs.test.js, docs/tasks/文档解析改造-tasks.md, README.md | ||
| 320 | -- **技术栈**: Node.js, Vitest | ||
| 321 | -- **测试状态**: 已通过(pnpm test),ESLint 存在现有警告 | ||
| 322 | -- **备注**: 解析写入路径更稳定,新增冲突保护与预览模式 | ||
| 323 | - | ||
| 324 | ---- | ||
| 325 | - | ||
| 326 | -## [2026-02-14] - 结构化解析校验接入 | ||
| 327 | - | ||
| 328 | -### 新增 | ||
| 329 | -- 接入 JSON Schema 校验并输出缺失字段报告 | ||
| 330 | -- 校验失败阻断解析结果写入配置 | ||
| 331 | -- 单测覆盖校验通过与失败路径 | ||
| 332 | - | ||
| 333 | ---- | ||
| 334 | - | ||
| 335 | -**详细信息**: | ||
| 336 | -- **影响文件**: scripts/parse-docs.js, scripts/parse-docs.test.js, package.json, docs/tasks/文档解析改造-tasks.md, README.md | ||
| 337 | -- **技术栈**: Node.js, Ajv, Vitest | ||
| 338 | -- **测试状态**: 已通过(pnpm test),ESLint 存在现有警告 | ||
| 339 | -- **备注**: 校验规则覆盖核心字段并保留扩展字段 | ||
| 340 | - | ||
| 341 | ---- | ||
| 342 | - | ||
| 343 | -## [2026-02-14] - 文本抽取管线接入 | ||
| 344 | - | ||
| 345 | -### 新增 | ||
| 346 | -- 接入 PDF 文本抽取与页数元信息 | ||
| 347 | -- 接入 Docx 文本抽取并输出警告信息 | ||
| 348 | -- 统一抽取结果结构并增加抽取失败回退 | ||
| 349 | - | ||
| 350 | ---- | ||
| 351 | - | ||
| 352 | -**详细信息**: | ||
| 353 | -- **影响文件**: scripts/parse-docs.js, scripts/parse-docs.test.js, package.json, docs/tasks/文档解析改造-tasks.md, README.md | ||
| 354 | -- **技术栈**: Node.js, Vitest | ||
| 355 | -- **测试状态**: 已通过(pnpm test),ESLint 存在现有警告 | ||
| 356 | -- **备注**: .doc 文件提示转换为 .docx,OCR 预留未启用 | ||
| 357 | - | ||
| 358 | ---- | ||
| 359 | - | ||
| 360 | -## [2026-02-14] - 文档解析输出定义完善 | ||
| 361 | - | ||
| 362 | -### 更新 | ||
| 363 | -- 明确解析输出 JSON 结构并补齐示例与约束 | ||
| 364 | -- 生成 form_sn 改为稳定的 slug + hash 规则 | ||
| 365 | -- 配置生成支持 form_schema 与 submit_mapping 输出 | ||
| 366 | - | ||
| 367 | ---- | ||
| 368 | - | ||
| 369 | -**详细信息**: | ||
| 370 | -- **影响文件**: scripts/parse-docs.js, scripts/parse-docs.test.js, docs/plan/plan-form-schema-usage.md, docs/tasks/文档解析改造-tasks.md, README.md | ||
| 371 | -- **技术栈**: Node.js, Vitest, 文档维护 | ||
| 372 | -- **测试状态**: 已通过(pnpm test),ESLint 存在现有警告 | ||
| 373 | -- **备注**: 解析输出结构对齐 Schema 与提交映射配置 | ||
| 374 | - | ||
| 375 | ---- | ||
| 376 | - | ||
| 377 | -## [2026-02-14] - 文档解析改造任务清单 | ||
| 378 | - | ||
| 379 | -### 新增 | ||
| 380 | -- 新增文档解析改造任务清单,细化步骤与验收标准 | ||
| 381 | - | ||
| 382 | ---- | ||
| 383 | - | ||
| 384 | -**详细信息**: | ||
| 385 | -- **影响文件**: docs/tasks/文档解析改造-tasks.md, README.md | ||
| 386 | -- **技术栈**: 文档维护 | ||
| 387 | -- **测试状态**: 不适用 | ||
| 388 | -- **备注**: 任务完成后按清单勾选便于回顾 | ||
| 389 | - | ||
| 390 | ---- | ||
| 391 | - | ||
| 392 | -## [2026-02-14] - 优化计划书字段配置管理 | ||
| 393 | - | ||
| 394 | -### 新增 | ||
| 395 | -- planFieldValidation.js - 字段验证系统,支持必填、长度、范围、正则、自定义验证 | ||
| 396 | -- useFieldDependencies.js - 字段关联系统,管理显示/隐藏、启用/禁用 | ||
| 397 | -- planFieldValidation.test.js - 完整单元测试(40个用例) | ||
| 398 | - | ||
| 399 | -### 修复 | ||
| 400 | -- 修复 ESLint 错误:使用 Number.isNaN 代替全局 isNaN | ||
| 401 | - | ||
| 402 | -### 测试 | ||
| 403 | -- 单元测试全部通过(40/40) | ||
| 404 | -- ESLint 检查通过 | ||
| 405 | - | ||
| 406 | ---- | ||
| 407 | - | ||
| 408 | -**详细信息**: | ||
| 409 | -- **影响文件**: src/utils/planFieldValidation.js, src/composables/useFieldDependencies.js | ||
| 410 | -- **技术栈**: Vitest, Vue 3 Composition API | ||
| 411 | -- **测试状态**: 已通过 | ||
| 412 | -- **备注**: 提取可复用验证逻辑,支持同步/异步验证 | ||
| 413 | - | ||
| 414 | ---- | ||
| 415 | - | ||
| 416 | -## [2026-02-14] - 表单状态常量化 | ||
| 417 | - | ||
| 418 | -### 重构 | ||
| 419 | -- 新增 `src/config/constants/orderStatus.js` 统一管理订单状态 | ||
| 420 | -- 提取 `mapOrderStatus`、`getStatusText`、`isValidStatus` 工具函数 | ||
| 421 | -- 重构 `usePlanView.js` 使用常量替代硬编码状态值 | ||
| 422 | - | ||
| 423 | ---- | ||
| 424 | - | ||
| 425 | -**详细信息**: | ||
| 426 | -- **影响文件**: src/composables/usePlanView.js, src/config/constants/orderStatus.js | ||
| 427 | -- **技术栈**: Vue 3, Taro | ||
| 428 | -- **测试状态**: 已通过 | ||
| 429 | -- **备注**: 提升代码可维护性,避免魔法数字 | ||
| 430 | - | ||
| 431 | ---- | ||
| 432 | - | ||
| 433 | -## [2026-02-14] - 人寿/重疾模板 Schema 化 | ||
| 434 | - | ||
| 435 | -### 更新 | ||
| 436 | -- 人寿与重疾模板改为 Schema 自动渲染与校验 | ||
| 437 | -- 人寿/重疾产品配置增加 form_schema 入口 | ||
| 438 | -- 使用文档补充人寿/重疾示例 | ||
| 439 | -- README 同步最新更新 | ||
| 440 | - | ||
| 441 | ---- | ||
| 442 | - | ||
| 443 | -**详细信息**: | ||
| 444 | -- **影响文件**: src/config/plan-templates.js, src/components/plan/PlanTemplates/LifeInsuranceTemplate.vue, src/components/plan/PlanTemplates/CriticalIllnessTemplate.vue, docs/plan/plan-form-schema-usage.md, README.md | ||
| 445 | -- **技术栈**: Vue 3, Taro 4 | ||
| 446 | -- **测试状态**: 待测试 | ||
| 447 | -- **备注**: 保障类产品字段新增仅需调整 Schema 配置 | ||
| 448 | - | ||
| 449 | ---- | ||
| 450 | - | ||
| 451 | -## [2026-02-14] - 计划书 Schema 注释与使用文档 | ||
| 452 | - | ||
| 453 | -## [2026-02-14] - 计划书表单重构 | ||
| 454 | - | ||
| 455 | -### 重构 | ||
| 456 | -- 重构 PlanFormContainer.vue 的 submit 函数,使用模板配置的 submit_mapping | ||
| 457 | -- 新增完整的储蓄计划书模板 SavingsTemplate.vue | ||
| 458 | -- 在 plan-templates.js 中添加详细的字段映射配置 | ||
| 459 | - | ||
| 460 | -### 文档 | ||
| 461 | -- 更新 README.md 和 CHANGELOG.md | ||
| 462 | -- 新增 plan-form-schema-usage.md 使用说明文档 | ||
| 463 | - | ||
| 464 | ---- | ||
| 465 | - | ||
| 466 | -**详细信息**: | ||
| 467 | -- **影响文件**: src/components/plan/PlanFormContainer.vue, src/components/plan/PlanTemplates/SavingsTemplate.vue, src/config/plan-templates.js, docs/plan/plan-form-schema-usage.md, README.md | ||
| 468 | -- **技术栈**: Vue 3, Taro 4 | ||
| 469 | -- **测试状态**: 待测试 | ||
| 470 | -- **备注**: Schema 配置与提交映射均有详细说明 | ||
| 471 | - | ||
| 472 | ---- | ||
| 473 | - | ||
| 474 | -### 新增 | ||
| 475 | -- 补充计划书 Schema 与提交映射的详细注释与 JSDoc | ||
| 476 | -- 新增计划书 Schema 使用文档,便于新增保险类型 | ||
| 477 | - | ||
| 478 | ---- | ||
| 479 | - | ||
| 480 | -**详细信息**: | ||
| 481 | -- **影响文件**: src/config/plan-templates.js, src/components/plan/PlanTemplates/SavingsTemplate.vue, src/components/plan/PlanFormContainer.vue, docs/plan/plan-form-schema-usage.md, README.md | ||
| 482 | -- **技术栈**: Vue 3, Taro 4 | ||
| 483 | -- **测试状态**: 待测试 | ||
| 484 | -- **备注**: Schema 配置与提交映射均有详细说明 | ||
| 485 | - | ||
| 486 | ---- | ||
| 487 | - | ||
| 488 | -## [2026-02-14] - 计划书表单 Schema 化(方案 2) | ||
| 489 | - | ||
| 490 | -### 更新 | ||
| 491 | -- 储蓄类模板使用表单 Schema 自动字段渲染与校验 | ||
| 492 | -- 提交字段映射迁移到模板配置,统一处理金额转换 | ||
| 493 | -- 移除模式切换清空逻辑改为配置驱动 | ||
| 494 | - | ||
| 495 | ---- | ||
| 496 | - | ||
| 497 | -**详细信息**: | ||
| 498 | -- **影响文件**: src/config/plan-templates.js, src/components/plan/PlanTemplates/SavingsTemplate.vue, src/components/plan/PlanFormContainer.vue, README.md | ||
| 499 | -- **技术栈**: Vue 3, Taro 4 | ||
| 500 | -- **测试状态**: 待测试 | ||
| 501 | -- **备注**: 储蓄类产品字段新增仅需调整配置 | ||
| 502 | - | ||
| 503 | ---- | ||
| 504 | - | ||
| 505 | -## [2026-02-14] - 文档对齐与业务说明更新 | ||
| 506 | - | ||
| 507 | -### 更新 | ||
| 508 | -- 同步 README 的业务模块与页面清单 | ||
| 509 | -- 修正文档导航中的 API 集成日志入口 | ||
| 510 | -- 重写新人入门指南为业务与路由上手文档 | ||
| 511 | -- 对齐登录页路径说明与认证调试文档 | ||
| 512 | -- 更新前端开发计划中的当前路由与模块概览 | ||
| 513 | -- 对齐鉴权重构文档的登录页说明 | ||
| 514 | -- 记录项目开发计划与调整版为历史版本并补充当前业务说明 | ||
| 515 | -- README 补充路由与计划文档对齐说明 | ||
| 516 | - | ||
| 517 | ---- | ||
| 518 | - | ||
| 519 | -**详细信息**: | ||
| 520 | -- **影响文件**: README.md, QUICKSTART.md, docs/README.md, docs/guides/新人入门指南.md, docs/guides/认证调试指南.md, docs/plan/前端开发计划.md, docs/plan/前端开发计划-调整版.md, docs/specs/2026-02-02-auth-refactoring.md | ||
| 521 | -- **技术栈**: 文档维护 | ||
| 522 | -- **测试状态**: 不适用 | ||
| 523 | -- **备注**: 与现有路由与页面模块保持一致 | ||
| 524 | - | ||
| 525 | ---- | ||
| 526 | - | ||
| 527 | -## [2026-02-14] - 提取方式字段重命名 | ||
| 528 | - | ||
| 529 | -### 更新 | ||
| 530 | -- 将提取方式字段从 `specified_amount_type` 统一重命名为 `withdrawal_method` | ||
| 531 | -- 同步更新计划书模板与相关文档的字段描述 | ||
| 532 | - | ||
| 533 | ---- | ||
| 534 | - | ||
| 535 | -**详细信息**: | ||
| 536 | -- **影响文件**: src/components/plan/PlanTemplates/SavingsTemplate.vue, docs/plan/plan-entry-architecture.md, docs/lessons-learned/plan-entry-module-summary.md | ||
| 537 | -- **技术栈**: Vue 3, Taro 4 | ||
| 538 | -- **测试状态**: 待测试 | ||
| 539 | -- **备注**: 中文字段名保持为"提取方式" | ||
| 540 | - | ||
| 541 | ---- | ||
| 542 | - | ||
| 543 | -## [2026-02-14] - 修复文件扩展名解析逻辑 | ||
| 544 | - | ||
| 545 | -### 修复 | ||
| 546 | -- 修复 JPEG 图片文件显示为 "DOC" 标签的问题 | ||
| 547 | -- 优化 `extractExtensionFromFile` 函数的 fallback 逻辑 | ||
| 548 | -- 移除首页、搜索页、周热门资料页的错误扩展名提取逻辑 | ||
| 549 | - | ||
| 550 | ---- | ||
| 551 | - | ||
| 552 | -**详细信息**: | ||
| 553 | -- **影响文件**: src/utils/documentIcons.js, src/pages/index/index.vue, src/pages/search/index.vue, src/pages/week-hot-material/index.vue | ||
| 554 | -- **技术栈**: Vue 3, Taro 4, 文件处理 | ||
| 555 | -- **测试状态**: 待测试 | ||
| 556 | -- **备注**: | ||
| 557 | - - 问题根源:`fileName.split('.')` 对 "IMG_6395大" 返回文件名本身而非扩展名 | ||
| 558 | - - 解决方案:让组件内部使用 `extractExtensionFromFile` 自动从 downloadUrl 解析扩展名 | ||
| 559 | - - 优先级:extension 字段 > fileName > src > downloadUrl | ||
| 560 | - - 涉及页面:首页周热门资料、搜索页文件结果 | ||
| 561 | - | ||
| 562 | ---- | ||
| 563 | - | ||
| 564 | -## [2026-02-13] - 收藏页空名称处理 | ||
| 565 | - | ||
| 566 | -### 修复 | ||
| 567 | -- 修复收藏页数据 `name` 字段为 `null` 时显示空白的问题 | ||
| 568 | -- 添加默认标题"未命名文件"兜底处理 | ||
| 569 | - | ||
| 570 | ---- | ||
| 571 | - | ||
| 572 | -**详细信息**: | ||
| 573 | -- **影响文件**: src/pages/favorites/index.vue | ||
| 574 | -- **技术栈**: Vue 3, Taro 4 | ||
| 575 | -- **测试状态**: 已通过 | ||
| 576 | -- **备注**: 使用 `map` 方法在数据获取后立即处理,保持模板简洁 | ||
| 577 | - | ||
| 578 | ---- | ||
| 579 | - | ||
| 580 | -## [2026-02-13] - 登录权限检查与提示文案优化 | ||
| 581 | - | ||
| 582 | -### 新增 | ||
| 583 | -- 为首页网格导航"计划书"按钮添加登录权限检查 | ||
| 584 | -- 未登录用户点击时显示友好的登录提示弹窗 | ||
| 585 | - | ||
| 586 | -### 优化 | ||
| 587 | -- 优化默认登录权限提示文案:从"登录后即可查看完整内容"改为"登录后即可使用完整功能" | ||
| 588 | -- 文案更通用,同时适用于查看型和操作型场景 | ||
| 589 | -- 提升文案与实际操作的匹配度 | ||
| 590 | - | ||
| 591 | ---- | ||
| 592 | - | ||
| 593 | -**详细信息**: | ||
| 594 | -- **影响文件**: src/config/permissions.js, src/pages/index/index.vue | ||
| 595 | -- **技术栈**: Vue 3, Taro 4, Composables | ||
| 596 | -- **测试状态**: 已通过 | ||
| 597 | -- **备注**: | ||
| 598 | - - 首页网格导航使用自定义提示:"计划书功能需要登录后才能使用,是否立即登录?" | ||
| 599 | - - 其他"制作计划书"按钮使用优化后的默认文案 | ||
| 600 | - - 修改后覆盖首页、产品中心、产品详情、搜索页的所有计划书相关操作 | ||
| 601 | - | ||
| 602 | ---- | ||
| 603 | - | ||
| 604 | -## [2026-02-13] - 文件操作反馈功能配置同步 | ||
| 605 | - | ||
| 606 | -### 修复 | ||
| 607 | -- 修复文件操作失败时"去反馈"按钮导致的 `showModal` 参数错误 | ||
| 608 | -- 导入 `features` 配置使用命名导入(修复构建警告) | ||
| 609 | -- 根据 `features.feedback` 动态控制"去反馈"按钮显示 | ||
| 610 | -- 根据配置动态调整提示文案(移除"前往意见反馈"提示) | ||
| 611 | -- 根据配置决定是否跳转反馈页面 | ||
| 612 | - | ||
| 613 | ---- | ||
| 614 | - | ||
| 615 | -**详细信息**: | ||
| 616 | -- **影响文件**: src/composables/useFileOperation.js | ||
| 617 | -- **技术栈**: Vue 3, Taro 4 | ||
| 618 | -- **测试状态**: 已通过 | ||
| 619 | -- **备注**: 修复了当 `feedback: false` 时文件操作失败提示出现的参数错误 | ||
| 620 | - | ||
| 621 | ---- | ||
| 622 | - | ||
| 623 | -## [2026-02-13] - 储蓄类模板提取计划逻辑修正 | ||
| 624 | - | ||
| 625 | -### 修复 | ||
| 626 | -- 修正储蓄类产品模板的提取计划逻辑错误 | ||
| 627 | -- 移除"是否生成说明"字段与"款项提取"配置的强依赖关系 | ||
| 628 | -- "是否希望生成一份允许减少名义金额的提取说明?"现在作为独立字段,不影响提取方案配置 | ||
| 629 | -- 移除错误的 watch 监听器,该监听器在选择"否"时会错误地清除所有提取计划字段 | ||
| 630 | -- 更新校验逻辑:`withdrawal_enabled` 字段改为可选,不再强制校验 | ||
| 631 | - | ||
| 632 | -### 文档 | ||
| 633 | -- 更新 `docs/plan/plan-entry-architecture.md` 架构文档 | ||
| 634 | -- 从"三层结构"改为"字段结构说明",明确字段1为独立字段 | ||
| 635 | -- 新增组件设计代码示例,移除错误的 `v-if` 条件和 watch 监听器 | ||
| 636 | - | ||
| 637 | ---- | ||
| 638 | - | ||
| 639 | -**详细信息**: | ||
| 640 | -- **影响文件**: src/components/plan/PlanTemplates/SavingsTemplate.vue, docs/plan/plan-entry-architecture.md | ||
| 641 | -- **技术栈**: Vue 3, Taro 4 | ||
| 642 | -- **测试状态**: 待测试 | ||
| 643 | -- **备注**: 提取方案配置现在始终显示(当配置启用时),不受"是否生成说明"字段影响 | ||
| 644 | - | ||
| 645 | ---- | ||
| 646 | - | ||
| 647 | -## [2026-02-13] - 消息详情页布局与状态优化 | ||
| 648 | - | ||
| 649 | -### 优化 | ||
| 650 | -- 优化计划书信息布局:长文本自动换行,避免挤压左侧标签 | ||
| 651 | -- 添加计划书状态颜色标识:待处理(橙)、处理中(蓝)、已生成(绿)、已查看(灰) | ||
| 652 | - | ||
| 653 | ---- | ||
| 654 | - | ||
| 655 | -**详细信息**: | ||
| 656 | -- **影响文件**: src/pages/message-detail/index.vue | ||
| 657 | -- **技术栈**: Vue 3, Less, Flexbox | ||
| 658 | -- **测试状态**: 已通过 | ||
| 659 | -- **备注**: 状态样式与计划列表页保持一致 | ||
| 660 | - | ||
| 661 | ---- | ||
| 662 | - | ||
| 663 | -## [2026-02-13] - 功能开关配置 | ||
| 664 | - | ||
| 665 | -### 配置 | ||
| 666 | -- 添加功能开关到 `src/config/features.js`: | ||
| 667 | - - `contactService: false` - 隐藏帮助中心联系客服 | ||
| 668 | - - `feedback: false` - 隐藏我的页面意见反馈 | ||
| 669 | - | ||
| 670 | -- 帮助中心页面 (`src/pages/help-center/index.vue`): | ||
| 671 | - - 导入 `features.js` 配置 | ||
| 672 | - - 使用 `v-if="features.contactService"` 控制联系客服显示 | ||
| 673 | - | ||
| 674 | -- 我的页面 (`src/pages/mine/index.vue`): | ||
| 675 | - - 导入 `features.js` 配置 | ||
| 676 | - - 使用计算属性过滤菜单项 | ||
| 677 | - - 修改 `v-for` key 为 `item.key` 提高稳定性 | ||
| 678 | - | ||
| 679 | -### 修复 | ||
| 680 | -- 移除 TypeScript 类型的 JSDoc 注释(`@type {boolean}`),修复 eslint 警告 | ||
| 681 | - | ||
| 682 | ---- | ||
| 683 | - | ||
| 684 | -**详细信息**: | ||
| 685 | -- **影响文件**: src/config/features.js, src/pages/help-center/index.vue, src/pages/mine/index.vue | ||
| 686 | -- **技术栈**: Vue 3, Taro 4 | ||
| 687 | -- **测试状态**: 已通过 (npm lint + npm test) | ||
| 688 | -- **备注**: 当功能开放时,只需在 features.js 中将对应开关改为 true 即可 | ||
| 689 | - | ||
| 690 | ---- | ||
| 691 | - | ||
| 692 | -## [2026-02-13] - 首页标题样式调整 | ||
| 693 | - | ||
| 694 | -### 优化 | ||
| 695 | -- 调整首页"臻奇荟"标题位置至左上方(顶部间距从 180rpx 减小至 128rpx) | ||
| 696 | -- 优化标题对齐方式,适配整体页面布局 | ||
| 697 | - | ||
| 698 | ---- | ||
| 699 | - | ||
| 700 | -**详细信息**: | ||
| 701 | -- **影响文件**: src/pages/index/index.vue | ||
| 702 | -- **技术栈**: Vue 3, TailwindCSS | ||
| 703 | -- **测试状态**: 已通过 | ||
| 704 | -- **备注**: 保持原有高度占位,防止布局塌陷 | ||
| 705 | - | ||
| 706 | ---- | ||
| 707 | - | ||
| 708 | -## [2026-02-13] - 统一权限检查与移除重复代码 | ||
| 709 | - | ||
| 710 | -### 新增 | ||
| 711 | -- ListItemActions 组件集成权限检查逻辑 | ||
| 712 | - | ||
| 713 | -### 优化 | ||
| 714 | -- 移除 material-list 页面中重复的 usePermission 调用 | ||
| 715 | -- 权限检查完全由 ListItemActions 组件内部处理 | ||
| 716 | -- 添加 ListItemActions 组件 README 文档 | ||
| 717 | - | ||
| 718 | ---- | ||
| 719 | - | ||
| 720 | -**详细信息**: | ||
| 721 | -- **影响文件**: src/pages/material-list/index.vue, src/components/list/ListItemActions/index.vue, src/components/list/ListItemActions/README.md | ||
| 722 | -- **技术栈**: Vue 3, Taro 4 | ||
| 723 | -- **测试状态**: 已通过 | ||
| 724 | -- **备注**: 组件自包含业务逻辑模式,父组件无需重复权限检查 | ||
| 725 | - | ||
| 726 | ---- | ||
| 727 | - | ||
| 728 | -## [2026-02-13] - 搜索页登录提示优化 | ||
| 729 | - | ||
| 730 | -### 优化 | ||
| 731 | -- 搜索页使用自定义登录提示术语"搜索功能需要登录后才能使用" | ||
| 732 | -- 支持通过 customOptions 参数覆盖默认权限提示内容 | ||
| 733 | - | ||
| 734 | ---- | ||
| 735 | - | ||
| 736 | -**详细信息**: | ||
| 737 | -- **影响文件**: src/pages/search/index.vue | ||
| 738 | -- **技术栈**: Vue 3, Taro 4 | ||
| 739 | -- **测试状态**: 已通过 | ||
| 740 | -- **备注**: getPermissionConfig 支持自定义内容覆盖 | ||
| 741 | - | ||
| 742 | ---- | ||
| 743 | - | ||
| 744 | -## [2026-02-13] - 资料查看权限与搜索页测试对齐 | ||
| 745 | - | ||
| 746 | -### 新增 | ||
| 747 | -- 统一动作级权限映射,支持页面查看权限扩展 | ||
| 748 | -- 资料查看入口增加登录权限校验与回调路径记录 | ||
| 749 | - | ||
| 750 | -### 优化 | ||
| 751 | -- 搜索页测试对齐当前实现并补充接口 Mock | ||
| 752 | - | ||
| 753 | ---- | ||
| 754 | - | ||
| 755 | -**详细信息**: | ||
| 756 | -- **影响文件**: src/composables/usePermission.js, src/config/permissions.js, src/components/cards/MaterialCard.vue, src/pages/material-list/index.vue, src/pages/search/index.test.js, vitest.config.js, package.json | ||
| 757 | -- **技术栈**: Vue 3, Taro 4, Pinia, Vitest | ||
| 758 | -- **测试状态**: 已通过(npm test) | ||
| 759 | -- **备注**: lint 存在历史 warning 未处理 | ||
| 760 | - | ||
| 761 | ---- | ||
| 762 | - | ||
| 763 | -## [2026-02-13] - 我的页面消息红点显示 | ||
| 764 | - | ||
| 765 | -### 新增 | ||
| 766 | -- 我的页面消息菜单项添加未读红点显示 | ||
| 767 | -- 新增 `showMessageBadge` 计算属性,从 `userStore.unreadMsgCount` 读取未读状态 | ||
| 768 | -- 添加 `.menu-badge` 样式,与 TabBar 红点保持一致 | ||
| 769 | - | ||
| 770 | -### 优化 | ||
| 771 | -- 为菜单项添加 `key` 属性,便于识别特定菜单项 | ||
| 772 | -- 红点逻辑与 TabBar 完全一致,确保同步显示 | ||
| 773 | - | ||
| 774 | ---- | ||
| 775 | - | ||
| 776 | -**详细信息**: | ||
| 777 | -- **影响文件**: src/pages/mine/index.vue | ||
| 778 | -- **技术栈**: Vue 3, Pinia | ||
| 779 | -- **测试状态**: 已通过 | ||
| 780 | -- **备注**: 红点在 `unreadMsgCount > 0` 时显示 | ||
| 781 | - | ||
| 782 | ---- | ||
| 783 | - | ||
| 784 | -## [2026-02-12] - 优化反馈列表和消息页面图片加载 | ||
| 785 | - | ||
| 786 | -### 新增 | ||
| 787 | -- 新增 `optimizeImageUrl` 工具函数,自动为 CDN 图片添加缩略图优化参数 | ||
| 788 | -- 支持自定义缩略图宽度和图片质量 | ||
| 789 | -- 只处理 `cdn.ipadbiz.cn` 的图片 | ||
| 790 | -- 非 CDN 图片保持原样返回 | ||
| 791 | - | ||
| 792 | -### 优化 | ||
| 793 | -- **反馈列表图片优化**:列表中使用 200px 缩略图(质量70),点击预览时才加载原图 | ||
| 794 | - - 显著减少列表加载时的带宽消耗 | ||
| 795 | - - 提升列表滚动性能 | ||
| 796 | - | ||
| 797 | -- **消息详情页优化**:优化布局和样式 | ||
| 798 | - - 调整背景色为浅灰色 `bg-gray-50` | ||
| 799 | - - 增加卡片式布局,添加圆角和阴影 | ||
| 800 | - - 优化标题、时间、内容的视觉层级 | ||
| 801 | - - 调整字号和行高提升阅读体验 | ||
| 802 | - | ||
| 803 | -- **消息列表优化**:重构卡片布局,提升信息可读性 | ||
| 804 | - - 第一行:标题(或内容预览)+ 未读红点 | ||
| 805 | - - 添加状态标签(未读/已读) | ||
| 806 | - - 第二行:内容预览(截取前 60 字) | ||
| 807 | - - 右侧:时间 + 时钟图标 | ||
| 808 | - | ||
| 809 | ---- | ||
| 810 | - | ||
| 811 | -**详细信息**: | ||
| 812 | -- **影响文件**: src/utils/tools.js, src/pages/feedback-list/index.vue, src/pages/message-detail/index.vue, src/pages/message/index.vue | ||
| 813 | -- **技术栈**: Vue 3, Taro, CDN 图片优化 | ||
| 814 | -- **测试状态**: 已通过 | ||
| 815 | -- **备注**: 性能收益 - 列表加载节省 ~99% 图片流量 | ||
| 816 | - | ||
| 817 | ---- | ||
| 818 | - | ||
| 819 | -> 本文档记录 Manulife WeApp 项目的所有重要变更。 | ||
| 820 | - | ||
| 821 | -## [2026-02-13] - 添加文档解析工具临时文件到 gitignore | ||
| 822 | - | ||
| 823 | -### 配置 | ||
| 824 | -- 忽略 `docs/parse-backup/` 备份目录 | ||
| 825 | -- 忽略 `docs/to-parse/*.md` 待处理文档 | ||
| 826 | -- 保留 `docs/to-parse/README.md` 说明文件 | ||
| 827 | - | ||
| 828 | ---- | ||
| 829 | - | ||
| 830 | -**详细信息**: | ||
| 831 | -- **影响文件**: .gitignore | ||
| 832 | -- **技术栈**: Git | ||
| 833 | -- **测试状态**: N/A | ||
| 834 | -- **备注**: 避免将临时文档和备份文件提交到版本控制 | ... | ... |
| 1 | -# 产品配置审核 - 计划书模版2.docx | ||
| 2 | - | ||
| 3 | -**解析时间**: 2026/2/14 23:58:54 | ||
| 4 | -**原始文件**: 计划书模版2.docx | ||
| 5 | -**数据来源**: docs/to-parse/计划书模版2.docx | ||
| 6 | - | ||
| 7 | ---- | ||
| 8 | - | ||
| 9 | -## 📋 产品基本信息 | ||
| 10 | - | ||
| 11 | -| 字段 | 提取值 | 需要确认 | | ||
| 12 | -|------|--------|---------| | ||
| 13 | -| 产品名称 | 计划书模版2 | ✅ 请核对产品名称 | | ||
| 14 | -| 产品类型 | savings | ✅ 请确认产品类型 | | ||
| 15 | -| 币种 | USD | ✅ 请确认币种 | | ||
| 16 | -| form_sn | `savings-2-55bcffc2` | ✅ 请确认 form_sn 唯一性 | | ||
| 17 | -| 缴费年期 | ["整付"] | ✅ 请确认缴费年期选项 | | ||
| 18 | -| 年龄范围 | 0-75岁 | ✅ 请确认年龄范围 | | ||
| 19 | -| 保险期间 | 终身 | ✅ 请确认保险期间 | | ||
| 20 | - | ||
| 21 | - | ||
| 22 | -### 💰 储蓄类产品特有字段 | ||
| 23 | - | ||
| 24 | -| 字段 | 提取值 | 需要确认 | | ||
| 25 | -|------|--------|---------| | ||
| 26 | -| 提取方式 | ["指定提取金额","最高固定提取金额"] | ✅ 请确认提取方式 | | ||
| 27 | -| 提取期 | ["1年","3年","5年","10年"] | ✅ 请确认提取期选项 | | ||
| 28 | - | ||
| 29 | - | ||
| 30 | ---- | ||
| 31 | - | ||
| 32 | -## 🤖 智能字段提取报告 | ||
| 33 | - | ||
| 34 | -### 匹配统计 | ||
| 35 | - | ||
| 36 | -- ✅ 成功匹配: 3 字段 | ||
| 37 | -- ⚠️ 使用默认值: 4 字段 | ||
| 38 | -- ❌ 未匹配(需人工补充): 1 字段 | ||
| 39 | - | ||
| 40 | -### ✅ 已成功匹配的字段 | ||
| 41 | - | ||
| 42 | -- product_type | ||
| 43 | -- payment_periods | ||
| 44 | -- withdrawal_modes | ||
| 45 | - | ||
| 46 | - | ||
| 47 | -### ⚠️ 使用默认值的字段 | ||
| 48 | - | ||
| 49 | -- **currency**: 未找到字段 "currency",使用默认值: "USD" | ||
| 50 | -- **age_range**: 未找到字段 "age_range",使用默认值: {"min":0,"max":75} | ||
| 51 | -- **insurance_period**: 未找到字段 "insurance_period",使用默认值: "终身" | ||
| 52 | -- **product_name**: 未找到产品名称,使用文件名: "计划书模版2" | ||
| 53 | - | ||
| 54 | - | ||
| 55 | - | ||
| 56 | -### ❌ 未匹配字段(需要人工补充) | ||
| 57 | - | ||
| 58 | - | ||
| 59 | -#### product_name | ||
| 60 | - | ||
| 61 | -- **原因**: 未找到匹配内容 | ||
| 62 | -- **建议值**: | ||
| 63 | - - 从文档标题提取 | ||
| 64 | - - 从第一行提取 | ||
| 65 | - - 手动输入产品全称 | ||
| 66 | - | ||
| 67 | - | ||
| 68 | - | ||
| 69 | ---- | ||
| 70 | - | ||
| 71 | -## 🧾 配置预览 | ||
| 72 | - | ||
| 73 | -```javascript | ||
| 74 | -{ | ||
| 75 | - "product_name": "计划书模版2", | ||
| 76 | - "product_type": "savings", | ||
| 77 | - "currency": "USD", | ||
| 78 | - "form_sn": "savings-2-55bcffc2", | ||
| 79 | - "payment_periods": [ | ||
| 80 | - "整付" | ||
| 81 | - ], | ||
| 82 | - "age_range": { | ||
| 83 | - "min": 0, | ||
| 84 | - "max": 75 | ||
| 85 | - }, | ||
| 86 | - "insurance_period": "终身", | ||
| 87 | - "is_savings": true, | ||
| 88 | - "withdrawal_modes": [ | ||
| 89 | - "指定提取金额", | ||
| 90 | - "最高固定提取金额" | ||
| 91 | - ], | ||
| 92 | - "withdrawal_periods": [ | ||
| 93 | - "1年", | ||
| 94 | - "3年", | ||
| 95 | - "5年", | ||
| 96 | - "10年" | ||
| 97 | - ] | ||
| 98 | -} | ||
| 99 | -``` | ||
| 100 | - | ||
| 101 | ---- | ||
| 102 | - | ||
| 103 | -## 📝 表单字段 (form_schema) | ||
| 104 | - | ||
| 105 | -```javascript | ||
| 106 | -{ | ||
| 107 | - "base_fields": [], | ||
| 108 | - "withdrawal_fields": [], | ||
| 109 | - "reset_map": {} | ||
| 110 | -} | ||
| 111 | -``` | ||
| 112 | - | ||
| 113 | ---- | ||
| 114 | - | ||
| 115 | -## 🔄 提交字段映射 (submit_mapping) | ||
| 116 | - | ||
| 117 | -```javascript | ||
| 118 | -{} | ||
| 119 | -``` | ||
| 120 | - | ||
| 121 | ---- | ||
| 122 | - | ||
| 123 | -## 🧩 生成配置片段 | ||
| 124 | - | ||
| 125 | -```javascript | ||
| 126 | -/** | ||
| 127 | - * 计划书模版2 | ||
| 128 | - * @added 2026-02-14T15:58:54.707Z | ||
| 129 | - * @source docs/to-parse/计划书模版2.docx | ||
| 130 | - */ | ||
| 131 | - 'savings-2-55bcffc2': { | ||
| 132 | - name: '计划书模版2', | ||
| 133 | - component: 'SavingsTemplate', | ||
| 134 | - category: 'savings', | ||
| 135 | - config: { | ||
| 136 | - currency: 'USD', | ||
| 137 | - payment_periods: ["整付"], | ||
| 138 | - age_range: { min: 0, max: 75 }, | ||
| 139 | - insurance_period: '终身', | ||
| 140 | - withdrawal_plan: { | ||
| 141 | - enabled: true, | ||
| 142 | - currencies: ['HKD', 'USD', 'CNY'], | ||
| 143 | - default_currency: 'USD', | ||
| 144 | - withdrawal_modes: ["指定提取金额","最高固定提取金额"], | ||
| 145 | - withdrawal_periods: ["1年","3年","5年","10年"] | ||
| 146 | - }, | ||
| 147 | - form_schema: savingsFormSchema, | ||
| 148 | - submit_mapping: savingsSubmitMapping | ||
| 149 | - } | ||
| 150 | - } | ||
| 151 | -``` | ||
| 152 | - | ||
| 153 | ---- | ||
| 154 | - | ||
| 155 | -## ✅ 审核检查清单 | ||
| 156 | - | ||
| 157 | -### 基础信息 | ||
| 158 | -- [ ] 产品名称正确 | ||
| 159 | -- [ ] 产品类型正确(savings/critical-illness/life-insurance) | ||
| 160 | -- [ ] 币种正确(USD/CNY/HKD/EUR) | ||
| 161 | -- [ ] form_sn 唯一且符合命名规范 | ||
| 162 | - | ||
| 163 | -### 缴费与年龄 | ||
| 164 | -- [ ] 缴费年期选项完整且正确 | ||
| 165 | -- [ ] 年龄范围合理 | ||
| 166 | -- [ ] 保险期间正确 | ||
| 167 | - | ||
| 168 | -### 储蓄类特有(如适用) | ||
| 169 | -- [ ] 提取方式正确 | ||
| 170 | -- [ ] 提取期选项完整 | ||
| 171 | -- [ ] 表单字段定义完整 | ||
| 172 | -- [ ] 提交字段映射正确 | ||
| 173 | - | ||
| 174 | ---- | ||
| 175 | - | ||
| 176 | -## 📋 审核后操作 | ||
| 177 | - | ||
| 178 | -### 确认无误 | ||
| 179 | -```bash | ||
| 180 | -# 1. 移动到 approved 目录 | ||
| 181 | -mv docs/parse-audit/pending/2026-02-14-计划书模版2.md \ | ||
| 182 | - docs/parse-audit/approved/ | ||
| 183 | - | ||
| 184 | -# 2. 合并到正式配置 | ||
| 185 | -# 手动复制或使用工具合并到 src/config/plan-templates.js | ||
| 186 | - | ||
| 187 | -# 3. 删除待审核文件(可选) | ||
| 188 | -rm docs/parse-audit/pending/2026-02-14-计划书模版2.md | ||
| 189 | -``` | ||
| 190 | - | ||
| 191 | -### 需要修改 | ||
| 192 | -1. 编辑本文件修正内容 | ||
| 193 | -2. 重新提交审核 | ||
| 194 | - | ||
| 195 | -### 放弃本次解析 | ||
| 196 | -```bash | ||
| 197 | -rm docs/parse-audit/pending/2026-02-14-计划书模版2.md | ||
| 198 | -``` | ||
| 199 | - | ||
| 200 | ---- | ||
| 201 | - | ||
| 202 | -## 审核状态 | ||
| 203 | - | ||
| 204 | -- [ ] 待审核 | ||
| 205 | -- [ ] 已通过 | ||
| 206 | -- [ ] 已拒绝 | ||
| 207 | - | ||
| 208 | -## 审核意见 | ||
| 209 | - | ||
| 210 | -```text | ||
| 211 | -``` |
| 1 | -# 产品配置审核 - 计划书模版3.docx | ||
| 2 | - | ||
| 3 | -**解析时间**: 2026/2/14 23:58:54 | ||
| 4 | -**原始文件**: 计划书模版3.docx | ||
| 5 | -**数据来源**: docs/to-parse/计划书模版3.docx | ||
| 6 | - | ||
| 7 | ---- | ||
| 8 | - | ||
| 9 | -## 📋 产品基本信息 | ||
| 10 | - | ||
| 11 | -| 字段 | 提取值 | 需要确认 | | ||
| 12 | -| -------- | ---------------------- | ------------------------ | | ||
| 13 | -| 产品名称 | 计划书模版3 | ✅ 请核对产品名称 | | ||
| 14 | -| 产品类型 | savings | ✅ 请确认产品类型 | | ||
| 15 | -| 币种 | USD | ✅ 请确认币种 | | ||
| 16 | -| form_sn | `savings-3-8f4f27ad` | ✅ 请确认 form_sn 唯一性 | | ||
| 17 | -| 缴费年期 | ["5年"] | ✅ 请确认缴费年期选项 | | ||
| 18 | -| 年龄范围 | 0-75岁 | ✅ 请确认年龄范围 | | ||
| 19 | -| 保险期间 | 终身 | ✅ 请确认保险期间 | | ||
| 20 | - | ||
| 21 | -### 💰 储蓄类产品特有字段 | ||
| 22 | - | ||
| 23 | -| 字段 | 提取值 | 需要确认 | | ||
| 24 | -| -------- | ------------------------------- | ------------------- | | ||
| 25 | -| 提取方式 | ["年龄指定金额","最高固定金额"] | ✅ 请确认提取方式 | | ||
| 26 | -| 提取期 | ["1年","3年","5年","10年"] | ✅ 请确认提取期选项 | | ||
| 27 | - | ||
| 28 | ---- | ||
| 29 | - | ||
| 30 | -## 🤖 智能字段提取报告 | ||
| 31 | - | ||
| 32 | -### 匹配统计 | ||
| 33 | - | ||
| 34 | -- ✅ 成功匹配: 1 字段 | ||
| 35 | -- ⚠️ 使用默认值: 5 字段 | ||
| 36 | -- ❌ 未匹配(需人工补充): 1 字段 | ||
| 37 | - | ||
| 38 | -### ✅ 已成功匹配的字段 | ||
| 39 | - | ||
| 40 | -- payment_periods | ||
| 41 | - | ||
| 42 | -### ⚠️ 使用默认值的字段 | ||
| 43 | - | ||
| 44 | -- **product_type**: 未找到字段 "product_type",使用默认值: "savings" | ||
| 45 | -- **currency**: 未找到字段 "currency",使用默认值: "USD" | ||
| 46 | -- **age_range**: 未找到字段 "age_range",使用默认值: {"min":0,"max":75} | ||
| 47 | -- **insurance_period**: 未找到字段 "insurance_period",使用默认值: "终身" | ||
| 48 | -- **product_name**: 未找到产品名称,使用文件名: "计划书模版3" | ||
| 49 | - | ||
| 50 | -### ❌ 未匹配字段(需要人工补充) | ||
| 51 | - | ||
| 52 | -#### product_name | ||
| 53 | - | ||
| 54 | -- **原因**: 未找到匹配内容 | ||
| 55 | -- **建议值**: | ||
| 56 | - - 从文档标题提取 | ||
| 57 | - - 从第一行提取 | ||
| 58 | - - 手动输入产品全称 | ||
| 59 | - | ||
| 60 | ---- | ||
| 61 | - | ||
| 62 | -## 🧾 配置预览 | ||
| 63 | - | ||
| 64 | -```javascript | ||
| 65 | -{ | ||
| 66 | - "product_name": "计划书模版3", | ||
| 67 | - "product_type": "savings", | ||
| 68 | - "currency": "USD", | ||
| 69 | - "form_sn": "savings-3-8f4f27ad", | ||
| 70 | - "payment_periods": [ | ||
| 71 | - "5年" | ||
| 72 | - ], | ||
| 73 | - "age_range": { | ||
| 74 | - "min": 0, | ||
| 75 | - "max": 75 | ||
| 76 | - }, | ||
| 77 | - "insurance_period": "终身", | ||
| 78 | - "is_savings": true, | ||
| 79 | - "withdrawal_modes": [ | ||
| 80 | - "年龄指定金额", | ||
| 81 | - "最高固定金额" | ||
| 82 | - ], | ||
| 83 | - "withdrawal_periods": [ | ||
| 84 | - "1年", | ||
| 85 | - "3年", | ||
| 86 | - "5年", | ||
| 87 | - "10年" | ||
| 88 | - ] | ||
| 89 | -} | ||
| 90 | -``` | ||
| 91 | - | ||
| 92 | ---- | ||
| 93 | - | ||
| 94 | -## 📝 表单字段 (form_schema) | ||
| 95 | - | ||
| 96 | -```javascript | ||
| 97 | -{ | ||
| 98 | - "base_fields": [], | ||
| 99 | - "withdrawal_fields": [], | ||
| 100 | - "reset_map": {} | ||
| 101 | -} | ||
| 102 | -``` | ||
| 103 | - | ||
| 104 | ---- | ||
| 105 | - | ||
| 106 | -## 🔄 提交字段映射 (submit_mapping) | ||
| 107 | - | ||
| 108 | -```javascript | ||
| 109 | -{} | ||
| 110 | -``` | ||
| 111 | - | ||
| 112 | ---- | ||
| 113 | - | ||
| 114 | -## 🧩 生成配置片段 | ||
| 115 | - | ||
| 116 | -```javascript | ||
| 117 | -/** | ||
| 118 | - * 计划书模版3 | ||
| 119 | - * @added 2026-02-14T15:58:54.729Z | ||
| 120 | - * @source docs/to-parse/计划书模版3.docx | ||
| 121 | - */ | ||
| 122 | - 'savings-3-8f4f27ad': { | ||
| 123 | - name: '计划书模版3', | ||
| 124 | - component: 'SavingsTemplate', | ||
| 125 | - category: 'savings', | ||
| 126 | - config: { | ||
| 127 | - currency: 'USD', | ||
| 128 | - payment_periods: ["5年"], | ||
| 129 | - age_range: { min: 0, max: 75 }, | ||
| 130 | - insurance_period: '终身', | ||
| 131 | - withdrawal_plan: { | ||
| 132 | - enabled: true, | ||
| 133 | - currencies: ['HKD', 'USD', 'CNY'], | ||
| 134 | - default_currency: 'USD', | ||
| 135 | - withdrawal_modes: ["年龄指定金额","最高固定金额"], | ||
| 136 | - withdrawal_periods: ["1年","3年","5年","10年"] | ||
| 137 | - }, | ||
| 138 | - form_schema: savingsFormSchema, | ||
| 139 | - submit_mapping: savingsSubmitMapping | ||
| 140 | - } | ||
| 141 | - } | ||
| 142 | -``` | ||
| 143 | - | ||
| 144 | ---- | ||
| 145 | - | ||
| 146 | -## ✅ 审核检查清单 | ||
| 147 | - | ||
| 148 | -### 基础信息 | ||
| 149 | - | ||
| 150 | -- [ ] 产品名称正确 | ||
| 151 | -- [ ] 产品类型正确(savings/critical-illness/life-insurance) | ||
| 152 | -- [ ] 币种正确(USD/CNY/HKD/EUR) | ||
| 153 | -- [ ] form_sn 唯一且符合命名规范 | ||
| 154 | - | ||
| 155 | -### 缴费与年龄 | ||
| 156 | - | ||
| 157 | -- [ ] 缴费年期选项完整且正确 | ||
| 158 | -- [ ] 年龄范围合理 | ||
| 159 | -- [ ] 保险期间正确 | ||
| 160 | - | ||
| 161 | -### 储蓄类特有(如适用) | ||
| 162 | - | ||
| 163 | -- [ ] 提取方式正确 | ||
| 164 | -- [ ] 提取期选项完整 | ||
| 165 | -- [ ] 表单字段定义完整 | ||
| 166 | -- [ ] 提交字段映射正确 | ||
| 167 | - | ||
| 168 | ---- | ||
| 169 | - | ||
| 170 | -## 📋 审核后操作 | ||
| 171 | - | ||
| 172 | -### 确认无误 | ||
| 173 | - | ||
| 174 | -```bash | ||
| 175 | -# 1. 移动到 approved 目录 | ||
| 176 | -mv docs/parse-audit/pending/2026-02-14-计划书模版3.md \ | ||
| 177 | - docs/parse-audit/approved/ | ||
| 178 | - | ||
| 179 | -# 2. 合并到正式配置 | ||
| 180 | -# 手动复制或使用工具合并到 src/config/plan-templates.js | ||
| 181 | - | ||
| 182 | -# 3. 删除待审核文件(可选) | ||
| 183 | -rm docs/parse-audit/pending/2026-02-14-计划书模版3.md | ||
| 184 | -``` | ||
| 185 | - | ||
| 186 | -### 需要修改 | ||
| 187 | - | ||
| 188 | -1. 编辑本文件修正内容 | ||
| 189 | -2. 重新提交审核 | ||
| 190 | - | ||
| 191 | -### 放弃本次解析 | ||
| 192 | - | ||
| 193 | -```bash | ||
| 194 | -rm docs/parse-audit/pending/2026-02-14-计划书模版3.md | ||
| 195 | -``` | ||
| 196 | - | ||
| 197 | ---- | ||
| 198 | - | ||
| 199 | -## 审核状态 | ||
| 200 | - | ||
| 201 | -- [ ] 待审核 | ||
| 202 | -- [ ] 已通过 | ||
| 203 | -- [ ] 已拒绝 | ||
| 204 | - | ||
| 205 | -## 审核意见 | ||
| 206 | - | ||
| 207 | -```text | ||
| 208 | - | ||
| 209 | -``` |
| 1 | # 产品配置审核 - 计划书模版2.docx | 1 | # 产品配置审核 - 计划书模版2.docx |
| 2 | 2 | ||
| 3 | -**解析时间**: 2026/2/15 00:41:27 | 3 | +**解析时间**: 2026/2/15 10:20:30 |
| 4 | **原始文件**: 计划书模版2.docx | 4 | **原始文件**: 计划书模版2.docx |
| 5 | **数据来源**: docs/to-parse/计划书模版2.docx | 5 | **数据来源**: docs/to-parse/计划书模版2.docx |
| 6 | 6 | ||
| ... | @@ -116,7 +116,7 @@ | ... | @@ -116,7 +116,7 @@ |
| 116 | ```javascript | 116 | ```javascript |
| 117 | /** | 117 | /** |
| 118 | * 宏摯傳承保障計劃 - 性別, 年齡, 出生年月日 | 118 | * 宏摯傳承保障計劃 - 性別, 年齡, 出生年月日 |
| 119 | - * @added 2026-02-14T16:41:27.878Z | 119 | + * @added 2026-02-15T02:20:30.982Z |
| 120 | * @source docs/to-parse/计划书模版2.docx | 120 | * @source docs/to-parse/计划书模版2.docx |
| 121 | */ | 121 | */ |
| 122 | 'savings-product-ef3dd50b': { | 122 | 'savings-product-ef3dd50b': { |
| ... | @@ -169,14 +169,14 @@ | ... | @@ -169,14 +169,14 @@ |
| 169 | ### 确认无误 | 169 | ### 确认无误 |
| 170 | ```bash | 170 | ```bash |
| 171 | # 1. 移动到 approved 目录 | 171 | # 1. 移动到 approved 目录 |
| 172 | -mv docs/parse-audit/pending/2026-02-14-计划书模版2-宏摯傳承保障計劃-性別-年齡-出生年月日.md \ | 172 | +mv docs/parse-audit/pending/计划书模版2/2026-02-15-计划书模版2-宏摯傳承保障計劃-性別-年齡-出生年月日.md \ |
| 173 | docs/parse-audit/approved/ | 173 | docs/parse-audit/approved/ |
| 174 | 174 | ||
| 175 | # 2. 合并到正式配置 | 175 | # 2. 合并到正式配置 |
| 176 | # 手动复制或使用工具合并到 src/config/plan-templates.js | 176 | # 手动复制或使用工具合并到 src/config/plan-templates.js |
| 177 | 177 | ||
| 178 | # 3. 删除待审核文件(可选) | 178 | # 3. 删除待审核文件(可选) |
| 179 | -rm docs/parse-audit/pending/2026-02-14-计划书模版2-宏摯傳承保障計劃-性別-年齡-出生年月日.md | 179 | +rm docs/parse-audit/pending/计划书模版2/2026-02-15-计划书模版2-宏摯傳承保障計劃-性別-年齡-出生年月日.md |
| 180 | ``` | 180 | ``` |
| 181 | 181 | ||
| 182 | ### 需要修改 | 182 | ### 需要修改 |
| ... | @@ -185,7 +185,7 @@ rm docs/parse-audit/pending/2026-02-14-计划书模版2-宏摯傳承保障計劃 | ... | @@ -185,7 +185,7 @@ rm docs/parse-audit/pending/2026-02-14-计划书模版2-宏摯傳承保障計劃 |
| 185 | 185 | ||
| 186 | ### 放弃本次解析 | 186 | ### 放弃本次解析 |
| 187 | ```bash | 187 | ```bash |
| 188 | -rm docs/parse-audit/pending/2026-02-14-计划书模版2-宏摯傳承保障計劃-性別-年齡-出生年月日.md | 188 | +rm docs/parse-audit/pending/计划书模版2/2026-02-15-计划书模版2-宏摯傳承保障計劃-性別-年齡-出生年月日.md |
| 189 | ``` | 189 | ``` |
| 190 | 190 | ||
| 191 | --- | 191 | --- | ... | ... |
| 1 | # 产品配置审核 - 计划书模版2.docx | 1 | # 产品配置审核 - 计划书模版2.docx |
| 2 | 2 | ||
| 3 | -**解析时间**: 2026/2/15 00:41:27 | 3 | +**解析时间**: 2026/2/15 10:20:30 |
| 4 | **原始文件**: 计划书模版2.docx | 4 | **原始文件**: 计划书模版2.docx |
| 5 | **数据来源**: docs/to-parse/计划书模版2.docx | 5 | **数据来源**: docs/to-parse/计划书模版2.docx |
| 6 | 6 | ||
| ... | @@ -114,7 +114,7 @@ | ... | @@ -114,7 +114,7 @@ |
| 114 | ```javascript | 114 | ```javascript |
| 115 | /** | 115 | /** |
| 116 | * 宏摯家傳承保險計劃- 性別, 年齡, 出生年月日 | 116 | * 宏摯家傳承保險計劃- 性別, 年齡, 出生年月日 |
| 117 | - * @added 2026-02-14T16:41:27.893Z | 117 | + * @added 2026-02-15T02:20:30.997Z |
| 118 | * @source docs/to-parse/计划书模版2.docx | 118 | * @source docs/to-parse/计划书模版2.docx |
| 119 | */ | 119 | */ |
| 120 | 'savings-product-aaaa60f8': { | 120 | 'savings-product-aaaa60f8': { |
| ... | @@ -167,14 +167,14 @@ | ... | @@ -167,14 +167,14 @@ |
| 167 | ### 确认无误 | 167 | ### 确认无误 |
| 168 | ```bash | 168 | ```bash |
| 169 | # 1. 移动到 approved 目录 | 169 | # 1. 移动到 approved 目录 |
| 170 | -mv docs/parse-audit/pending/2026-02-14-计划书模版2-宏摯家傳承保險計劃-性別-年齡-出生年月日.md \ | 170 | +mv docs/parse-audit/pending/计划书模版2/2026-02-15-计划书模版2-宏摯家傳承保險計劃-性別-年齡-出生年月日.md \ |
| 171 | docs/parse-audit/approved/ | 171 | docs/parse-audit/approved/ |
| 172 | 172 | ||
| 173 | # 2. 合并到正式配置 | 173 | # 2. 合并到正式配置 |
| 174 | # 手动复制或使用工具合并到 src/config/plan-templates.js | 174 | # 手动复制或使用工具合并到 src/config/plan-templates.js |
| 175 | 175 | ||
| 176 | # 3. 删除待审核文件(可选) | 176 | # 3. 删除待审核文件(可选) |
| 177 | -rm docs/parse-audit/pending/2026-02-14-计划书模版2-宏摯家傳承保險計劃-性別-年齡-出生年月日.md | 177 | +rm docs/parse-audit/pending/计划书模版2/2026-02-15-计划书模版2-宏摯家傳承保險計劃-性別-年齡-出生年月日.md |
| 178 | ``` | 178 | ``` |
| 179 | 179 | ||
| 180 | ### 需要修改 | 180 | ### 需要修改 |
| ... | @@ -183,7 +183,7 @@ rm docs/parse-audit/pending/2026-02-14-计划书模版2-宏摯家傳承保險計 | ... | @@ -183,7 +183,7 @@ rm docs/parse-audit/pending/2026-02-14-计划书模版2-宏摯家傳承保險計 |
| 183 | 183 | ||
| 184 | ### 放弃本次解析 | 184 | ### 放弃本次解析 |
| 185 | ```bash | 185 | ```bash |
| 186 | -rm docs/parse-audit/pending/2026-02-14-计划书模版2-宏摯家傳承保險計劃-性別-年齡-出生年月日.md | 186 | +rm docs/parse-audit/pending/计划书模版2/2026-02-15-计划书模版2-宏摯家傳承保險計劃-性別-年齡-出生年月日.md |
| 187 | ``` | 187 | ``` |
| 188 | 188 | ||
| 189 | --- | 189 | --- | ... | ... |
| 1 | # 产品配置审核 - 计划书模版2.docx | 1 | # 产品配置审核 - 计划书模版2.docx |
| 2 | 2 | ||
| 3 | -**解析时间**: 2026/2/15 00:41:27 | 3 | +**解析时间**: 2026/2/15 10:20:30 |
| 4 | **原始文件**: 计划书模版2.docx | 4 | **原始文件**: 计划书模版2.docx |
| 5 | **数据来源**: docs/to-parse/计划书模版2.docx | 5 | **数据来源**: docs/to-parse/计划书模版2.docx |
| 6 | 6 | ||
| ... | @@ -114,7 +114,7 @@ | ... | @@ -114,7 +114,7 @@ |
| 114 | ```javascript | 114 | ```javascript |
| 115 | /** | 115 | /** |
| 116 | * 宏浚傳承保障計劃 | 116 | * 宏浚傳承保障計劃 |
| 117 | - * @added 2026-02-14T16:41:27.893Z | 117 | + * @added 2026-02-15T02:20:30.997Z |
| 118 | * @source docs/to-parse/计划书模版2.docx | 118 | * @source docs/to-parse/计划书模版2.docx |
| 119 | */ | 119 | */ |
| 120 | 'savings-product-d1581522': { | 120 | 'savings-product-d1581522': { |
| ... | @@ -167,14 +167,14 @@ | ... | @@ -167,14 +167,14 @@ |
| 167 | ### 确认无误 | 167 | ### 确认无误 |
| 168 | ```bash | 168 | ```bash |
| 169 | # 1. 移动到 approved 目录 | 169 | # 1. 移动到 approved 目录 |
| 170 | -mv docs/parse-audit/pending/2026-02-14-计划书模版2-宏浚傳承保障計劃.md \ | 170 | +mv docs/parse-audit/pending/计划书模版2/2026-02-15-计划书模版2-宏浚傳承保障計劃.md \ |
| 171 | docs/parse-audit/approved/ | 171 | docs/parse-audit/approved/ |
| 172 | 172 | ||
| 173 | # 2. 合并到正式配置 | 173 | # 2. 合并到正式配置 |
| 174 | # 手动复制或使用工具合并到 src/config/plan-templates.js | 174 | # 手动复制或使用工具合并到 src/config/plan-templates.js |
| 175 | 175 | ||
| 176 | # 3. 删除待审核文件(可选) | 176 | # 3. 删除待审核文件(可选) |
| 177 | -rm docs/parse-audit/pending/2026-02-14-计划书模版2-宏浚傳承保障計劃.md | 177 | +rm docs/parse-audit/pending/计划书模版2/2026-02-15-计划书模版2-宏浚傳承保障計劃.md |
| 178 | ``` | 178 | ``` |
| 179 | 179 | ||
| 180 | ### 需要修改 | 180 | ### 需要修改 |
| ... | @@ -183,7 +183,7 @@ rm docs/parse-audit/pending/2026-02-14-计划书模版2-宏浚傳承保障計劃 | ... | @@ -183,7 +183,7 @@ rm docs/parse-audit/pending/2026-02-14-计划书模版2-宏浚傳承保障計劃 |
| 183 | 183 | ||
| 184 | ### 放弃本次解析 | 184 | ### 放弃本次解析 |
| 185 | ```bash | 185 | ```bash |
| 186 | -rm docs/parse-audit/pending/2026-02-14-计划书模版2-宏浚傳承保障計劃.md | 186 | +rm docs/parse-audit/pending/计划书模版2/2026-02-15-计划书模版2-宏浚傳承保障計劃.md |
| 187 | ``` | 187 | ``` |
| 188 | 188 | ||
| 189 | --- | 189 | --- | ... | ... |
| 1 | # 产品配置审核 - 计划书模版2.docx | 1 | # 产品配置审核 - 计划书模版2.docx |
| 2 | 2 | ||
| 3 | -**解析时间**: 2026/2/15 00:41:27 | 3 | +**解析时间**: 2026/2/15 10:20:30 |
| 4 | **原始文件**: 计划书模版2.docx | 4 | **原始文件**: 计划书模版2.docx |
| 5 | **数据来源**: docs/to-parse/计划书模版2.docx | 5 | **数据来源**: docs/to-parse/计划书模版2.docx |
| 6 | 6 | ||
| ... | @@ -115,7 +115,7 @@ | ... | @@ -115,7 +115,7 @@ |
| 115 | ```javascript | 115 | ```javascript |
| 116 | /** | 116 | /** |
| 117 | * 赤霞珠終身壽險計劃2基本人壽保障選項 | 117 | * 赤霞珠終身壽險計劃2基本人壽保障選項 |
| 118 | - * @added 2026-02-14T16:41:27.893Z | 118 | + * @added 2026-02-15T02:20:30.997Z |
| 119 | * @source docs/to-parse/计划书模版2.docx | 119 | * @source docs/to-parse/计划书模版2.docx |
| 120 | */ | 120 | */ |
| 121 | 'savings-2-031c1237': { | 121 | 'savings-2-031c1237': { |
| ... | @@ -168,14 +168,14 @@ | ... | @@ -168,14 +168,14 @@ |
| 168 | ### 确认无误 | 168 | ### 确认无误 |
| 169 | ```bash | 169 | ```bash |
| 170 | # 1. 移动到 approved 目录 | 170 | # 1. 移动到 approved 目录 |
| 171 | -mv docs/parse-audit/pending/2026-02-14-计划书模版2-赤霞珠終身壽險計劃2基本人壽保障選項.md \ | 171 | +mv docs/parse-audit/pending/计划书模版2/2026-02-15-计划书模版2-赤霞珠終身壽險計劃2基本人壽保障選項.md \ |
| 172 | docs/parse-audit/approved/ | 172 | docs/parse-audit/approved/ |
| 173 | 173 | ||
| 174 | # 2. 合并到正式配置 | 174 | # 2. 合并到正式配置 |
| 175 | # 手动复制或使用工具合并到 src/config/plan-templates.js | 175 | # 手动复制或使用工具合并到 src/config/plan-templates.js |
| 176 | 176 | ||
| 177 | # 3. 删除待审核文件(可选) | 177 | # 3. 删除待审核文件(可选) |
| 178 | -rm docs/parse-audit/pending/2026-02-14-计划书模版2-赤霞珠終身壽險計劃2基本人壽保障選項.md | 178 | +rm docs/parse-audit/pending/计划书模版2/2026-02-15-计划书模版2-赤霞珠終身壽險計劃2基本人壽保障選項.md |
| 179 | ``` | 179 | ``` |
| 180 | 180 | ||
| 181 | ### 需要修改 | 181 | ### 需要修改 |
| ... | @@ -184,7 +184,7 @@ rm docs/parse-audit/pending/2026-02-14-计划书模版2-赤霞珠終身壽險計 | ... | @@ -184,7 +184,7 @@ rm docs/parse-audit/pending/2026-02-14-计划书模版2-赤霞珠終身壽險計 |
| 184 | 184 | ||
| 185 | ### 放弃本次解析 | 185 | ### 放弃本次解析 |
| 186 | ```bash | 186 | ```bash |
| 187 | -rm docs/parse-audit/pending/2026-02-14-计划书模版2-赤霞珠終身壽險計劃2基本人壽保障選項.md | 187 | +rm docs/parse-audit/pending/计划书模版2/2026-02-15-计划书模版2-赤霞珠終身壽險計劃2基本人壽保障選項.md |
| 188 | ``` | 188 | ``` |
| 189 | 189 | ||
| 190 | --- | 190 | --- | ... | ... |
| ... | @@ -24,3 +24,6 @@ | ... | @@ -24,3 +24,6 @@ |
| 24 | {"at":"2026-02-14T16:39:56.947Z","mode":"single","options":{"dry_run":true},"summary":{"total_docs":1,"total_products":4,"success":4,"failed":0,"duration_ms":46,"success_list":[{"form_sn":"savings-product-ef3dd50b","product_name":"宏摯傳承保障計劃 - 性別, 年齡, 出生年月日","file":"计划书模版2.docx"},{"form_sn":"savings-product-aaaa60f8","product_name":"宏摯家傳承保險計劃- 性別, 年齡, 出生年月日","file":"计划书模版2.docx"},{"form_sn":"savings-product-d1581522","product_name":"宏浚傳承保障計劃","file":"计划书模版2.docx"},{"form_sn":"savings-2-031c1237","product_name":"赤霞珠終身壽險計劃2基本人壽保障選項","file":"计划书模版2.docx"}],"failed_list":[]},"change_summary":{"ok":false,"dry_run":false,"updated_count":0,"form_sn_list":[],"conflicts":[],"reason":"insert_not_found"}} | 24 | {"at":"2026-02-14T16:39:56.947Z","mode":"single","options":{"dry_run":true},"summary":{"total_docs":1,"total_products":4,"success":4,"failed":0,"duration_ms":46,"success_list":[{"form_sn":"savings-product-ef3dd50b","product_name":"宏摯傳承保障計劃 - 性別, 年齡, 出生年月日","file":"计划书模版2.docx"},{"form_sn":"savings-product-aaaa60f8","product_name":"宏摯家傳承保險計劃- 性別, 年齡, 出生年月日","file":"计划书模版2.docx"},{"form_sn":"savings-product-d1581522","product_name":"宏浚傳承保障計劃","file":"计划书模版2.docx"},{"form_sn":"savings-2-031c1237","product_name":"赤霞珠終身壽險計劃2基本人壽保障選項","file":"计划书模版2.docx"}],"failed_list":[]},"change_summary":{"ok":false,"dry_run":false,"updated_count":0,"form_sn_list":[],"conflicts":[],"reason":"insert_not_found"}} |
| 25 | {"at":"2026-02-14T16:41:18.047Z","mode":"single","options":{"dry_run":true},"summary":{"total_docs":1,"total_products":4,"success":4,"failed":0,"duration_ms":46,"success_list":[{"form_sn":"savings-product-ef3dd50b","product_name":"宏摯傳承保障計劃 - 性別, 年齡, 出生年月日","file":"计划书模版2.docx"},{"form_sn":"savings-product-aaaa60f8","product_name":"宏摯家傳承保險計劃- 性別, 年齡, 出生年月日","file":"计划书模版2.docx"},{"form_sn":"savings-product-d1581522","product_name":"宏浚傳承保障計劃","file":"计划书模版2.docx"},{"form_sn":"savings-2-031c1237","product_name":"赤霞珠終身壽險計劃2基本人壽保障選項","file":"计划书模版2.docx"}],"failed_list":[]},"change_summary":{"ok":true,"dry_run":true,"updated_count":4,"form_sn_list":["savings-product-ef3dd50b","savings-product-aaaa60f8","savings-product-d1581522","savings-2-031c1237"],"conflicts":[],"reason":null,"diff_preview":"--- plan-templates.js\n+++ plan-templates.js\n+ /**\n+ * 宏摯傳承保障計劃 - 性別, 年齡, 出生年月日\n+ * @added 2026-02-14T16:41:18.029Z\n+ * @source docs/to-parse/计划书模版2.docx\n+ */\n+ 'savings-product-ef3dd50b': {\n+ name: '宏摯傳承保障計劃 - 性別, 年齡, 出生年月日',\n+ component: 'SavingsTemplate',\n+ category: 'savings',\n+ config: {\n+ currency: 'USD',\n+ payment_periods: [\"整付\",\"3年\",\"5年\",\"10年\",\"15年\"],\n+ age_range: { min: 0, max: 75 },\n+ insurance_period: '终身',\n+ withdrawal_plan: {\n+ enabled: true,\n+ currencies: ['HKD', 'USD', 'CNY'],\n+ default_currency: 'USD',\n+ withdrawal_modes: [\"最高固定提取金额\"],\n+ withdrawal_periods: [\"1年\",\"3年\",\"5年\",\"10年\"]\n+ },\n+ form_schema: savingsFormSchema,\n+ submit_mapping: savingsSubmitMapping\n+ }\n+ },\n+ \n+ /**\n+ * 宏摯家傳承保險計劃- 性別, 年齡, 出生年月日\n+ * @added 2026-02-14T16:41:18.044Z\n+ * @source docs/to-parse/计划书模版2.docx\n+ */\n+ 'savings-product-aaaa60f8': {\n+ name: '宏摯家傳承保險計劃- 性別, 年齡, 出生年月日',\n+ component: 'SavingsTemplate',\n+ category: 'savings',\n+ config: {\n+ currency: 'USD',\n+ payment_periods: [\"整付\",\"3年\",\"5年\"],\n+ age_range: { min: 0, max: 75 },\n+ insurance_period: '终身',\n+ withdrawal_plan: {\n+ enabled: true,\n+ currencies: ['HKD', 'USD', 'CNY'],\n+ default_currency: 'USD',\n+ withdrawal_modes: [\"年龄指定金额\",\"最高固定金额\"],\n+ withdrawal_periods: [\"1年\",\"3年\",\"5年\",\"10年\"]\n+ },\n+ form_schema: savingsFormSchema,\n+ submit_mapping: savingsSubmitMapping\n+ }\n+ },\n+ \n+ /**\n+ * 宏浚傳承保障計劃\n+ * @added 2026-02-14T16:41:18.044Z\n+ * @source docs/to-parse/计划书模版2.docx\n+ */\n+ 'savings-product-d1581522': {"}} | 25 | {"at":"2026-02-14T16:41:18.047Z","mode":"single","options":{"dry_run":true},"summary":{"total_docs":1,"total_products":4,"success":4,"failed":0,"duration_ms":46,"success_list":[{"form_sn":"savings-product-ef3dd50b","product_name":"宏摯傳承保障計劃 - 性別, 年齡, 出生年月日","file":"计划书模版2.docx"},{"form_sn":"savings-product-aaaa60f8","product_name":"宏摯家傳承保險計劃- 性別, 年齡, 出生年月日","file":"计划书模版2.docx"},{"form_sn":"savings-product-d1581522","product_name":"宏浚傳承保障計劃","file":"计划书模版2.docx"},{"form_sn":"savings-2-031c1237","product_name":"赤霞珠終身壽險計劃2基本人壽保障選項","file":"计划书模版2.docx"}],"failed_list":[]},"change_summary":{"ok":true,"dry_run":true,"updated_count":4,"form_sn_list":["savings-product-ef3dd50b","savings-product-aaaa60f8","savings-product-d1581522","savings-2-031c1237"],"conflicts":[],"reason":null,"diff_preview":"--- plan-templates.js\n+++ plan-templates.js\n+ /**\n+ * 宏摯傳承保障計劃 - 性別, 年齡, 出生年月日\n+ * @added 2026-02-14T16:41:18.029Z\n+ * @source docs/to-parse/计划书模版2.docx\n+ */\n+ 'savings-product-ef3dd50b': {\n+ name: '宏摯傳承保障計劃 - 性別, 年齡, 出生年月日',\n+ component: 'SavingsTemplate',\n+ category: 'savings',\n+ config: {\n+ currency: 'USD',\n+ payment_periods: [\"整付\",\"3年\",\"5年\",\"10年\",\"15年\"],\n+ age_range: { min: 0, max: 75 },\n+ insurance_period: '终身',\n+ withdrawal_plan: {\n+ enabled: true,\n+ currencies: ['HKD', 'USD', 'CNY'],\n+ default_currency: 'USD',\n+ withdrawal_modes: [\"最高固定提取金额\"],\n+ withdrawal_periods: [\"1年\",\"3年\",\"5年\",\"10年\"]\n+ },\n+ form_schema: savingsFormSchema,\n+ submit_mapping: savingsSubmitMapping\n+ }\n+ },\n+ \n+ /**\n+ * 宏摯家傳承保險計劃- 性別, 年齡, 出生年月日\n+ * @added 2026-02-14T16:41:18.044Z\n+ * @source docs/to-parse/计划书模版2.docx\n+ */\n+ 'savings-product-aaaa60f8': {\n+ name: '宏摯家傳承保險計劃- 性別, 年齡, 出生年月日',\n+ component: 'SavingsTemplate',\n+ category: 'savings',\n+ config: {\n+ currency: 'USD',\n+ payment_periods: [\"整付\",\"3年\",\"5年\"],\n+ age_range: { min: 0, max: 75 },\n+ insurance_period: '终身',\n+ withdrawal_plan: {\n+ enabled: true,\n+ currencies: ['HKD', 'USD', 'CNY'],\n+ default_currency: 'USD',\n+ withdrawal_modes: [\"年龄指定金额\",\"最高固定金额\"],\n+ withdrawal_periods: [\"1年\",\"3年\",\"5年\",\"10年\"]\n+ },\n+ form_schema: savingsFormSchema,\n+ submit_mapping: savingsSubmitMapping\n+ }\n+ },\n+ \n+ /**\n+ * 宏浚傳承保障計劃\n+ * @added 2026-02-14T16:41:18.044Z\n+ * @source docs/to-parse/计划书模版2.docx\n+ */\n+ 'savings-product-d1581522': {"}} |
| 26 | {"at":"2026-02-14T16:41:27.896Z","mode":"single","options":{"dry_run":true},"summary":{"total_docs":1,"total_products":4,"success":4,"failed":0,"duration_ms":47,"success_list":[{"form_sn":"savings-product-ef3dd50b","product_name":"宏摯傳承保障計劃 - 性別, 年齡, 出生年月日","file":"计划书模版2.docx"},{"form_sn":"savings-product-aaaa60f8","product_name":"宏摯家傳承保險計劃- 性別, 年齡, 出生年月日","file":"计划书模版2.docx"},{"form_sn":"savings-product-d1581522","product_name":"宏浚傳承保障計劃","file":"计划书模版2.docx"},{"form_sn":"savings-2-031c1237","product_name":"赤霞珠終身壽險計劃2基本人壽保障選項","file":"计划书模版2.docx"}],"failed_list":[]},"change_summary":{"ok":true,"dry_run":true,"updated_count":4,"form_sn_list":["savings-product-ef3dd50b","savings-product-aaaa60f8","savings-product-d1581522","savings-2-031c1237"],"conflicts":[],"reason":null,"diff_preview":"--- plan-templates.js\n+++ plan-templates.js\n+ /**\n+ * 宏摯傳承保障計劃 - 性別, 年齡, 出生年月日\n+ * @added 2026-02-14T16:41:27.878Z\n+ * @source docs/to-parse/计划书模版2.docx\n+ */\n+ 'savings-product-ef3dd50b': {\n+ name: '宏摯傳承保障計劃 - 性別, 年齡, 出生年月日',\n+ component: 'SavingsTemplate',\n+ category: 'savings',\n+ config: {\n+ currency: 'USD',\n+ payment_periods: [\"整付\",\"3年\",\"5年\",\"10年\",\"15年\"],\n+ age_range: { min: 0, max: 75 },\n+ insurance_period: '终身',\n+ withdrawal_plan: {\n+ enabled: true,\n+ currencies: ['HKD', 'USD', 'CNY'],\n+ default_currency: 'USD',\n+ withdrawal_modes: [\"最高固定提取金额\"],\n+ withdrawal_periods: [\"1年\",\"3年\",\"5年\",\"10年\"]\n+ },\n+ form_schema: savingsFormSchema,\n+ submit_mapping: savingsSubmitMapping\n+ }\n+ },\n+ \n+ /**\n+ * 宏摯家傳承保險計劃- 性別, 年齡, 出生年月日\n+ * @added 2026-02-14T16:41:27.893Z\n+ * @source docs/to-parse/计划书模版2.docx\n+ */\n+ 'savings-product-aaaa60f8': {\n+ name: '宏摯家傳承保險計劃- 性別, 年齡, 出生年月日',\n+ component: 'SavingsTemplate',\n+ category: 'savings',\n+ config: {\n+ currency: 'USD',\n+ payment_periods: [\"整付\",\"3年\",\"5年\"],\n+ age_range: { min: 0, max: 75 },\n+ insurance_period: '终身',\n+ withdrawal_plan: {\n+ enabled: true,\n+ currencies: ['HKD', 'USD', 'CNY'],\n+ default_currency: 'USD',\n+ withdrawal_modes: [\"年龄指定金额\",\"最高固定金额\"],\n+ withdrawal_periods: [\"1年\",\"3年\",\"5年\",\"10年\"]\n+ },\n+ form_schema: savingsFormSchema,\n+ submit_mapping: savingsSubmitMapping\n+ }\n+ },\n+ \n+ /**\n+ * 宏浚傳承保障計劃\n+ * @added 2026-02-14T16:41:27.893Z\n+ * @source docs/to-parse/计划书模版2.docx\n+ */\n+ 'savings-product-d1581522': {"}} | 26 | {"at":"2026-02-14T16:41:27.896Z","mode":"single","options":{"dry_run":true},"summary":{"total_docs":1,"total_products":4,"success":4,"failed":0,"duration_ms":47,"success_list":[{"form_sn":"savings-product-ef3dd50b","product_name":"宏摯傳承保障計劃 - 性別, 年齡, 出生年月日","file":"计划书模版2.docx"},{"form_sn":"savings-product-aaaa60f8","product_name":"宏摯家傳承保險計劃- 性別, 年齡, 出生年月日","file":"计划书模版2.docx"},{"form_sn":"savings-product-d1581522","product_name":"宏浚傳承保障計劃","file":"计划书模版2.docx"},{"form_sn":"savings-2-031c1237","product_name":"赤霞珠終身壽險計劃2基本人壽保障選項","file":"计划书模版2.docx"}],"failed_list":[]},"change_summary":{"ok":true,"dry_run":true,"updated_count":4,"form_sn_list":["savings-product-ef3dd50b","savings-product-aaaa60f8","savings-product-d1581522","savings-2-031c1237"],"conflicts":[],"reason":null,"diff_preview":"--- plan-templates.js\n+++ plan-templates.js\n+ /**\n+ * 宏摯傳承保障計劃 - 性別, 年齡, 出生年月日\n+ * @added 2026-02-14T16:41:27.878Z\n+ * @source docs/to-parse/计划书模版2.docx\n+ */\n+ 'savings-product-ef3dd50b': {\n+ name: '宏摯傳承保障計劃 - 性別, 年齡, 出生年月日',\n+ component: 'SavingsTemplate',\n+ category: 'savings',\n+ config: {\n+ currency: 'USD',\n+ payment_periods: [\"整付\",\"3年\",\"5年\",\"10年\",\"15年\"],\n+ age_range: { min: 0, max: 75 },\n+ insurance_period: '终身',\n+ withdrawal_plan: {\n+ enabled: true,\n+ currencies: ['HKD', 'USD', 'CNY'],\n+ default_currency: 'USD',\n+ withdrawal_modes: [\"最高固定提取金额\"],\n+ withdrawal_periods: [\"1年\",\"3年\",\"5年\",\"10年\"]\n+ },\n+ form_schema: savingsFormSchema,\n+ submit_mapping: savingsSubmitMapping\n+ }\n+ },\n+ \n+ /**\n+ * 宏摯家傳承保險計劃- 性別, 年齡, 出生年月日\n+ * @added 2026-02-14T16:41:27.893Z\n+ * @source docs/to-parse/计划书模版2.docx\n+ */\n+ 'savings-product-aaaa60f8': {\n+ name: '宏摯家傳承保險計劃- 性別, 年齡, 出生年月日',\n+ component: 'SavingsTemplate',\n+ category: 'savings',\n+ config: {\n+ currency: 'USD',\n+ payment_periods: [\"整付\",\"3年\",\"5年\"],\n+ age_range: { min: 0, max: 75 },\n+ insurance_period: '终身',\n+ withdrawal_plan: {\n+ enabled: true,\n+ currencies: ['HKD', 'USD', 'CNY'],\n+ default_currency: 'USD',\n+ withdrawal_modes: [\"年龄指定金额\",\"最高固定金额\"],\n+ withdrawal_periods: [\"1年\",\"3年\",\"5年\",\"10年\"]\n+ },\n+ form_schema: savingsFormSchema,\n+ submit_mapping: savingsSubmitMapping\n+ }\n+ },\n+ \n+ /**\n+ * 宏浚傳承保障計劃\n+ * @added 2026-02-14T16:41:27.893Z\n+ * @source docs/to-parse/计划书模版2.docx\n+ */\n+ 'savings-product-d1581522': {"}} |
| 27 | +{"at":"2026-02-15T02:10:06.819Z","mode":"batch","options":{"dry_run":true},"summary":{"total_docs":2,"total_products":5,"success":5,"failed":0,"duration_ms":73,"success_list":[{"form_sn":"savings-product-ef3dd50b","product_name":"宏摯傳承保障計劃 - 性別, 年齡, 出生年月日","file":"计划书模版2.docx"},{"form_sn":"savings-product-aaaa60f8","product_name":"宏摯家傳承保險計劃- 性別, 年齡, 出生年月日","file":"计划书模版2.docx"},{"form_sn":"savings-product-d1581522","product_name":"宏浚傳承保障計劃","file":"计划书模版2.docx"},{"form_sn":"savings-2-031c1237","product_name":"赤霞珠終身壽險計劃2基本人壽保障選項","file":"计划书模版2.docx"},{"form_sn":"savings-3-8f4f27ad","product_name":"计划书模版3","file":"计划书模版3.docx"}],"failed_list":[],"total":5},"change_summary":{"ok":true,"dry_run":true,"updated_count":5,"form_sn_list":["savings-product-ef3dd50b","savings-product-aaaa60f8","savings-product-d1581522","savings-2-031c1237","savings-3-8f4f27ad"],"conflicts":[],"reason":null,"diff_preview":"--- plan-templates.js\n+++ plan-templates.js\n+ /**\n+ * 宏摯傳承保障計劃 - 性別, 年齡, 出生年月日\n+ * @added 2026-02-15T02:10:06.768Z\n+ * @source docs/to-parse/计划书模版2.docx\n+ */\n+ 'savings-product-ef3dd50b': {\n+ name: '宏摯傳承保障計劃 - 性別, 年齡, 出生年月日',\n+ component: 'SavingsTemplate',\n+ category: 'savings',\n+ config: {\n+ currency: 'USD',\n+ payment_periods: [\"整付\",\"3年\",\"5年\",\"10年\",\"15年\"],\n+ age_range: { min: 0, max: 75 },\n+ insurance_period: '终身',\n+ withdrawal_plan: {\n+ enabled: true,\n+ currencies: ['HKD', 'USD', 'CNY'],\n+ default_currency: 'USD',\n+ withdrawal_modes: [\"最高固定提取金额\"],\n+ withdrawal_periods: [\"1年\",\"3年\",\"5年\",\"10年\"]\n+ },\n+ form_schema: savingsFormSchema,\n+ submit_mapping: savingsSubmitMapping\n+ }\n+ },\n+ \n+ /**\n+ * 宏摯家傳承保險計劃- 性別, 年齡, 出生年月日\n+ * @added 2026-02-15T02:10:06.803Z\n+ * @source docs/to-parse/计划书模版2.docx\n+ */\n+ 'savings-product-aaaa60f8': {\n+ name: '宏摯家傳承保險計劃- 性別, 年齡, 出生年月日',\n+ component: 'SavingsTemplate',\n+ category: 'savings',\n+ config: {\n+ currency: 'USD',\n+ payment_periods: [\"整付\",\"3年\",\"5年\"],\n+ age_range: { min: 0, max: 75 },\n+ insurance_period: '终身',\n+ withdrawal_plan: {\n+ enabled: true,\n+ currencies: ['HKD', 'USD', 'CNY'],\n+ default_currency: 'USD',\n+ withdrawal_modes: [\"年龄指定金额\",\"最高固定金额\"],\n+ withdrawal_periods: [\"1年\",\"3年\",\"5年\",\"10年\"]\n+ },\n+ form_schema: savingsFormSchema,\n+ submit_mapping: savingsSubmitMapping\n+ }\n+ },\n+ \n+ /**\n+ * 宏浚傳承保障計劃\n+ * @added 2026-02-15T02:10:06.803Z\n+ * @source docs/to-parse/计划书模版2.docx\n+ */\n+ 'savings-product-d1581522': {"}} | ||
| 28 | +{"at":"2026-02-15T02:19:44.455Z","mode":"batch","options":{"dry_run":true},"summary":{"total_docs":1,"total_products":1,"success":1,"failed":0,"duration_ms":39,"success_list":[{"form_sn":"savings-3-8f4f27ad","product_name":"计划书模版3","file":"计划书模版3.docx"}],"failed_list":[],"total":1},"change_summary":{"ok":true,"dry_run":true,"updated_count":1,"form_sn_list":["savings-3-8f4f27ad"],"conflicts":[],"reason":null,"diff_preview":"--- plan-templates.js\n+++ plan-templates.js\n+ /**\n+ * 计划书模版3\n+ * @added 2026-02-15T02:19:44.438Z\n+ * @source docs/to-parse/计划书模版3.docx\n+ */\n+ 'savings-3-8f4f27ad': {\n+ name: '计划书模版3',\n+ component: 'SavingsTemplate',\n+ category: 'savings',\n+ config: {\n+ currency: 'USD',\n+ payment_periods: [\"5年\",\"8年\",\"12年\",\"15年\"],\n+ age_range: { min: 0, max: 75 },\n+ insurance_period: '终身',\n+ withdrawal_plan: {\n+ enabled: true,\n+ currencies: ['HKD', 'USD', 'CNY'],\n+ default_currency: 'USD',\n+ withdrawal_modes: [\"年龄指定金额\",\"最高固定金额\"],\n+ withdrawal_periods: [\"1年\",\"3年\",\"5年\",\"10年\"]\n+ },\n+ form_schema: savingsFormSchema,\n+ submit_mapping: savingsSubmitMapping\n+ }\n+ }"}} | ||
| 29 | +{"at":"2026-02-15T02:20:31.001Z","mode":"batch","options":{"dry_run":true},"summary":{"total_docs":1,"total_products":4,"success":4,"failed":0,"duration_ms":47,"success_list":[{"form_sn":"savings-product-ef3dd50b","product_name":"宏摯傳承保障計劃 - 性別, 年齡, 出生年月日","file":"计划书模版2.docx"},{"form_sn":"savings-product-aaaa60f8","product_name":"宏摯家傳承保險計劃- 性別, 年齡, 出生年月日","file":"计划书模版2.docx"},{"form_sn":"savings-product-d1581522","product_name":"宏浚傳承保障計劃","file":"计划书模版2.docx"},{"form_sn":"savings-2-031c1237","product_name":"赤霞珠終身壽險計劃2基本人壽保障選項","file":"计划书模版2.docx"}],"failed_list":[],"total":4},"change_summary":{"ok":true,"dry_run":true,"updated_count":4,"form_sn_list":["savings-product-ef3dd50b","savings-product-aaaa60f8","savings-product-d1581522","savings-2-031c1237"],"conflicts":[],"reason":null,"diff_preview":"--- plan-templates.js\n+++ plan-templates.js\n+ /**\n+ * 宏摯傳承保障計劃 - 性別, 年齡, 出生年月日\n+ * @added 2026-02-15T02:20:30.982Z\n+ * @source docs/to-parse/计划书模版2.docx\n+ */\n+ 'savings-product-ef3dd50b': {\n+ name: '宏摯傳承保障計劃 - 性別, 年齡, 出生年月日',\n+ component: 'SavingsTemplate',\n+ category: 'savings',\n+ config: {\n+ currency: 'USD',\n+ payment_periods: [\"整付\",\"3年\",\"5年\",\"10年\",\"15年\"],\n+ age_range: { min: 0, max: 75 },\n+ insurance_period: '终身',\n+ withdrawal_plan: {\n+ enabled: true,\n+ currencies: ['HKD', 'USD', 'CNY'],\n+ default_currency: 'USD',\n+ withdrawal_modes: [\"最高固定提取金额\"],\n+ withdrawal_periods: [\"1年\",\"3年\",\"5年\",\"10年\"]\n+ },\n+ form_schema: savingsFormSchema,\n+ submit_mapping: savingsSubmitMapping\n+ }\n+ },\n+ \n+ /**\n+ * 宏摯家傳承保險計劃- 性別, 年齡, 出生年月日\n+ * @added 2026-02-15T02:20:30.997Z\n+ * @source docs/to-parse/计划书模版2.docx\n+ */\n+ 'savings-product-aaaa60f8': {\n+ name: '宏摯家傳承保險計劃- 性別, 年齡, 出生年月日',\n+ component: 'SavingsTemplate',\n+ category: 'savings',\n+ config: {\n+ currency: 'USD',\n+ payment_periods: [\"整付\",\"3年\",\"5年\"],\n+ age_range: { min: 0, max: 75 },\n+ insurance_period: '终身',\n+ withdrawal_plan: {\n+ enabled: true,\n+ currencies: ['HKD', 'USD', 'CNY'],\n+ default_currency: 'USD',\n+ withdrawal_modes: [\"年龄指定金额\",\"最高固定金额\"],\n+ withdrawal_periods: [\"1年\",\"3年\",\"5年\",\"10年\"]\n+ },\n+ form_schema: savingsFormSchema,\n+ submit_mapping: savingsSubmitMapping\n+ }\n+ },\n+ \n+ /**\n+ * 宏浚傳承保障計劃\n+ * @added 2026-02-15T02:20:30.997Z\n+ * @source docs/to-parse/计划书模版2.docx\n+ */\n+ 'savings-product-d1581522': {"}} | ... | ... |
| ... | @@ -34,10 +34,16 @@ pnpm run parse:docs:file -- --file="产品说明书.pdf" --write-config | ... | @@ -34,10 +34,16 @@ pnpm run parse:docs:file -- --file="产品说明书.pdf" --write-config |
| 34 | 34 | ||
| 35 | ### 3. 查看结果 | 35 | ### 3. 查看结果 |
| 36 | 36 | ||
| 37 | -解析成功后会生成待审核文件,位置如下: | 37 | +解析成功后会生成待审核文件,位置如下(按原始文档名分目录): |
| 38 | 38 | ||
| 39 | ``` | 39 | ``` |
| 40 | -docs/parse-audit/pending/ | 40 | +docs/parse-audit/pending/<原始文档名>/ |
| 41 | +``` | ||
| 42 | + | ||
| 43 | +解析成功后原始文档会自动归档到: | ||
| 44 | + | ||
| 45 | +``` | ||
| 46 | +docs/to-parse/archived/YYYY-MM-DD/ | ||
| 41 | ``` | 47 | ``` |
| 42 | 48 | ||
| 43 | 审核通过后再手动合并到 `src/config/plan-templates.js`,或使用 `--write-config` 明确写入。 | 49 | 审核通过后再手动合并到 `src/config/plan-templates.js`,或使用 `--write-config` 明确写入。 |
| ... | @@ -103,3 +109,4 @@ docs/parsed-backup/parse-audit.jsonl | ... | @@ -103,3 +109,4 @@ docs/parsed-backup/parse-audit.jsonl |
| 103 | 1. **文档命名**:建议使用有意义的文件名,方便识别产品 | 109 | 1. **文档命名**:建议使用有意义的文件名,方便识别产品 |
| 104 | 2. **手动审核**:生成后请检查配置是否正确 | 110 | 2. **手动审核**:生成后请检查配置是否正确 |
| 105 | 3. **版本控制**:生成的配置会自动备份 | 111 | 3. **版本控制**:生成的配置会自动备份 |
| 112 | +4. **二次解析**:需要重新解析时,将归档文件移回 `docs/to-parse/` | ... | ... |
scripts/README.md
deleted
100644 → 0
| 1 | -# 文档解析工具使用指南 | ||
| 2 | - | ||
| 3 | -## 功能概述 | ||
| 4 | - | ||
| 5 | -文档解析工具用于将保险产品文档(PDF、DOCX)自动解析为计划书配置,支持智能识别产品类型、币种、缴费年期等信息。 | ||
| 6 | - | ||
| 7 | -## 快速开始 | ||
| 8 | - | ||
| 9 | -### 1. 查看待处理文档 | ||
| 10 | - | ||
| 11 | -```bash | ||
| 12 | -npm run parse:docs:list | ||
| 13 | -``` | ||
| 14 | - | ||
| 15 | -### 2. 查看配置状态 | ||
| 16 | - | ||
| 17 | -```bash | ||
| 18 | -npm run parse:docs:status | ||
| 19 | -``` | ||
| 20 | - | ||
| 21 | -输出示例: | ||
| 22 | -``` | ||
| 23 | -🔧 文档解析服务配置状态: | ||
| 24 | -────────────────────────────────────────────────── | ||
| 25 | -📄 markitdown: ❌ 未配置 | ||
| 26 | -🤖 AI 服务: ❌ 未配置 | ||
| 27 | -────────────────────────────────────────────────── | ||
| 28 | - | ||
| 29 | -💡 配置提示: | ||
| 30 | - 1. 使用 markitdown: 安装 Python 并运行 "pip install markitdown" | ||
| 31 | - 2. 配置 AI 服务: 设置环境变量(.env 文件) | ||
| 32 | -``` | ||
| 33 | - | ||
| 34 | -### 3. 解析所有文档 | ||
| 35 | - | ||
| 36 | -```bash | ||
| 37 | -npm run parse:docs | ||
| 38 | -``` | ||
| 39 | - | ||
| 40 | -### 4. 解析单个文档 | ||
| 41 | - | ||
| 42 | -```bash | ||
| 43 | -npm run parse:docs:file="产品说明书.pdf" | ||
| 44 | -``` | ||
| 45 | - | ||
| 46 | -## 配置 AI 服务(可选) | ||
| 47 | - | ||
| 48 | -如需启用智能解析功能,请配置以下环境变量: | ||
| 49 | - | ||
| 50 | -### 方法 1: 使用 .env 文件 | ||
| 51 | - | ||
| 52 | -```bash | ||
| 53 | -# 复制示例配置 | ||
| 54 | -cp scripts/.env.example scripts/.env | ||
| 55 | - | ||
| 56 | -# 编辑 .env 文件,填写 API Key | ||
| 57 | -vim scripts/.env | ||
| 58 | -``` | ||
| 59 | - | ||
| 60 | -### 方法 2: 使用环境变量 | ||
| 61 | - | ||
| 62 | -```bash | ||
| 63 | -export AI_SERVICE_TYPE=openai | ||
| 64 | -export OPENAI_API_KEY=sk-your-key-here | ||
| 65 | -npm run parse:docs | ||
| 66 | -``` | ||
| 67 | - | ||
| 68 | -## 支持的 AI 服务 | ||
| 69 | - | ||
| 70 | -| 服务 | 说明 | 环境变量 | | ||
| 71 | -|------|------|---------| | ||
| 72 | -| OpenAI | GPT-4/GPT-3.5 | `OPENAI_API_KEY` | | ||
| 73 | -| Anthropic | Claude 3 Sonnet | `ANTHROPIC_API_KEY` | | ||
| 74 | -| OpenRouter | 聚合服务 | `OPENROUTER_API_KEY` | | ||
| 75 | - | ||
| 76 | -## 解析流程 | ||
| 77 | - | ||
| 78 | -1. **文档转换**:将 PDF/DOCX 转换为可读文本 | ||
| 79 | -2. **AI 解析**:从文本中提取结构化配置(产品类型、币种、年期等) | ||
| 80 | -3. **生成代码**:生成 `plan-templates.js` 配置代码 | ||
| 81 | -4. **更新配置**:自动更新到配置文件 | ||
| 82 | - | ||
| 83 | -## 当前状态 | ||
| 84 | - | ||
| 85 | -- ✅ **基础功能**:支持 PDF、DOCX 文本提取 | ||
| 86 | -- ✅ **启发式推断**:根据文件名和内容推断产品类型和币种 | ||
| 87 | -- ⏳ **AI 解析**:待集成 AI 服务(需要配置 API Key) | ||
| 88 | - | ||
| 89 | -## 文档位置 | ||
| 90 | - | ||
| 91 | -待解析文档放在:`docs/to-parse/` 文件夹 | ||
| 92 | - | ||
| 93 | -支持格式:`.pdf`, `.docx`, `.doc`, `.txt`, `.md` |
| ... | @@ -36,6 +36,7 @@ import { splitByProducts, findProductTitles, generateSplitReport } from './produ | ... | @@ -36,6 +36,7 @@ import { splitByProducts, findProductTitles, generateSplitReport } from './produ |
| 36 | // ========== 配置区 ========== | 36 | // ========== 配置区 ========== |
| 37 | 37 | ||
| 38 | const DOCS_DIR = path.resolve(process.cwd(), 'docs/to-parse') | 38 | const DOCS_DIR = path.resolve(process.cwd(), 'docs/to-parse') |
| 39 | +const DOCS_ARCHIVE_DIR = path.resolve(process.cwd(), 'docs/to-parse/archived') | ||
| 39 | const CONFIG_FILE = path.resolve(process.cwd(), 'src/config/plan-templates.js') | 40 | const CONFIG_FILE = path.resolve(process.cwd(), 'src/config/plan-templates.js') |
| 40 | const BACKUP_DIR = path.resolve(process.cwd(), 'docs/parsed-backup') | 41 | const BACKUP_DIR = path.resolve(process.cwd(), 'docs/parsed-backup') |
| 41 | 42 | ||
| ... | @@ -91,6 +92,29 @@ function getFileMeta(filePath, extraMeta = {}) { | ... | @@ -91,6 +92,29 @@ function getFileMeta(filePath, extraMeta = {}) { |
| 91 | } | 92 | } |
| 92 | } | 93 | } |
| 93 | 94 | ||
| 95 | +function buildArchiveFilePath(fileName) { | ||
| 96 | + const date = new Date().toISOString().split('T')[0] | ||
| 97 | + const archiveDir = path.join(DOCS_ARCHIVE_DIR, date) | ||
| 98 | + ensureDir(archiveDir) | ||
| 99 | + let targetPath = path.join(archiveDir, fileName) | ||
| 100 | + if (fs.existsSync(targetPath)) { | ||
| 101 | + const ext = path.extname(fileName) | ||
| 102 | + const baseName = path.basename(fileName, ext) | ||
| 103 | + targetPath = path.join(archiveDir, `${baseName}-${Date.now()}${ext}`) | ||
| 104 | + } | ||
| 105 | + return targetPath | ||
| 106 | +} | ||
| 107 | + | ||
| 108 | +function archiveParsedFile(filePath) { | ||
| 109 | + if (!fs.existsSync(filePath)) { | ||
| 110 | + return null | ||
| 111 | + } | ||
| 112 | + ensureDir(DOCS_ARCHIVE_DIR) | ||
| 113 | + const archivePath = buildArchiveFilePath(path.basename(filePath)) | ||
| 114 | + fs.renameSync(filePath, archivePath) | ||
| 115 | + return archivePath | ||
| 116 | +} | ||
| 117 | + | ||
| 94 | function buildExtractResult(filePath, text, warnings = [], extraMeta = {}) { | 118 | function buildExtractResult(filePath, text, warnings = [], extraMeta = {}) { |
| 95 | return { | 119 | return { |
| 96 | text, | 120 | text, |
| ... | @@ -750,6 +774,14 @@ async function parseSingleFile(filePath) { | ... | @@ -750,6 +774,14 @@ async function parseSingleFile(filePath) { |
| 750 | }) | 774 | }) |
| 751 | } | 775 | } |
| 752 | 776 | ||
| 777 | + const shouldArchive = results.length > 0 && results.every(r => r.success) | ||
| 778 | + if (shouldArchive) { | ||
| 779 | + const archivedPath = archiveParsedFile(filePath) | ||
| 780 | + if (archivedPath) { | ||
| 781 | + console.log("📦 已归档原始文档: " + archivedPath) | ||
| 782 | + } | ||
| 783 | + } | ||
| 784 | + | ||
| 753 | // 单产品时返回单个结果对象(保持向后兼容) | 785 | // 单产品时返回单个结果对象(保持向后兼容) |
| 754 | // 多产品时返回数组 | 786 | // 多产品时返回数组 |
| 755 | if (configs.length === 1) { | 787 | if (configs.length === 1) { |
| ... | @@ -786,6 +818,8 @@ async function generateAuditFile(fileName, config, code, productIndex = 0, total | ... | @@ -786,6 +818,8 @@ async function generateAuditFile(fileName, config, code, productIndex = 0, total |
| 786 | 818 | ||
| 787 | const date = new Date().toISOString().split('T')[0] | 819 | const date = new Date().toISOString().split('T')[0] |
| 788 | const baseFileName = fileName.replace(/\.[^/.]+$/, '') | 820 | const baseFileName = fileName.replace(/\.[^/.]+$/, '') |
| 821 | + const pendingDir = path.join(AUDIT_PENDING_DIR, baseFileName) | ||
| 822 | + ensureDir(pendingDir) | ||
| 789 | 823 | ||
| 790 | // 多产品文档时,为每个产品生成独立文件 | 824 | // 多产品文档时,为每个产品生成独立文件 |
| 791 | let auditFileName | 825 | let auditFileName |
| ... | @@ -799,7 +833,7 @@ async function generateAuditFile(fileName, config, code, productIndex = 0, total | ... | @@ -799,7 +833,7 @@ async function generateAuditFile(fileName, config, code, productIndex = 0, total |
| 799 | } else { | 833 | } else { |
| 800 | auditFileName = `${date}-${baseFileName}.md` | 834 | auditFileName = `${date}-${baseFileName}.md` |
| 801 | } | 835 | } |
| 802 | - const auditFilePath = path.join(AUDIT_PENDING_DIR, auditFileName) | 836 | + const auditFilePath = path.join(pendingDir, auditFileName) |
| 803 | const formSn = generateFormSn(config) | 837 | const formSn = generateFormSn(config) |
| 804 | const formSchemaPreview = config.form_schema ? JSON.stringify(config.form_schema, null, 2) : '// 请手动补充' | 838 | const formSchemaPreview = config.form_schema ? JSON.stringify(config.form_schema, null, 2) : '// 请手动补充' |
| 805 | const submitMappingPreview = config.submit_mapping ? JSON.stringify(config.submit_mapping, null, 2) : '// 请手动补充' | 839 | const submitMappingPreview = config.submit_mapping ? JSON.stringify(config.submit_mapping, null, 2) : '// 请手动补充' |
| ... | @@ -945,14 +979,14 @@ ${code.trim()} | ... | @@ -945,14 +979,14 @@ ${code.trim()} |
| 945 | ### 确认无误 | 979 | ### 确认无误 |
| 946 | \`\`\`bash | 980 | \`\`\`bash |
| 947 | # 1. 移动到 approved 目录 | 981 | # 1. 移动到 approved 目录 |
| 948 | -mv docs/parse-audit/pending/${auditFileName} \\ | 982 | +mv docs/parse-audit/pending/${baseFileName}/${auditFileName} \\ |
| 949 | docs/parse-audit/approved/ | 983 | docs/parse-audit/approved/ |
| 950 | 984 | ||
| 951 | # 2. 合并到正式配置 | 985 | # 2. 合并到正式配置 |
| 952 | # 手动复制或使用工具合并到 src/config/plan-templates.js | 986 | # 手动复制或使用工具合并到 src/config/plan-templates.js |
| 953 | 987 | ||
| 954 | # 3. 删除待审核文件(可选) | 988 | # 3. 删除待审核文件(可选) |
| 955 | -rm docs/parse-audit/pending/${auditFileName} | 989 | +rm docs/parse-audit/pending/${baseFileName}/${auditFileName} |
| 956 | \`\`\` | 990 | \`\`\` |
| 957 | 991 | ||
| 958 | ### 需要修改 | 992 | ### 需要修改 |
| ... | @@ -961,7 +995,7 @@ rm docs/parse-audit/pending/${auditFileName} | ... | @@ -961,7 +995,7 @@ rm docs/parse-audit/pending/${auditFileName} |
| 961 | 995 | ||
| 962 | ### 放弃本次解析 | 996 | ### 放弃本次解析 |
| 963 | \`\`\`bash | 997 | \`\`\`bash |
| 964 | -rm docs/parse-audit/pending/${auditFileName} | 998 | +rm docs/parse-audit/pending/${baseFileName}/${auditFileName} |
| 965 | \`\`\` | 999 | \`\`\` |
| 966 | 1000 | ||
| 967 | --- | 1001 | --- |
| ... | @@ -1302,6 +1336,7 @@ export function buildParseSummary(results, duration_ms) { | ... | @@ -1302,6 +1336,7 @@ export function buildParseSummary(results, duration_ms) { |
| 1302 | } | 1336 | } |
| 1303 | }) | 1337 | }) |
| 1304 | 1338 | ||
| 1339 | + summary.total = summary.total_products | ||
| 1305 | return summary | 1340 | return summary |
| 1306 | } | 1341 | } |
| 1307 | 1342 | ... | ... |
-
Please register or login to post a comment