hookehuyr

docs(project): 更新项目文档记录重大功能更新

今天(2026-02-15):
- 多产品文档解析(product-splitter.js)
- 智能字段提取器(smartExtractList)
- 产品边界检测能力

昨天(2026-02-14):
- Git 工作流优化(standard-version)
- 消息功能全面优化
- 计划书 Schema 化重构
- MCP 文档解析集成
- Mock 数据优化

更新文件:
- CLAUDE.md
- README.md
- CHANGELOG.md
- lessons-learned.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
......@@ -82,9 +82,40 @@ pnpm dev:tt # 字节跳动小程序开发
## 📋 快速参考
### 🆕 最新更新(2026-02-12)
**计划书功能优化**
### 🆕 最新更新(2026-02-15 & 2026-02-14)
**文档解析重大升级**
- ✅ 支持多产品文档解析(自动识别和分割多个保险产品)
- ✅ 实现智能字段提取器 smartExtractList()
- ✅ 新增产品边界检测模块(支持产品代码和命名模式识别)
- ✅ 完善 MCP 解析切换功能和审核流程
- ✅ 优化文档解析工具链和测试验证
**计划书模块重构**
- ✅ 计划书表单字段 Schema 化(人寿/重疾模板)
- ✅ 优化字段配置管理,提取订单状态常量
- ✅ 重构表单提交逻辑,使用模板字段映射
- ✅ 完善表单交互和字段验证
- ✅ 优化提取方式字段映射和重命名
**消息功能全面优化**
- ✅ 优化消息列表卡片布局,提升信息可读性
- ✅ 简化消息列表逻辑,移除冗余代码
- ✅ 优化消息详情页布局和样式
- ✅ 统一消息页面交互体验
**Git 工作流与版本管理**
- ✅ 使用 standard-version 替代自定义版本更新脚本
- ✅ 配置 conventional commits 规范
- ✅ 完善版本发布流程文档
- ✅ 移除旧的版本自动更新脚本
**Mock 数据优化**
- ✅ 优化产品列表 Mock 数据结构
- ✅ 添加测试商品到列表首位
- ✅ 修正搜索测试 Mock 开关
**计划书功能优化(历史更新)**
- ✅ 添加计划书卡片状态标记("生成中"/"已完成",黄色/绿色背景)
- ✅ 修复嵌套弹窗层级冲突(使用 provide/inject 模式)
- ✅ 优化页面滚动加载并清理调试代码
......
......@@ -49,9 +49,32 @@ pnpm lint
-**文档预览能力** - DocumentPreview 支持多格式文件预览
-**统一列表交互** - 搜索、收藏、资料列表统一点击与操作逻辑
## 🆕 最新更新(2026-02-14)
### 构建告警修复
## 🆕 最新更新(2026-02-15 & 2026-02-14)
### 文档解析重大升级(2026-02-15)
-**多产品文档解析** - 支持自动识别和分割包含多个保险产品的文档
-**智能字段提取器** - 实现 smartExtractList() 智能列表边界识别
-**产品边界检测** - 支持产品代码(GS、GC、FA、LV2)和命名模式识别
-**MCP 解析切换** - 完善 markitdown 文档解析服务集成
-**审核流程落地** - 待审核文件管理,人工确认后才写入配置
### Git 工作流优化(2026-02-14)
-**版本管理标准化** - 使用 standard-version 替代自定义脚本
-**Conventional Commits** - 配置提交信息规范
-**自动化版本发布** - 自动更新版本号和生成 Git 标签
-**人工维护 CHANGELOG** - 配置跳过自动生成,使用自定义模板
### 消息功能全面优化(2026-02-14)
-**列表布局优化** - 提升消息卡片信息可读性
-**代码简化** - 移除冗余逻辑,提升可维护性
-**详情页优化** - 避免内容重复显示,统一交互体验
### 计划书模块重构(2026-02-14)
-**Schema 驱动** - 储蓄类/人寿/重疾模板字段配置化
-**提交映射优化** - 从容器迁移到模板配置
-**校验提示改进** - 必填提示与百分比校验统一
### 构建告警修复(2026-02-14)
-**usePlanView 导出补齐** - 补充 usePlanView 导出并绑定 viewFile,修复构建告警
### 计划书表单演进
......
......@@ -47,6 +47,46 @@
---
## [2026-02-14] - 消息功能全面优化
### 优化
- 优化消息列表卡片布局,提升信息可读性
- 简化消息列表逻辑,移除冗余代码
- 优化消息详情页布局,避免内容重复显示
- 统一消息页面样式和交互体验
---
**详细信息**
- **影响文件**: src/pages/message/index.vue, src/pages/message-detail/index.vue
- **技术栈**: Vue 3, Taro 4, NutUI
- **测试状态**: 已通过
- **备注**: 提升用户阅读体验,代码更简洁可维护
---
## [2026-02-14] - Git 工作流与版本管理优化
### 优化
- 使用 standard-version 替代自定义版本更新脚本
- 配置 standard-version 不自动生成 CHANGELOG(由人工维护)
- 完善版本发布流程和 Git 工作流文档
- 移除旧的版本自动更新脚本
### 新增
- 配置 conventional commits 规范
- 完善版本管理最佳实践文档
---
**详细信息**
- **影响文件**: .versionrc.json, package.json, scripts/ (removed)
- **技术栈**: standard-version, conventional commits
- **测试状态**: 已验证
- **备注**: 统一版本管理工具,简化发布流程
---
## [2026-02-14] - 文档解析使用说明完善
### 优化
......
......@@ -2190,6 +2190,266 @@ onMounted(() => {
## 开发工作流
### ✅ 文档解析工具链最佳实践(2026-02-15)
#### 问题描述
在处理计划书文档解析时,遇到了复杂的多产品文档解析和字段提取问题:
1. **多产品文档识别困难**:一份文档中包含多个保险产品,难以自动识别边界
2. **字段提取不准确**:列表类型字段(如缴费期、提取方式)边界识别不清
3. **审核流程缺失**:解析结果直接写入配置,缺少人工审核环节
#### 解决方案
**1. 多产品边界检测**
创建 `product-splitter.js` 模块,基于产品特征自动分割文档:
```javascript
// scripts/product-splitter.js
/**
* 产品边界检测器
*
* 支持的识别模式:
* 1. 产品代码前缀:GS、GC、FA、LV2 等
* 2. 产品命名模式:以"計劃"、"保障"、"保险"、"壽險"结尾
*/
export function splitProducts(text) {
const productCodePattern = /^[A-Z]{2}\d*-/
const productNamePattern = /(計劃|保障|保险|壽險)$/g
// 自动检测产品边界并分割
const products = []
// ... 分割逻辑
return products
}
```
**2. 智能列表提取**
实现 `smartExtractList()` 函数,基于起始模式和结束关键词识别列表边界:
```javascript
// scripts/smart-field-extractor.js
/**
* 智能列表提取器
*
* @param {string} text - 文本内容
* @param {string} startPattern - 起始模式(正则表达式字符串)
* @param {string[]} endKeywords - 结束关键词数组
* @returns {string[]} 提取的列表项
*/
export function smartExtractList(text, startPattern, endKeywords) {
// 1. 找到起始位置
const startMatch = text.match(new RegExp(startPattern, 'm'))
if (!startMatch) return []
// 2. 从起始位置开始,找到第一个结束关键词
const startIndex = startMatch.index + startMatch[0].length
let endIndex = text.length
for (const keyword of endKeywords) {
const keywordIndex = text.indexOf(keyword, startIndex)
if (keywordIndex !== -1 && keywordIndex < endIndex) {
endIndex = keywordIndex
}
}
// 3. 提取中间内容
const listText = text.substring(startIndex, endIndex)
// 4. 解析列表项
return parseListItems(listText)
}
```
**使用示例**:
```javascript
// 提取缴费期列表
const paymentPeriods = smartExtractList(
text,
'繳費年期[::]?\\s*',
['投保年齡', '提取方式', '保障年期']
)
// 提取提取方式列表
const withdrawalModes = smartExtractList(
text,
'提取方式[::]?\\s*',
['保障年期', '身故賠償', '保單價值']
)
```
**3. 审核流程设计**
```bash
# 解析流程
node scripts/parse-docs.js --file=计划书模版.docx
生成待审核文件(docs/to-parse/parse-audit/pending/)
人工审核(检查字段提取准确性)
审核通过后移动到 approved/ 目录
运行合并脚本写入配置文件
```
#### 实施效果
✅ **成功解析复杂文档**:
- 计划书模版2.docx → 识别出 4 个保险产品
- 每个产品生成独立的审核文件
✅ **提升提取准确性**:
- `insurance_period` 和 `withdrawal_modes` 字段类型处理修复
- `payment_periods` 字段过滤逻辑优化,排除"投保年龄"等无效项
✅ **可追溯的审核流程**:
- 待审核文件:`docs/to-parse/parse-audit/pending/`
- 已审核文件:`docs/to-parse/parse-audit/approved/`
- 审核记录:`docs/to-parse/parse-audit/records/`
#### 最佳实践
1. **增量开发**:先支持单产品解析,再扩展多产品
2. **单元测试驱动**:每个提取函数都有对应的测试用例
3. **人工审核优先**:解析结果不直接写入配置,先人工确认
4. **文档记录过程**:记录解析策略、测试结果、问题修复
#### 相关文件
- `scripts/product-splitter.js` - 产品边界检测模块
- `scripts/smart-field-extractor.js` - 智能字段提取器
- `scripts/parse-docs.js` - 文档解析主脚本
- `docs/to-parse/README.md` - 解析工具使用说明
---
### ✅ Git 版本管理最佳实践(2026-02-14)
#### 问题描述
项目使用自定义脚本进行版本管理,存在以下问题:
1. **维护成本高**:自定义脚本需要持续维护和修复 bug
2. **功能不完善**:缺少标签生成、CHANGELOG 自动更新等功能
3. **不够标准化**:与社区工具不兼容,团队成员需要学习成本
#### 解决方案:使用 standard-version
**1. 安装和配置**
```bash
# 安装 standard-version
pnpm add -D standard-version
# 配置 package.json
{
"scripts": {
"release": "standard-version"
}
}
```
**2. 配置文件 `.versionrc.json`**
```json
{
"types": [
{ "type": "feat", "section": "✨ 新增功能" },
{ "type": "fix", "section": "🐛 Bug 修复" },
{ "type": "perf", "section": "⚡ 性能优化" },
{ "type": "refactor", "section": "♻️ 代码重构" },
{ "type": "docs", "section": "📝 文档更新", "hidden": true },
{ "type": "style", "section": "💄 代码格式", "hidden": true },
{ "type": "test", "hidden": true },
{ "type": "chore", "hidden": true }
],
"skip": {
"changelog": true // 跳过自动生成 CHANGELOG(由人工维护)
}
}
```
**3. 使用流程**
```bash
# 1. 开发完成后提交代码
git add .
git commit -m "feat(plan): 添加新功能"
# 2. 运行 release(自动更新版本号和生成 CHANGELOG)
pnpm release
# 3. 推送到远程
git push --follow-tags origin develop
```
**4. 版本号自动更新规则**
遵循 Semantic Versioning:
- `feat` → MINOR 版本更新(1.0.0 → 1.1.0)
- `fix` → PATCH 版本更新(1.0.0 → 1.0.1)
- `perf` → MINOR 版本更新
- `docs/style/refactor/test/chore` → 不更新
#### 实施效果
✅ **标准化流程**:
- 使用社区广泛采用的工具
- 团队成员无需学习自定义脚本
- 与 CI/CD 工具兼容性好
✅ **自动化程度高**:
- 自动更新版本号
- 自动生成 Git 标签
- 可选自动生成 CHANGELOG
✅ **减少维护成本**:
- 无需维护自定义脚本
- 社区持续更新和维护
- bug 修复由社区完成
#### 最佳实践
1. **Conventional Commits**:所有提交信息遵循规范
```
feat(plan): 添加新功能
fix(message): 修复消息列表显示
docs(readme): 更新使用说明
```
2. **人工维护 CHANGELOG**:
- 配置 `skip.changelog: true`
- 使用自定义的 CHANGELOG 模板
- 记录更详细的变更信息
3. **版本发布流程**:
```bash
# 1. 确保所有测试通过
pnpm test
# 2. 更新版本
pnpm release
# 3. 检查生成的标签
git tag
# 4. 推送代码和标签
git push --follow-tags origin develop
```
#### 相关文件
- `.versionrc.json` - standard-version 配置文件
- `package.json` - release 脚本定义
- `docs/to-parse/README.md` - 版本管理流程说明
---
### ✅ Mock 数据环境自动切换模式
#### 问题描述
......