基于
v20260604.1需求变更 | 当前代码状态评估日期:2026-06-04
| 总工作量 | 后端原子任务 | 前端原子任务 | 预估工期 |
|---|---|---|---|
| 26 项 | 14 | 12 | 5-7 天(1人全栈) |
| 资产 | 说明 |
|---|---|
| EightStarService | 八星类型枚举 + 星对定义已完整实现,可直接复用 |
| CalculatorService | 已含 calculateMissingNumbers() + calculateTalentNumbers(),可直接用于关系合盘 |
| DifyService | 基础 invokeWorkflow() 已实现,新增关系/号码分析只需加新方法 |
| OrderService | createOrder() + paySuccess() + handleAnnualCommission() 基础框架完整 |
| UserService.upgradeVip() | VIP 升级框架已实现,可扩展 super_annual 类型 |
| Quota 框架 | UserService 中已存在配额读写逻辑 |
| CommerceService | 接口 + Stub 已实现,Phase 2+ 才需接入 lilishop |
| 三角图组件 | TriangleChart.vue 可直接用于双命盘对比展示 |
super_annual文件: num-server/.../entity/User.java
"super_annual"文件: num-server/.../service/ConfigService.java
getAllSeeds() 方法(init 和 reset)各加 3 项:| Key | Value | Type | 说明 |
|---|---|---|---|
pricing.super_member |
131400 |
price | 超级会员年费(分)¥1,314 |
commission.super_member.direct_rate |
3000 |
percent | 超级会员直推佣金(千分比)30% |
commission.super_member.upstream_rate |
500 |
percent | 超级会员上级佣金(千分比)5% |
文件: num-server/.../entity/Relation.java
| 字段 | 类型 | 说明 |
|---|---|---|
| id | Long (PK, auto) | |
| userId | Long | 所属用户 ID(FK → user) |
| relationType | String | 关系类型:spouse/亲子/colleague/friend/superior |
| relationTypeLabel | String | 关系类型中文显示名 |
| name | String | 关系人姓名(用户填写) |
| birthDate | LocalDate | 关系人生日 |
| birthDateText | String | 生日原文(YYYY-MM-DD) |
| gender | Integer | 关系人性别 0/1/2 |
| tags | String (JSON) | 自定义标签 |
| note | String | 备注 |
| createTime | LocalDateTime | |
| updateTime | LocalDateTime |
文件: num-server/.../repository/RelationRepository.java
findByUserIdOrderByCreateTimeDesc(Long userId)findByIdAndUserId(Long id, Long userId)文件: num-server/.../entity/NumberAnalysis.java
| 字段 | 类型 | 说明 |
|---|---|---|
| id | Long (PK, auto) | |
| userId | Long | 所属用户 ID(FK → user) |
| phoneNumber | String | 被分析的手机号 |
| starCombinations | Text (JSON) | 八星组合分析结果 |
| summary | Text | 综合解读文字 |
| createTime | LocalDateTime |
文件: num-server/.../repository/NumberAnalysisRepository.java
findByUserIdOrderByCreateTimeDesc(Long userId)findByPhoneNumberAndUserId(String phone, Long userId, Pageable page)findTopByPhoneNumberAndUserIdOrderByCreateTimeDesc(String phone, Long userId) — 查重productType = "super_member"文件: num-server/.../service/OrderService.java
变更:
inferProductType() — 增加 superMemberFee 价格判断paySuccess() — 增加 "super_member".equals(productType) 分支
userService.upgradeVip(buyerId, 365, "super_annual")handleSuperMemberCommission(order, buyer, inviter)(同 handleAnnualCommission 逻辑,使用 super_member 费率)handleSuperMemberCommission() — 复制 handleAnnualCommission 模式,读取 commission.super_member.direct_rate / upstream_ratesumAnnualCommissionTo() — 扩展为同时统计 annual + super_annual 佣金super_annual文件: num-server/.../service/UserService.java
upgradeVip() 可将 vipType 设为 "super_annual"文件: 无新建,在现有 Controller 方法上加注解或手动校验
@AuthRequired(vip = {"super_annual", "practitioner"})文件: num-server/.../controller/RelationController.java
| 端点 | 方法 | 说明 |
|---|---|---|
/api/relation/create |
POST | 添加关系人 |
/api/relation/list |
POST | 关系人列表 |
/api/relation/update |
POST | 编辑关系人 |
/api/relation/delete |
POST | 删除关系人 |
/api/relation/compare |
POST | 双命盘对比合盘(调用 CalculatorService 计算双方 24 位置) |
/api/relation/compare/interpret |
POST | 发起 AI 合盘解读(调用 DifyService.invokeRelationWorkflow) |
文件: num-server/.../controller/NumberAnalysisController.java
| 端点 | 方法 | 说明 |
|---|---|---|
/api/number-analysis/analyze |
POST | 分析手机号(调用 CalculatorService 解析号码 → EightStarService 匹配星对 → Dify AI 生成解读) |
/api/number-analysis/list |
POST | 历史分析记录 |
/api/number-analysis/detail |
POST | 单条记录详情 |
文件: num-server/.../service/DifyService.java
invokeRelationWorkflow(Map<String, Object> inputs, String userId)
/v1/workflows/runinvokeNumberAnalysisWorkflow(Map<String, Object> inputs, String userId)
/v1/workflows/run文件: client/pages/admin/index.vue
文件: client/pages.json
原 3 项: | 记录 → 分析 | 我的 → 我的 | 首页 → 首页 |
新 4 项: | 首页 | 关系 | 分析 | 我的 | |------|------|------|------| | pages/index/index | pages/relations/index | pages/analysis/index | pages/profile/index |
记→分析:原有「记录」页签改名为「分析」,路径不变或迁移到 pages/analysis/index 分析页内容:合并历史咨询记录入口 + AI 解读入口 + 号码分析入口(超级会员可见)
注意:
hasSuperMember 或 isVip 计算属性文件: client/pages/analysis/index.vue(新建或改造自 records/index.vue)
布局:
┌─────────────────────────┐
│ 分析 (Analysis Hub) │
├─────────────────────────┤
│ 📋 咨询记录 │ ← 原有 records 列表
│ │
│ ── 超级会员专属 ── │ ← 非超级会员显示锁图标
│ 🔗 关系能量分析 │ → relations/index
│ 📱 八星号码分析 │ → number-analysis/index
└─────────────────────────┘
文件: client/pages/relations/index.vue
布局:
┌─────────────────────────┐
│ 关系能量分析 │
├─────────────────────────┤
│ ┌─── 添加关系人 ──┐ │ → add-relation.vue
│ │ 选择类型+输入生日 │ │
│ └─────────────────┘ │
│ │
│ 我的关系人 │
│ ┌── spouse ──┐ │ → chart-compare.vue
│ │ 张三 1990-01-15 │ │
│ └─────────────┘ │
│ ┌── col1eague ─┐ │
│ │ 李四 1988-06-20 │ │
│ └─────────────┘ │
└─────────────────────────┘
文件: client/pages/relations/add-relation.vue
表单字段:
文件: client/pages/relations/chart-compare.vue
布局:
┌─────────────────────────┐
│ ← 关系能量对比 │
├─────────────────────────┤
│ 用户命盘 vs 关系人命盘│
│ ┌──────┐ ┌──────┐ │
│ │三角图│ │三角图│ │
│ └──────┘ └──────┘ │
│ │
│ 合盘分析(差异/相似) │
│ ┌─ 数字能量互补 ──┐ │
│ │ 某星在某位置匹配... │ │
│ ├─ AI 合盘解读 ──┤ │
│ │ 点击 → Dify 生成... │ │
│ └─────────────────┘ │
└─────────────────────────┘
文件: client/pages/relations/number-analysis.vue
布局:
┌─────────────────────────┐
│ 八星号码能量分析 │
├─────────────────────────┤
│ [输入手机号] [分析按钮] │
│ │
│ 分析结果 │
│ 号码: 138xxxx1234 │
│ 天医: 13 (一级+) │
│ 延年: 34 (三级-) │
│ 绝命: 12 (二级) │
│ ... │
│ │
│ [AI 深度解读] │
└─────────────────────────┘
1. 关系页(未授权时) — relations/index.vue
🔒 开通超级会员,解锁关系能量分析 ¥1,314/年2. 我的页面 — pages/profile/index.vue
3. AI 解读页 — pages/chart/index.vue(咨询结束后右上角或底部)
配置项:
user1_name, user2_name, relation_type, user1_positions (JSON), user2_positions (JSON)dify.workflow.relation_app_id(新增配置项)配置项:
phone_number, star_combinations (JSON)dify.workflow.number_analysis_app_id(新增配置项)文件: num-server/.../service/ConfigService.java
dify.workflow.relation_app_id — string,默认 ""dify.workflow.number_analysis_app_id — string,默认 ""Phase 1 (基础设施) Phase 2 (业务逻辑) Phase 3 (接口) Phase 4 (前端)
────────────────── ────────────────── ────────────────── ──────────────────
P1.1 User.vipType
│
P1.2 ConfigService 3项
│
P1.3 Relation Entity → P2.1 OrderService → P3.1 RelationController → P4.3~P4.5 关系页面
P1.4 RelationRepo │
│ │
P1.5 NumberAnalysis → P2.2 UserService → P3.2 NumberAnalysisCtl → P4.6 号码页面
P1.6 NumberAnalysisRepo │ │
│ │ │
P2.3 权限校验┘───────────┘ │
│
P3.3 DifyService 2个方法──────────────┘ → 依赖 Dify 平台创建
→ 依赖 Frontend 页面展示
P3.4 管理后台卡片 ────────────────────────── P4.x 前端可并行
P4.1 TabBar + P4.2 分析页 ───── 可独立并行
P4.7 订阅入口 × 3 ──────────── 依赖 Phase 2 支付能力,可并行于 P2.1 后
Week 1:
Mon-Tue: P1.1+P1.2+P1.3+P1.4+P1.5+P1.6 (基础设施, 可全并行)
Tue-Wed: P2.1+P2.2+P2.3 (后端业务逻辑)
Wed-Thu: P3.1+P3.2+P3.3 (后端API, 可全并行)
Thu: P4.1+P4.2 (TabBar+分析页, 可并行)
Week 2:
Fri: P4.3+P4.4+P4.5+P4.6 (前端页面, 可全并行)
Fri-Sat: P3.4+P4.7+P5.1+P5.2+P5.3 (管理后台+Dify配置, 可并行)
Sat-Sun: 联调 + Bugfix + 验收