phase1-remaining.md 13 KB

Phase 1 剩余任务 — 2天技术任务分解

文档版本: v1.0
生成日期: 2026-07-22
基于: 统一执行计划 + 5个真正未完成项
目标: 将 Phase 1 剩余工作分解为 2 天可完成的技术任务


任务分解原则

  • 每个任务 ≤ 2 天(16 小时)
  • 明确输入/输出/验收标准
  • 独立可并行(标注依赖)
  • 包含测试验证步骤

任务清单(按优先级排序)

P0 任务(2个)

T1-1: 辈分重构 - Phase 1 基础设施(2天)

目标: 完成 GenerationLevel 枚举、实体变更、数据库列添加

输入:

  • 现有 FamilyMember.java 实体
  • DatabaseInitializer.java 迁移框架

输出:

  • GenerationLevel.java 枚举(7级)
  • 修改 FamilyMember.java(删除 relationshipType/roleOverride,新增 generation/isSpouse)
  • AddFamilyMemberDTO.java(新建)
  • DatabaseInitializer 迁移 1 & 2(添加列 + 旧数据填充)

验收标准:

  • mvn clean compile 零错误
  • 数据库 family_members 表存在 generationis_spouse
  • 旧数据 generation 按规则映射(spouse→0, parent→1, child→-1, sibling→0)
  • GenerationLevel 枚举包含 7 个级别,可通过单元测试

依赖:

分配: 后端开发 1 人


T1-2: 富维度子维度拆分 - EnergyService 重构(2天)

目标: 重构 calcChildWealth / calcParentWealth,拆分为子维度,集成身克富杠杆

输入:

  • EnergyService.java v2.1(已有核心算法)
  • MemberEnergyDTO.java

输出:

  • MemberEnergyDTO 新增 8 个子维度字段 + 2 个身克富字段
  • EnergyService.calcChildWealth() 拆分为 3 个子方法(education/social/points)
  • EnergyService.calcParentWealth() 拆分为 3 个子方法(income/achievement/network)
  • EnergyService.applyBodyWealthRestraint() 新方法(身克富杠杆)
  • calcParentEnergy / calcChildEnergy 末尾调用身克富检测

验收标准:

  • 单元测试覆盖所有子维度计算逻辑(≥ 80%)
  • 身克富三种状态(normal/overdraw/penalty)可触发
  • 集成测试验证能量概览 API 返回子维度数据
  • 无编译错误,无 LSP 警告

依赖: T1-1(可并行,不阻塞)

分配: 后端开发 1 人


P1 任务(5个)

T1-3: 辈分重构 - Phase 2 后端逻辑重写(2天)

目标: 重写 FamilyMemberService 核心方法,删除关系类型管理

输入:

  • T1-1 完成的实体和 DTO
  • 现有 FamilyMemberService.java

输出:

  • 重写 computeEffectiveRole()(基于 generation)
  • 重写 computeRelativeLabel()(纯 generation diff 计算)
  • 重写 addMember()(使用 relativeMemberId + generationLevel + peerType)
  • 修改 listMembers()toFamilyMemberVO()(移除 relationshipType 相关字段)
  • 删除管理端关系类型管理方法
  • 修改 FamilyMembersController 请求/响应 DTO

验收标准:

  • 单元测试覆盖 computeRelativeLabel() 所有辈分组合(≥ 90%)
  • API 测试:添加配偶(peer+spouse)成功,generation=0, is_spouse=1
  • API 测试:添加子侄辈(child)成功,generation=-1
  • 旧代码引用搜索:grep -r "relationshipType" cfc-backend/src/main/java 返回空

依赖: T1-1

分配: 后端开发 1 人


T1-4: 辈分重构 - Phase 3 清理 + 管理端(2天)

目标: 删除废弃列和表,同步 schema.sql,更新 cfc-web 管理端

输入:

  • T1-3 完成的后端逻辑
  • cfc-backend/src/main/resources/schema.sql

输出:

  • DatabaseInitializer 迁移 3:删除 relationship_typerole_override
  • DatabaseInitializer 迁移 4:删除 relationship_types
  • 同步 schema.sql 表结构
  • 删除 RelationshipType.javaRelationshipTypeMapper.javaRelationshipTypeService.java(如存在)
  • 删除 cfc-web 管理端关系类型管理页面和路由
  • 更新 cfc-web 成员添加页面(替换为辈分选择器)

验收标准:

  • grep -r "relationship_type" cfc-backend/src/main/java 返回空
  • grep -r "RelationshipType" cfc-backend/src/main/java 返回空
  • schema.sql 中 family_members 表无 relationship_type/role_override 列
  • cfc-web 路由无 /admin/relationship-type 路径
  • 管理端成员添加页面显示辈分选择器(GenerationPicker)

依赖: T1-3

