Quick Summary: 为"行·人际和谐"维度实现完整的关系质量管理体系,包含 AI 生成问卷评分、互动记录追踪、健康预警、里程碑提醒五大功能
Deliverables:
- 后端:3 个新 Service、1 个 Controller、4 个新 Entity、3 个 DTO、新数据表
- 前端:family-members 增强、新问卷页面、互动记录组件、健康预警提示
- AI:基于 Dify 的动态问卷生成
Estimated Effort: Large Parallel Execution: YES - 3 waves Critical Path: T1 (schema) → T5 (backend APIs) → T10 (frontend integration) → T14 (AI questionnaire) → T17 (health alerts)
实现"行·人际和谐"维度的第二层关系质量功能(五项全量)
Key Discussions:
Research Findings:
AIService.java 已封装 Dify AI(/chat-messages 端点,blocking 模式)DanAssessmentResult.java 已有 EMI 维度(情绪商数/心理韧性/压力应对/自我认知)可作为关系质量参考action/index.vue 已有 FamilyEnergyBar + FamilyRelationGraph + ContactCard 组件FamilyRelationGraph.vue 已有 intimacyMap + energyMap props(但 family-members.vue 当前不传入)ContactCard.vue 已有 intimacyLevel 显示Contact 实体已有 intimacyLevel 字段在"行·人际和谐"维度建立完整的关系质量管理体系,用户可以通过 AI 问卷 + 互动记录了解家庭成员间的关系健康度,并获得改善建议。
family_members 新增 4 字段 + 3 张新表/api/family/relationship/*、/api/family/interaction/*mvn clean compile 后端编译通过Result<T> 格式Contact 实体和联系人功能(联系人单独实现)?.(微信小程序限制)Wave 1 (Foundation — 8 tasks, MAX PARALLEL):
├── T1: Schema 变更 + Entity 定义 [quick]
├── T2: InteractionLog Entity + Mapper [quick]
├── T3: RelationshipQuestionnaireSnapshot Entity + Mapper [quick]
├── T4: RelationshipQuestionnaireResponse Entity + Mapper [quick]
├── T5: RelationshipQualityController + Service [unspecified-high]
├── T6: InteractionLogController + Service [unspecified-high]
├── T7: RelationshipQuestionnaireController + Service [unspecified-high]
└── T8: 前端 API 封装 (utils/api.js) [quick]
Wave 2 (Frontend Core — 6 tasks, MAX PARALLEL):
├── T9: family-members.vue 三维评分展示 [visual-engineering]
├── T10: member-action-detail.vue 增强 [visual-engineering]
├── T11: action/index.vue 关系质量概览 [visual-engineering]
├── T12: 互动记录弹窗/页面 [visual-engineering]
├── T13: 联系人卡片增强 (ContactCard intimacyLevel) [visual-engineering]
└── T14: 问卷填写页面 (relationship-questionnaire.vue) [visual-engineering]
Wave 3 (AI + Advanced — 4 tasks):
├── T15: AI 问卷生成(Dify 集成) [unspecified-high]
├── T16: 评分计算逻辑(问卷 + 互动记录) [deep]
├── T17: 健康预警 + 里程碑计算 [deep]
└── T18: 行维度首页完整集成 [deep]
Wave FINAL:
└── T19: 端到端验证 + 提交推送
| Task | Deps | Blocks |
|---|---|---|
| T1: Schema | - | T5, T6, T7 |
| T2: InteractionLog Entity | - | T6 |
| T3: Snapshot Entity | - | T7 |
| T4: Response Entity | T3 | T7 |
| T5: RelationshipQuality Ctrl+Svc | T1 | T8 (验证) |
| T6: InteractionLog Ctrl+Svc | T1, T2 | T8 (验证) |
| T7: Questionnaire Ctrl+Svc | T1, T3, T4 | T8 (验证) |
| T8: Frontend API | T5, T6, T7 | T9, T12, T13, T14 |
| T9: family-members 增强 | T8 | T11 |
| T10: member-action-detail | T8 | - |
| T11: action/index 概览 | T9, T10 | T18 |
| T12: 互动记录 UI | T8 | - |
| T13: ContactCard 增强 | T8 | - |
| T14: 问卷页面 | T8 | T15, T16 |
| T15: AI 问卷生成 | T14 | T16, T18 |
| T16: 评分计算 | T15 | T18 |
| T17: 健康预警+里程碑 | T5, T6 | T18 |
| T18: 行首页集成 | T11, T15, T16, T17 | T19 |
| T19: 端到端验证 | T18 | - |
每个任务格式:推荐 Agent + 并行信息 + 参考文件 + 验收标准 + QA 场景
SQL 变更:
ALTER TABLE family_members
ADD COLUMN trust_score DECIMAL(5,2) DEFAULT 0 COMMENT '信任度 0-100',
ADD COLUMN intimacy_score DECIMAL(5,2) DEFAULT 0 COMMENT '亲密度 0-100',
ADD COLUMN communication_score DECIMAL(5,2) DEFAULT 0 COMMENT '沟通质量 0-100',
ADD COLUMN last_interaction_at DATETIME DEFAULT NULL COMMENT '最近互动时间';
CREATE TABLE interaction_logs (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
family_id BIGINT NOT,
from_member_id BIGINT NOT,
to_member_id BIGINT NOT,
interaction_type VARCHAR(32) NOT COMMENT 'dining/outgoing/call/video/chat/play/gift',
description VARCHAR(256),
happened_at DATETIME NOT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
INDEX idx_family (family_id),
INDEX idx_member (from_member_id),
INDEX idx_happened (happened_at)
) COMMENT '家庭成员互动记录';
CREATE TABLE relationship_questionnaire_snapshots (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
family_member_id BIGINT NOT,
respondent_id BIGINT NOT,
member_name VARCHAR(64),
relationship_type VARCHAR(32),
ai_generated_json LONGTEXT NOT NULL COMMENT 'AI生成的题目 JSON',
version VARCHAR(32),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
INDEX idx_member (family_member_id),
UNIQUE INDEX idx_version (family_member_id, version)
) COMMENT '关系问卷快照';
CREATE TABLE relationship_questionnaire_responses (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
snapshot_id BIGINT NOT,
respondent_id BIGINT NOT,
answers_json LONGTEXT NOT NULL COMMENT '用户回答 JSON',
trust_score DECIMAL(5,2),
intimacy_score DECIMAL(5,2),
communication_score DECIMAL(5,2),
interaction_bonus DECIMAL(5,2) DEFAULT 0 COMMENT '互动记录加分',
total_score DECIMAL(5,2),
calculated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
INDEX idx_snapshot (snapshot_id),
INDEX idx_respondent (respondent_id)
) COMMENT '关系问卷回答结果';
Entity 变更:FamilyMember.java 新增 trustScore, intimacyScore, communicationScore, lastInteractionAt 字段
Agent: quick
Entity:InteractionLog.java — familyId, fromMemberId, toMemberId, interactionType, description, happenedAt, createdAt
Agent: quick
Entity:RelationshipQuestionnaireSnapshot.java — familyMemberId, respondentId, memberName, relationshipType, aiGeneratedJson, version, createdAt
Agent: quick
Entity:RelationshipQuestionnaireResponse.java — snapshotId, respondentId, answersJson, trustScore, intimacyScore, communicationScore, interactionBonus, totalScore, calculatedAt
Agent: quick
API 端点:
POST /api/family/relationship/scores — 获取评分POST /api/family/relationship/calculate — 计算并保存评分POST /api/family/relationship/health-alerts — 健康预警POST /api/family/relationship/milestones — 里程碑Agent: unspecified-high
API 端点:
POST /api/family/interaction/add — 添加互动POST /api/family/interaction/list — 查询互动记录GET /api/family/interaction/types — 获取互动类型列表Agent: unspecified-high
API 端点:
POST /api/family/questionnaire/generate — AI 生成问卷POST /api/family/questionnaire/submit — 提交问卷GET /api/family/questionnaire/snapshot/{memberId} — 获取快照GET /api/family/questionnaire/history/{memberId} — 获取历史Agent: unspecified-high
新增函数:
// 关系质量评分
export const getRelationshipScores = (familyId) => request('/api/family/relationship/scores', 'POST', { familyId })
export const calculateRelationshipScore = (data) => request('/api/family/relationship/calculate', 'POST', data)
export const getHealthAlerts = (familyId) => request('/api/family/relationship/health-alerts', 'POST', { familyId })
export const getMilestones = (familyId, daysAhead) => request('/api/family/relationship/milestones', 'POST', { familyId, daysAhead })
// 互动记录
export const addInteraction = (data) => request('/api/family/interaction/add', 'POST', data)
export const listInteractions = (data) => request('/api/family/interaction/list', 'POST', data)
export const getInteractionTypes = () => request('/api/family/interaction/types', 'GET', {})
// 关系问卷
export const generateQuestionnaire = (data) => request('/api/family/questionnaire/generate', 'POST', data)
export const submitQuestionnaire = (data) => request('/api/family/questionnaire/submit', 'POST', data)
export const getQuestionnaireSnapshot = (memberId) => request('/api/family/questionnaire/snapshot/' + memberId, 'GET', {})
export const getQuestionnaireHistory = (memberId) => request('/api/family/questionnaire/history/' + memberId, 'GET', {})
Agent: quick
每个成员卡片增加三个进度条(信任绿色/亲密粉色/沟通蓝色),显示 trust/intimacy/communication 评分。增加"做问卷"和"记录互动"按钮。
Agent: visual-engineering
三维评分大号展示 + 最近互动记录列表 + 互动类型分布 + 关系健康状态指示(健康/注意/预警)。
Agent: visual-engineering
在 FamilyRelationGraph 下方新增关系质量概览区块:家庭整体关系健康度 + 健康预警列表 + 即将到来的里程碑 + 快速入口。
Agent: visual-engineering
新建 pages/action/interaction-log.vue:选择互动类型(dining/outgoing/call/video/chat/play/gift/other)+ 选择互动对象 + 填写描述 + 选择时间。
Agent: visual-engineering
ContactCard.vue 已有 intimacyLevel 改为进度条样式展示,低分显示预警色。
Agent: visual-engineering
新建 pages/action/relationship-questionnaire.vue:显示 AI 生成的问卷题目 + 用户选择选项 + 提交后显示三维评分。
Agent: visual-engineering
扩展 AIService.java,新增 generateRelationshipQuestionnaire() 方法:
/chat-messages 端点(blocking 模式)relationship_questionnaire_snapshots 表Agent: unspecified-high
实现评分计算:
family_members 三围字段 + last_interaction_atAgent: deep
getHealthAlerts():30 天无互动触发预警,返回预警列表(成员名、关系类型、无互动天数、建议)
getUpcomingMilestones():查询 family_member_attributes.birthDatetime,返回未来 7 天内的生日/纪念日
Agent: deep
整合 T11 + T15 + T16 + T17 到 action/index.vue:关系质量概览 + 健康预警列表 + 里程碑列表 + 问卷/互动入口
Agent: deep
mvn clean compile 验证git add + git commit + git pushWave 1 完成: git add cfc-backend/src/main/java/com/etotem/cfc/entity/InteractionLog.java cfc-backend/src/main/java/com/etotem/cfc/entity/Relationship*.java ...; git commit -m "feat: 关系质量后端基础架构"
Wave 2 完成: git add cfc-frontend/pages/profile/family-members.vue cfc-frontend/pages/action/...; git commit -m "feat: 关系质量前端UI"
Wave 3 完成: git add ...; git commit -m "feat: AI问卷生成+健康预警+里程碑"
最终: git push origin cfclub
# 后端编译
cd cfc-backend && mvn clean compile
# 后端启动
mvn spring-boot:run # localhost:9082
# API 验证
curl -X POST http://localhost:9082/api/family/relationship/scores -d '{"familyId":1}'
curl -X POST http://localhost:9082/api/family/interaction/add -d '{"familyId":1,"fromMemberId":2,"toMemberId":3,"type":"dining"}'
curl -X POST http://localhost:9082/api/family/questionnaire/generate -d '{"memberId":2,"respondentId":1}'
Result<T> 格式mvn clean compile 无 error