For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: 完成7维健康评分系统与设计规范的差距填补,覆盖商品→能量奖励、Dify AI推荐、维度详情页、问卷前端、trend计算、body首页入口、管理端配置和测试。
Architecture: 后端Spring Boot 2.7.18 + MyBatis-Plus,前端uni-app Vue 2(微信小程序),Web管理端Vue 2 + Element UI。7维评分核心已实现(Controller+Service+DTO+Entity+DB),剩余为增量衔接工作。
Tech Stack: Java 8, Spring Boot 2.7.18, MyBatis-Plus, MySQL 8.0, uni-app Vue 2, Element UI Vue 2
Quick Summary: 填补7维健康体系与设计规范的10项差距:后端4项(商品能量、Dify推荐、趋势计算、身能量集成)、前端3项(详情页、问卷页、入口导航)、管理端2项(维度配置、数据源管理)、测试1项。核心评分引擎无需改动。
Deliverables:
- 商品购买成功后自动奖励五维能量
- Dify AI智能推荐替代LIKE搜索
- 7个维度各自的详情页(历史趋势+建议+推荐商品)
- 维度问卷专用前端页面
- 趋势计算从硬编码改为基于历史数据
- body首页导航入口
- 管理端维度常模CRUD + 数据源CRUD
- 后端服务单元测试
Estimated Effort: Medium (10 tasks) Parallel Execution: YES - 4 waves, max 4 parallel Critical Path: Task 1 (trend) → independent | Task 4 (身能量) → independent
根据设计规范(.sisyphus/drafts/health-dimensions-design.md)制定7维健康体系的完整实施计划。
经过全面探索,7维健康评分框架核心已完全实现:
HealthDimensionController + DimensionScoreServiceImpl + DTOs + Entity + Mapper + DB表 — 100%health-dimensions.vue(健康指数环+雷达图+维度卡片+上传弹窗)— 100%.sisyphus/plans/ + 拷贝到 docs/superpowers/plans/ 提交完成7维健康体系剩余10项增量功能的实施,覆盖后端增强、前端页面、管理端配置和测试。
ProductOrderService.java - 支付成功后触发能量奖励DifySyncService.java - 完整的Dify API调用实现RecommendationService.java - 集成Dify AI推荐DimensionScoreServiceImpl.java - 趋势计算修正EnergyService.java - 读取维度分数影响身能量pages/body/dimension-detail/)pages/body/dimension-questionnaire.vue)body/index.vue - 添加维度入口链接mvn clean compile 通过ProductOrderService.pay() + handlePaymentSuccess() 调用 EnergyService.awardEnergy()DifySyncService 实现 REST API 调用(POST/PUT/DELETE文档到Dify Dataset)RecommendationService 在关键词搜索无结果时调用 Dify 推荐DimensionScoreServiceImpl 基于最近2次评分计算 up/down/stableEnergyService 或新Service读取7维评分并影响body维度能量/api/dimension/questionnaireDimensionScoreServiceImpl.getHealthDimension() 的7维聚合)health-dimensions.vue 核心结构(雷达图、维度卡片等)ProductOrderService 的订单流程,仅在支付成功后插入能量奖励调用ZERO HUMAN INTERVENTION - ALL verification is agent-executed. No exceptions.
Every task MUST include agent-executed QA scenarios. Evidence saved to .sisyphus/evidence/task-{N}-{scenario-slug}.{ext}.
Wave 1 (Backend Core - Start Immediately):
├── Task 1: Trend calculation fix [quick]
├── Task 2: Product→Energy reward [quick]
├── Task 3: Dify AI sync + integration [unspecified-high]
└── Task 4: 7-dimension → body energy integration [quick]
Wave 2 (Frontend Pages):
├── Task 5: Body index → dimensions entry [quick]
├── Task 6: Questionnaire frontend page [visual-engineering]
└── Task 7: Dimension detail pages (7 pages) [visual-engineering]
Wave 3 (Admin UI + Testing):
├── Task 8: Dimension config management (Web admin) [quick]
├── Task 9: Data source management (Web admin) [quick]
└── Task 10: Unit tests [quick]
Wave FINAL (Verification):
├── F1: Plan compliance audit (oracle)
├── F2: Code quality review (unspecified-high)
├── F3: Real manual QA (unspecified-high + playwright)
└── F4: Scope fidelity check (deep)
What to do:
DimensionScoreServiceImpl.java 中找到 item.setTrend("stable") 行(约第78行)HistoryScores(memberId, dimension, 2) 获取最近2条记录getHealthDimension() 方法中构建 DimensionItem 的部分Must NOT do:
getHealthDimension() 的整体结构Recommended Agent Profile:
quick
Parallelization:
References:
cfc-backend/src/main/java/com/etotem/cfc/service/impl/DimensionScoreServiceImpl.java:52-98 — getHealthDimension() 方法,第78行硬编码 "stable"cfc-backend/src/main/java/com/etotem/cfc/service/impl/DimensionScoreServiceImpl.java:143-160 — getDimensionHistory() 方法,用作参考.sisyphus/drafts/health-dimensions-design.md — 设计规范§7.1 趋势定义Acceptance Criteria:
mvn clean compile 通过QA Scenarios:
Scenario: Trend shows "up" when score increased by ≥5
Tool: Bash (curl)
Preconditions: Member has score 70 on day-1 and 80 on day-2 for "growth" dimension
Steps:
1. POST /api/dimension/overview { memberId: 1 }
2. Find "growth" dimension item in response
Expected Result: growth.trend === "up"
Evidence: .sisyphus/evidence/task-1-trend-up.json
Scenario: Trend shows "stable" with no history
Tool: Bash (curl)
Preconditions: Member has only 1 score record for "sleep" dimension
Steps:
1. POST /api/dimension/overview { memberId: 2 }
2. Find "sleep" dimension item
Expected Result: sleep.trend === "stable"
Evidence: .sisyphus/evidence/task-1-trend-stable.json
Commit: YES
fix(dimension): calculate trend from score history instead of hardcodingFiles: cfc-backend/src/main/java/com/etotem/cfc/service/impl/DimensionScoreServiceImpl.java
[ ] 2. Product→Energy Reward — 商品购买后自动奖励能量
What to do:
ProductOrderService.java 中:
EnergyService (使用 @Resource)pay() 方法中,在 order.setStatus("paid") 和 orderMapper.updateById(order) 之后,调用 energyService.awardEnergy()handlePaymentSuccess() 方法中,同样的位置插入能量奖励totalAmount / 100,以分为单位)"product"childId:从订单的 buyerId 对应的 User.familyId 中查找 children(可选:或直接使用 buyerId 作为 childId)UserService 查找该 buyer 家庭下的 childMust NOT do:
pay() 方法的返回结构Recommended Agent Profile:
quick
HealthCheckinService)Parallelization:
References:
cfc-backend/src/main/java/com/etotem/cfc/service/ProductOrderService.java:140-168 — pay() 方法,在 updateById 后插入cfc-backend/src/main/java/com/etotem/cfc/service/ProductOrderService.java:170-187 — handlePaymentSuccess() 方法cfc-backend/src/main/java/com/etotem/cfc/service/HealthCheckinService.java:161 — 调用 energyService.awardEnergy() 的模式参考cfc-backend/src/main/java/com/etotem/cfc/service/EnergyService.java:591-593 — awardEnergy() 方法签名cfc-backend/src/main/java/com/etotem/cfc/entity/EnergySourceConfig.java:19 — sourceType 枚举含 "product".sisyphus/drafts/health-dimensions-design.md §8.2 — 改进方案Acceptance Criteria:
pay() 方法中支付成功后调用 energyService.awardEnergy()handlePaymentSuccess() 方法中也调用能量奖励mvn clean compile 通过QA Scenarios:
Scenario: Product purchase awards energy on payment success
Tool: Bash (curl)
Preconditions: A product with id=1, a user with token
Steps:
1. POST /api/product/order/pay { orderNo: "PO1234567890" }
2. Check response status === 200
3. POST /api/energy/balance { childId: 1 }
4. Verify body dimension energy has increased
Expected Result: Energy balance shows product-purchase energy
Evidence: .sisyphus/evidence/task-2-energy-awarded.json
Commit: YES
feat(product): award energy on successful paymentFiles: cfc-backend/src/main/java/com/etotem/cfc/service/ProductOrderService.java
[ ] 3. Dify AI Sync and Recommendation — 实现Dify知识库同步和AI推荐
What to do:
DifySyncService.java 中的 TODO:
syncToDify(): 根据 dimensionCodes 查询 ProductDimensionConfigMapper 获取 difyDatasetId,调用Dify REST API上传文档removeFromDify(): 调用Dify REST API删除文档RestTemplate 发送 HTTP 请求到 {difyBaseUrl}/datasets/{datasetId}/documentsRecommendationService.java:
product_dimension_config 的 difyDatasetId 配置更新Must NOT do:
RecommendationService 的现有搜索逻辑(仅作为补充)Recommended Agent Profile:
unspecified-high
Parallelization:
References:
cfc-backend/src/main/java/com/etotem/cfc/service/DifySyncService.java — TODO实现cfc-backend/src/main/java/com/etotem/cfc/entity/ProductDimensionConfig.java — 含 difyDatasetId 字段cfc-backend/src/main/java/com/etotem/cfc/mapper/ProductDimensionConfigMapper.java — 查询维度配置cfc-backend/src/main/resources/application.yml:79-82 — Dify配置(base-url, api-key, nutrition-api-key)POST /v1/datasets/{dataset_id}/documents — 上传文档DELETE /v1/datasets/{dataset_id}/documents/{doc_id} — 删除文档Acceptance Criteria:
syncToDify() 成功发起HTTP POST请求到Dify APIremoveFromDify() 成功发起HTTP DELETE请求RecommendationService 在LIKE搜索无结果时使用Dify推荐mvn clean compile 通过QA Scenarios:
Scenario: Dify sync sends HTTP request
Tool: Bash (curl mock)
Preconditions: Dify API is configured, a knowledge base item exists
Steps:
1. Trigger knowledge base save
2. Check log for "同步知识点" message
Expected Result: DifySyncService.syncToDify() called without error
Evidence: .sisyphus/evidence/task-3-dify-sync.log
Scenario: Recommendation falls back to LIKE search on Dify failure
Tool: Bash (curl)
Preconditions: Dify API returns error
Steps:
1. POST /api/product/recommend { dimension: "gut", keyword: "益生菌" }
2. Check response has data even if Dify fails
Expected Result: Returns products from LIKE search (existing behavior preserved)
Evidence: .sisyphus/evidence/task-3-recommend-fallback.json
Commit: YES
feat(dify): implement knowledge sync API and AI recommendationFiles: cfc-backend/src/main/java/com/etotem/cfc/service/DifySyncService.java, cfc-backend/src/main/java/com/etotem/cfc/service/RecommendationService.java
[ ] 4. 7-Dimension → Body Energy Integration — 7维评分影响身能量
What to do:
EnergyService)来建立7维评分到五维「身」能量的映射health_dimension_scores 表中某个 child 的最新7维评分,综合计算一个「身」能量加成值EnergyService.recalculateDimensionEnergy() 或类似方法中集成DimensionEnergySyncService 新 Service,供 DimensionScoreServiceImpl 在评分更新后调用DimensionScoreServiceImpl 的 uploadScore() 和 submitQuestionnaire() 成功后自动调用Must NOT do:
EnergyService 能量分配的核心算法Recommended Agent Profile:
quick
Parallelization:
References:
.sisyphus/drafts/health-dimensions-design.md §10 — 7维→五维「身」衔接逻辑cfc-backend/src/main/java/com/etotem/cfc/service/impl/DimensionScoreServiceImpl.java:100-116 — uploadScore() 方法cfc-backend/src/main/java/com/etotem/cfc/service/EnergyService.java:591-593 — awardEnergy() 方法cfc-backend/src/main/java/com/etotem/cfc/service/HealthDimensionScoreService.java — 查询维度评分Acceptance Criteria:
mvn clean compile 通过QA Scenarios:
Scenario: Body energy updates after dimension score upload
Tool: Bash (curl)
Preconditions: Member has 5 dimension scores
Steps:
1. POST /api/dimension/upload { memberId: 1, dimension: "growth", score: 80, sourceType: "MANUAL" }
2. POST /api/energy/overview { childId: 1 }
3. Check body dimension energy value
Expected Result: Body energy reflects new dimension scores
Evidence: .sisyphus/evidence/task-4-body-energy.json
Commit: YES
feat(dimension): integrate 7-dimension scores into body energyFiles: cfc-backend/src/main/java/com/etotem/cfc/service/impl/DimensionScoreServiceImpl.java, cfc-backend/src/main/java/com/etotem/cfc/service/impl/DimensionEnergySyncService.java (new)
[ ] 5. Body Index → Dimensions Entry — 身体首页添加维度入口导航
What to do:
body/index.vue 中找到功能入口区域(约第48-57行 func-section)health-dimensions.vue📊 或 💚,文案使用 "健康维度"uni.navigateTo({ url: '/pages/body/dimension-overview?childId=...' })onFuncClick 方法中处理新入口health-dimensions.vue 不在首页直接可见,添加入口是必须的Must NOT do:
Recommended Agent Profile:
quick
Parallelization:
References:
cfc-frontend/pages/body/index.vue:279-284 — 现有功能入口列表 funcListcfc-frontend/pages/body/index.vue:497-509 — onFuncClick 处理方法cfc-frontend/pages/body/health-dimensions.vue — 目标页面Acceptance Criteria:
QA Scenarios:
Scenario: Click health-dimensions entry navigates to dimensions page
Tool: Playwright
Preconditions: User logged in, on body/index page
Steps:
1. Locate element with text "健康维度" in func-grid
2. Click it
3. Wait for navigation
Expected Result: Page URL contains "health-dimensions" or "dimension-overview"
Evidence: .sisyphus/evidence/task-5-navigation.png
Scenario: Unauthenticated user sees login prompt
Tool: Playwright
Preconditions: User not logged in
Steps:
1. Click "健康维度" entry
Expected Result: Login modal appears
Evidence: .sisyphus/evidence/task-5-login-prompt.png
Commit: YES
feat(body): add health-dimensions navigation entryFiles: cfc-frontend/pages/body/index.vue
[ ] 6. Dimension Questionnaire Page — 维度问卷前端页面
What to do:
cfc-frontend/pages/body/dimension-questionnaire.vuePOST /api/dimension/questionnairepages.json 中注册新页面submitDimensionQuestionnaire 到 utils/api.jsMust NOT do:
Recommended Agent Profile:
visual-engineering
Parallelization:
References:
cfc-frontend/pages/body/health-dimensions.vue — UI样式参考cfc-backend/src/main/java/com/etotem/cfc/controller/HealthDimensionController.java:49-59 — 后端问卷APIcfc-backend/src/main/java/com/etotem/cfc/dto/HealthDimensionQuestionnaireVO.java — DTO结构cfc-frontend/utils/api.js — 需要添加 submitDimensionQuestionnairecfc-frontend/pages.json — 注册新页面.sisyphus/drafts/health-dimensions-design.md §6.2 — 问卷维度映射Acceptance Criteria:
/api/dimension/questionnairepages.json 注册QA Scenarios:
Scenario: Submit questionnaire for sleep dimension
Tool: Playwright
Preconditions: User logged in, member exists
Steps:
1. Navigate to dimension-questionnaire page
2. Select "睡眠质量" dimension
3. Answer 3 questions (select options)
4. Click submit
Expected Result: API returns success, redirect to dimensions page
Evidence: .sisyphus/evidence/task-6-questionnaire-submit.png
Scenario: Validation - no dimension selected
Tool: Playwright
Preconditions: User on questionnaire page
Steps:
1. Click submit without selecting dimension
Expected Result: Toast shows "请选择维度"
Evidence: .sisyphus/evidence/task-6-validation.png
Commit: YES
feat(body): add dimension questionnaire pageFiles: cfc-frontend/pages/body/dimension-questionnaire.vue (new), cfc-frontend/pages.json, cfc-frontend/utils/api.js
[ ] 7. Dimension Detail Pages — 7个维度的详情页
What to do:
cfc-frontend/pages/body/dimension-detail.vue(单页面+路由参数区分维度)dimension (code: growth/sleep/vision/immunity/nutrition/gut/exercise)getProductsByDomain('body') 并过滤)POST /api/dimension/history { memberId, dimension, limit: 10 }health-dimensions.vue 的维度卡片点击可导航至此详情页pages.json 中注册新页面Must NOT do:
health-dimensions.vue 全览页面Recommended Agent Profile:
visual-engineering
Parallelization:
References:
cfc-backend/src/main/java/com/etotem/cfc/controller/HealthDimensionController.java:61-76 — /api/dimension/history APIcfc-backend/src/main/java/com/etotem/cfc/dto/HealthDimensionVO.java — DimensionItem结构cfc-frontend/pages/body/health-dimensions.vue — UI样式参考cfc-frontend/utils/api.js — API函数cfc-frontend/pages.json — 注册新页面.sisyphus/drafts/health-dimensions-design.md §7.2 — 维度详情页要求Acceptance Criteria:
pages.json 注册QA Scenarios:
Scenario: View dimension detail for gut health
Tool: Playwright
Preconditions: Member has gut dimension history
Steps:
1. Navigate to /pages/body/dimension-detail?dimension=gut&childId=1
2. Verify shows "肠胃健康" title
3. Verify score displayed with level color
4. Verify history chart has data points
Expected Result: All sections render correctly
Evidence: .sisyphus/evidence/task-7-dimension-detail.png
Scenario: Empty state - no history data
Tool: Playwright
Preconditions: Member has no history for "vision"
Steps:
1. Navigate to /pages/body/dimension-detail?dimension=vision&childId=2
Expected Result: Shows "暂无历史数据" empty state
Evidence: .sisyphus/evidence/task-7-empty-state.png
Commit: YES
feat(body): add 7 dimension detail pagesFiles: cfc-frontend/pages/body/dimension-detail.vue (new), cfc-frontend/pages.json, cfc-frontend/pages/body/health-dimensions.vue
[ ] 8. Dimension Config Management (Web Admin) — 管理端维度常模配置
What to do:
cfc-web/ 中创建新视图页面 src/views/admin/dimension-config.vuehealth_norm_reference 表中的所有维度常模数据HealthNormController(或复用现有 admin controller)router/index.js 中添加路由: /admin/dimension-configstore/ 中添加对应的 API 封装(或直接使用 axios)cfc-backend/ 中创建对应的 Controller:
controller/admin/DimensionAdminController.javaHealthNormReferenceMapper 进行 CRUD 操作Must NOT do:
Recommended Agent Profile:
quick
Parallelization:
References:
cfc-backend/src/main/java/com/etotem/cfc/entity/HealthNormReference.java — 常模实体(dimension, gender, age, percentile5/15/25/50/75/85/95)cfc-backend/src/main/java/com/etotem/cfc/mapper/HealthNormReferenceMapper.java — 已有 Mapper(含 selectNorm 方法)cfc-web/src/views/admin/ — 其他管理端页面作为样式/模式参考cfc-web/src/router/index.js — 路由配置.sisyphus/drafts/health-dimensions-design.md §7.3 — 维度配置管理要求Acceptance Criteria:
mvn clean compile/admin/dimension-config 可访问QA Scenarios:
Scenario: View and edit dimension norm
Tool: Playwright
Preconditions: Admin is logged in to web admin
Steps:
1. Navigate to /admin/dimension-config
2. Verify table shows dimension norms with all percentile columns
3. Click edit on first row
4. Change p95 value
5. Click save
Expected Result: Norm value updated successfully
Evidence: .sisyphus/evidence/task-8-norm-edit.png
Scenario: Delete norm with confirmation
Tool: Playwright
Preconditions: Admin on dimension-config page
Steps:
1. Click delete on a row
2. Confirm deletion dialog
Expected Result: Row removed from table
Evidence: .sisyphus/evidence/task-8-norm-delete.png
Commit: YES
feat(admin): add dimension config managementFiles: cfc-web/src/views/admin/dimension-config.vue (new), cfc-web/src/router/index.js, cfc-backend/src/main/java/com/etotem/cfc/controller/admin/DimensionAdminController.java (new), cfc-backend/src/main/resources/mapper/HealthNormReferenceMapper.xml (if new queries needed)
[ ] 9. Data Source Management (Web Admin) — 管理端数据源管理
What to do:
cfc-web/ 中创建新视图页面 src/views/admin/data-source-config.vuehealth_data_sources 表的所有数据源配置POST /api/admin/dimension/data-source/list, /save, /deleteDimensionAdminController 合并同类端点/admin/data-source-configMust NOT do:
Recommended Agent Profile:
quick
Parallelization:
References:
cfc-backend/src/main/java/com/etotem/cfc/entity/HealthDataSourceRecord.java — 数据源实体DimensionAdminController.java — 可复用同类端点cfc-web/src/router/index.js.sisyphus/drafts/health-dimensions-design.md §7.3 — 数据源配置要求Acceptance Criteria:
/admin/data-source-config 可访问QA Scenarios:
Scenario: List and add data source
Tool: Playwright
Preconditions: Admin logged in
Steps:
1. Navigate to /admin/data-source-config
2. Verify table shows data sources
3. Click "新增" button
4. Fill form: name="测试源", type="MANUAL"
5. Click save
Expected Result: New data source appears in table
Evidence: .sisyphus/evidence/task-9-datasource-add.png
Commit: YES
feat(admin): add data source managementFiles: cfc-web/src/views/admin/data-source-config.vue (new), cfc-web/src/router/index.js, cfc-backend/src/main/java/com/etotem/cfc/controller/admin/DimensionAdminController.java
[ ] 10. Unit Tests — 后端服务单元测试
What to do:
DimensionScoreServiceImpl — 测试聚合逻辑、趋势计算、百分位计算、等级分类ProductOrderService — 测试支付成功后能量奖励调用(使用Mock验证)DifySyncService — 测试API调用(使用Mock RestTemplate)cfc-backend/src/test/java/com/etotem/cfc/service/impl/DimensionScoreServiceImplTest.javacfc-backend/src/test/java/com/etotem/cfc/service/ProductOrderServiceTest.javacfc-backend/src/test/java/com/etotem/cfc/service/DifySyncServiceTest.java@SpringBootTest 或直接 MockitoExtension + @InjectMocks + @MockMockMvc 或直接调用 Service 方法Must NOT do:
Recommended Agent Profile:
quick
Parallelization:
References:
cfc-backend/src/main/java/com/etotem/cfc/service/impl/DimensionScoreServiceImpl.java — 被测类cfc-backend/src/main/java/com/etotem/cfc/service/ProductOrderService.java — 被测类cfc-backend/src/main/java/com/etotem/cfc/service/DifySyncService.java — 被测类cfc-backend/pom.xml — 测试依赖(Spring Boot Starter Test 应已有)Acceptance Criteria:
mvn test 全部通过QA Scenarios:
Scenario: Run all unit tests
Tool: Bash
Preconditions: All backend implementation completed
Steps:
1. cd cfc-backend
2. mvn test
Expected Result: BUILD SUCCESS, all 9+ tests pass
Evidence: .sisyphus/evidence/task-10-test-results.log
Commit: YES
test(dimension): add unit tests for dimension servicescfc-backend/src/test/java/com/etotem/cfc/service/impl/DimensionScoreServiceImplTest.java (new), cfc-backend/src/test/java/com/etotem/cfc/service/ProductOrderServiceTest.java (new), cfc-backend/src/test/java/com/etotem/cfc/service/DifySyncServiceTest.java (new)4 review agents run in PARALLEL. ALL must APPROVE.
[ ] F1. Plan Compliance Audit — oracle
Read the plan end-to-end. For each "Must Have": verify implementation exists. For each "Must NOT Have": search codebase for forbidden patterns. Check evidence files exist. Compare deliverables against plan.
Output: Must Have [N/N] | Must NOT Have [N/N] | Tasks [N/N] | VERDICT: APPROVE/REJECT
[ ] F2. Code Quality Review — unspecified-high
Run mvn clean compile + linter check. Review all changed files for: as any/@SuppressWarnings, empty catches, console.log in prod, commented-out code, unused imports.
Output: Build [PASS/FAIL] | Files [N clean/N issues] | VERDICT
[ ] F3. Real Manual QA — unspecified-high (+ playwright skill if UI)
Execute EVERY QA scenario from EVERY task. Test cross-task integration. Test edge cases: empty state, invalid input.
Output: Scenarios [N/N pass] | Integration [N/N] | VERDICT
[ ] F4. Scope Fidelity Check — deep
For each task: read "What to do", read actual diff (git log/diff). Verify 1:1 compliance. Check "Must NOT do" compliance.
Output: Tasks [N/N compliant] | Contamination [CLEAN/N issues] | VERDICT
fix(dimension): calculate trend from score history instead of hardcodingfeat(product): award energy on successful paymentfeat(dify): implement knowledge sync API and AI recommendationfeat(dimension): integrate 7-dimension scores into body energyfeat(body): add health-dimensions navigation entryfeat(body): add dimension questionnaire pagefeat(body): add 7 dimension detail pagesfeat(admin): add dimension config managementfeat(admin): add data source managementtest(dimension): add unit tests for dimension servicescd cfc-backend && mvn clean compile # Expected: BUILD SUCCESS
cd cfc-backend && mvn test # Expected: Tests pass