分配: 后端开发 1 人 + Web前端 1 人


T1-5: 辈分重构 - Phase 4 小程序前端(2天)

目标: 新建 GenerationPicker 组件,更新成员添加页面

输入:

  • T1-4 完成的后端 API
  • 现有 RelationshipPicker.vue(如有)

输出:

  • generationLevel.js 常量文件(7级辈分 + 同辈类型)
  • GenerationPicker.vue 组件(单选辈分 + 同辈配偶选项)
  • 修改成员添加页面(pages/family/member-add.vue 或类似)
  • 删除 RelationshipPicker.vue(如存在)
  • 更新 utils/api.js 调用参数(relationshipType → generationLevel + peerType)

验收标准:

  • GenerationPicker 组件可正常选择辈分和配偶类型
  • 添加成员 API 调用成功(relativeMemberId + generationLevel + peerType)
  • 成员列表显示 generation 字段(调试模式)
  • 小程序编译无警告,LSP 诊断零错误

依赖: T1-4(API 变更)

分配: 小程序前端 1 人


T1-6: 富维度拆分 - 前端页面重写(2天)

目标: 重写 pages/wealth/index.vue,角色感知的富展示

输入:

  • T1-2 完成的 GET /api/energy/wealth-detail API
  • 现有 pages/wealth/index.vue

输出:

  • 新页面布局:PageBanner → 身克富状态条 → 三子维度卡片 → 增值服务入口 → 底部菜单
  • WealthSubScores.vue 组件(成人版/孩子版)
  • BodyWealthAlert.vue 组件(三种状态:normal/overdraw/penalty)
  • utils/api.js 新增 getWealthDetail() 方法
  • 删除原页面"行动数据"区块(任务数/购买数/活动数/课程数)

验收标准:

  • 家长端显示 3 个子维度(金钱收入/社会成就/资源网络)
  • 孩子端显示 3 个子维度(学业成绩/社交筹码/积分效率)
  • 身克富预警在条件触发时显示(身<40 且 富>60)
  • 页面加载时间 ≤ 1.5s(模拟数据)
  • 小程序编译零错误

依赖: T1-2(API 就绪)

分配: 小程序前端 1 人


T1-7: DAN测评题目录入优化(2天)

目标: 优化认知测评题目录入流程

输入:

  • 现有 DanAssessmentController.java
  • 设计文档 assessment-market-plan.md

输出:

  • 确认具体优化点(批量导入?富文本编辑器?题目预览?)
  • 实现对应功能(根据设计文档)
  • 更新前端题目录入页面

验收标准:

  • 题目录入效率提升 ≥ 30%(对比旧流程)
  • 支持批量导入(如需要)
  • 题目预览功能正常
  • 后端 API 响应时间 ≤ 500ms

依赖:

分配: 后端 1 人 + 前端 1 人


T1-8: 维度页面缺口修复 Phase 2(2天)

目标: 补全五维页面的缺失功能(珍珠图/圈子系统 Phase 1)

输入:

  • plans/2026-07-12-dimension-pages-gap-fix.md
  • 五维 TabBar 页面(已完成)

输出:

  • P1-1 身页: HealthCheckinCard.vue 组件 + 插入到 pages/body/index.vue
  • P1-2 智页: 阅读时长展示卡片 + API 对接(确认或新增 POST /api/article/reading-stats
  • P1-3 心页: 天盘相性卡片 + API 对接(POST /api/tianpan/compatibility

验收标准:

  • 身页健康打卡卡片显示今日状态 + 连续天数
  • 智页显示"本月阅读 X 小时"
  • 心页显示家庭天盘相性评分
  • 三个卡片均可点击跳转详情页
  • 无登录态不显示(或显示占位符)

依赖: 五维 TabBar 完成(已完成)

分配: 小程序前端 1-2 人


T1-9: CFC原生电商扩展 - 数据库迁移(2天)

目标: 创建 shop_ 前缀表,完成 DatabaseInitializer 迁移

输入:

  • specs/2026-06-24-cfc-ecommerce-extension-design.md
  • DatabaseInitializer.java

输出:

  • 确认 shop_ 表完整 DDL(至少:shop_products, shop_orders, shop_categories)
  • DatabaseInitializer 新增建表迁移
  • 同步 schema.sql
  • 创建对应 Entity 类(ShopProduct.java, ShopOrder.java 等)

验收标准:

  • SHOW TABLES LIKE 'shop_%' 返回预期表数量(≥ 3)
  • schema.sql 包含 shop_ 表定义
  • Entity 类字段与 DDL 完全一致
  • mvn clean compile 零错误

依赖:

分配: 后端开发 1 人


T1-10: CFC原生电商扩展 - Service + Controller(2天)

目标: 实现电商 CRUD 逻辑,适配 ProductController

输入:

  • T1-9 完成的 Entity 和 Mapper
  • 现有 ProductController.java(161行)

输出:

  • ShopProductMapper.java + ShopProductService.java + ShopProductController.java
  • 或扩展现有 ProductController 支持 shop_ 表
  • 实现商品列表/详情/下单/订单查询基础 API
  • 更新 utils/api.js 新增电商相关方法

验收标准:

  • 商品列表 API 返回正确数据(mock 数据可查询)
  • 商品详情 API 可查询单个商品
  • 下单 API 创建订单成功(订单状态 pending)
  • 前端小程序商城页面可浏览商品

依赖: T1-9

分配: 后端开发 1 人 + 小程序前端 1 人


技术债务任务(3个)

T5-1: 确定性缺口修复(2天)

目标: 修复系统确定性缺口(具体内容见 plans/2026-07-10-determinism-gap-fix-plan.md

输入:

  • 确定性缺口计划文档
  • 现有代码中随机数/时间戳依赖

输出:

  • 识别所有 Math.random()new Date()UUID.randomUUID() 等非确定性调用
  • 替换为可 seed 的伪随机生成器或固定时间戳(测试环境)
  • 添加 DeterministicTest 基类,确保测试可重复

验收标准:

  • 所有单元测试运行两次结果一致
  • 集成测试无 flaky 失败(连续运行 5 次 100% 通过)
  • 代码审查:无新增非确定性代码

依赖:

分配: 后端开发 1 人


T5-2: Web端E2E测试修复(2天)

目标: 修复 14 个 E2E 测试失败用例

输入:

  • plans/2026-06-20-cfc-web-e2e-test-fix.md
  • Web 端 E2E 测试报告

输出:

  • 逐项修复失败测试(选择器过时、异步等待、数据依赖)
  • 更新测试数据 fixture
  • 增加测试稳定性(retry 机制、等待策略)

验收标准:

  • E2E 测试通过率从当前提升至 ≥ 90%
  • 连续运行 3 次无 flaky 失败
  • 测试执行时间 ≤ 10 分钟

依赖:

分配: Web前端 1 人


T5-3: 综合差异修复(2天)

目标: 系统性扫描和修复代码与设计差异

输入:

  • 所有 specs/ 设计文档
  • 现有代码库

输出:

  • 使用 ast-grep 扫描设计规范违反(如可选链、CSS Grid、GetMapping 等)
  • 批量修复 AI slop 模式
  • 更新文档与代码同步

验收标准:

  • 扫描报告:0 个严重违反项
  • 所有页面符合设计 Token 体系
  • 代码审查:无设计文档已定义但未实现的功能

依赖:

分配: 全栈开发 1 人


任务分配汇总(Sprint 1)

开发者 任务数 总工作量 并行任务
Dev A(BE) T1-1, T1-3, T1-4, T1-9 4 个 3 个并行(T1-1/T1-3/T1-9)
Dev B(FE-mini) T1-5, T1-6, T1-8, T1-10 4 个 3 个并行(T1-5/T1-6/T1-8)
Dev C(BE) T1-2, T1-7 2 个 1 个并行(T1-2)
Dev D(Web) T1-4 (Web部分), T5-2 2 个 1 个并行(T5-2)
Dev E(BE) T5-1, T5-3 2 个 1 个并行(T5-1)

总工作量: 13 个任务 × 2 天 = 26 人天
并行度: 4-5 人同时工作
预计完成时间: 2 周(考虑 50% 并行效率)


关键路径

T1-1 (2d) → T1-3 (2d) → T1-4 (2d) → T1-5 (2d)
              ↓
           T1-2 (2d) → T1-6 (2d)
              ↓
           T1-7 (2d)
              ↓
           T1-8 (2d)
              ↓
           T1-9 (2d) → T1-10 (2d)

关键路径长度: 10 天(不含技术债务)


风险与缓解

风险 影响 缓解
T1-1 数据库迁移失败 阻塞 T1-3/T1-4 预生产环境先演练,备份数据
T1-2 身克富算法争议 阻塞 T1-6 产品经理确认算法细节,提供 mock 数据
T1-9 shop_ 表设计与 danshop 冲突 阻塞 T1-10 与 danshop 团队确认表结构兼容性
T1-7 DAN 优化范围不明确 阻塞任务 启动前召开需求澄清会(≤ 1 小时)

验证清单

每日验证

  • 代码提交前运行 mvn clean compile(后端)或 npm run build(前端)
  • 单元测试通过率 100%
  • LSP 诊断零错误

Sprint 结束验证

  • 所有任务标记为 completed
  • 集成测试通过率 ≥ 95%
  • 无阻塞性 Bug(Blocker/Critical)
  • 文档更新(PLAN 文件 + PROJECT-OVERVIEW.md)

文档结束