Skip to content

Story 1.1: 完善情绪打卡系统

字数
1854 字
阅读时间
8 分钟

Status

Draft

Story

As a 高校学生用户, I want 使用完整的情绪打卡功能记录我的心情状态, so that 我能够追踪情绪变化并获得个性化的心理健康建议。

Acceptance Criteria

  1. AC1: 用户可以选择多种预设情绪类型(开心、平静、焦虑、悲伤等)
  2. AC2: 支持情绪强度调节(1-5级滑块选择)
  3. AC3: 打卡后自动生成心情轮统计,支持周/月视图
  4. AC4: 支持添加文字备注和标签(可选)
  5. AC5: 数据自动同步到云端,离线状态可缓存

Tasks / Subtasks

  • [x] Task 1: 扩展情绪打卡弹窗UI组件 (AC: 1, 2, 4)

    • [x] 添加多种预设情绪类型选择器(开心、平静、焦虑、悲伤、愤怒等)
    • [x] 实现1-5级情绪强度滑块控件
    • [x] 增加情绪标签多选功能,支持自定义标签
    • [x] 扩展文字备注输入框,支持最多280字符
    • [x] 优化弹窗布局和交互体验
  • [ ] Task 2: 完善数据模型和存储逻辑 (AC: 5)

    • [ ] 扩展checkins集合schema,新增mood_intensity、energy_level字段
    • [ ] 实现情绪类型枚举值标准化(joy/calm/anxious/low/anger/other)
    • [ ] 优化数据验证逻辑,确保字段完整性
    • [ ] 实现离线数据缓存和同步机制
    • [ ] 添加数据迁移脚本,支持向后兼容
  • [ ] Task 3: 实现心情轮统计图表 (AC: 3)

    • [x] 集成图表组件库,实现心情轮可视化
    • [x] 开发周/月视图切换功能
    • [ ] 实现基于checkins数据的情绪聚合算法
    • [ ] 添加图表交互功能(点击查看详情)
    • [ ] 优化图表性能,确保流畅渲染
  • [ ] Task 4: 增强服务层API (AC: 1, 2, 3, 4, 5)

    • [x] 扩展checkins.js服务,支持新增字段
    • [x] 实现心情轮数据查询接口
    • [ ] 添加情绪标签管理功能
    • [x] 完善Mock数据,包含所有新增功能
    • [x] 更新数据归一化函数
  • [ ] Task 5: 集成现有功能验证 (Integration Verification)

    • [ ] 验证与现有用户登录功能兼容性
    • [ ] 测试与today页状态卡的集成
    • [ ] 确认checkins数据库写入正常
    • [ ] 验证心情轮组件性能表现
    • [ ] 测试离线缓存和同步功能
  • [ ] Task 6: 编写单元测试和集成测试

    • [ ] 为新增UI组件编写单元测试
    • [ ] 为服务层API编写测试用例
    • [ ] 编写数据模型验证测试
    • [ ] 创建端到端测试场景
    • [ ] 添加性能测试用例

Dev Notes

Previous Story Insights

这是项目第一个用户故事,没有前置故事的经验可以参考。需要重点关注与现有系统的集成兼容性。

Data Models

checkins集合扩展 [Source: docs/数据库/集合-情绪打卡.checkins.md#schema定义]

  • 新增字段:
    • mood_intensity: number (1-5) - 情绪强度等级
    • energy_level: number (0-5) - 能量指数
    • primary_emotion: string - 主情绪类别,枚举值:joy/calm/anxious/low/anger/other
  • 现有字段保持不变,确保向后兼容
  • 数据验证规则:mood_score范围0-100,context_note长度≤280字符

API Specifications

服务层接口扩展 [Source: miniprogram/services/checkins.js]

  • createCheckin(payload) - 支持新增字段mood_intensity, energy_level, primary_emotion
  • getTodayCheckin() - 返回格式包含心情轮数据
  • listRecent() - 支持按情绪类型和强度筛选
  • Mock数据更新:MOCK_CHECKIN_DATA和MOCK_RECENT_CHECKINS需要包含新字段

Component Specifications

情绪打卡弹窗组件 [Source: docs/功能文档/功能-情绪打卡.md#界面组件]

  • 表情刻度控件:支持5档情绪选择
  • 情绪强度滑块:1-5级可调节
  • 标签多选器:支持预设和自定义标签
  • 备注输入框:最多280字符限制

心情轮图表组件 [Source: docs/页面文档/页面-今天.md#模块1]

  • 折线图展示当日情绪波动
  • 支持周/月视图切换
  • 点击节点查看详细记录
  • 风险等级颜色标识(L1-L4)

File Locations

新增/修改文件位置 [Source: CLAUDE.md#模块结构图]

  • 前端页面:miniprogram/pages/today/index.js - 今天Tab主逻辑
  • 服务层:miniprogram/services/checkins.js - 情绪打卡服务(已存在,需扩展)
  • 组件:miniprogram/components/emotion-picker/ - 情绪选择器组件(新增)
  • 云函数:cloudfunctions/checkinRecorder/index.js - 情绪打卡记录(已存在,需扩展)
  • 数据库:checkins集合,需添加新字段和索引

Testing Requirements

测试策略 [Source: CLAUDE.md#测试策略]

  • 单元测试:为新增的UI组件和服务函数编写测试
  • 集成测试:重点测试情绪打卡->心情轮->微建议的完整流程
  • Mock数据测试:确保Mock与真实API格式一致
  • 性能测试:心情轮图表渲染性能,大量数据下的响应时间
  • 兼容性测试:确保不影响现有功能

Technical Constraints

性能要求 [Source: docs/prd.md#非功能需求]

  • 系统响应时间必须在2秒内完成基础操作
  • 支持离线基础功能,网络恢复后自动同步
  • 主包体积控制在2MB以内

数据安全要求 [Source: docs/数据库/集合-情绪打卡.checkins.md#访问控制]

  • 遵循最小权限原则,用户只能访问自己的数据
  • 敏感信息需要加密存储
  • 数据生命周期管理,保留3年后匿名化

兼容性要求 [Source: docs/prd.md#兼容性需求]

  • 保持现有API接口的向后兼容性
  • 数据库模式变更必须支持现有数据的平滑迁移
  • UI/UX必须保持TDesign设计规范的一致性

Testing

Testing Standards

测试文件位置 [Source: CLAUDE.md#测试策略]

  • 单元测试:miniprogram/services/__tests__/checkins.test.js
  • 组件测试:miniprogram/components/__tests__/emotion-picker.test.js
  • 集成测试:__tests__/integration/emotion-checkin-flow.test.js

测试框架和模式

  • 使用Jest进行单元测试
  • 模拟微信小程序环境进行组件测试
  • 使用Mock数据进行隔离测试
  • 端到端测试覆盖关键用户旅程

具体测试要求

  • 情绪选择器的交互逻辑测试
  • 数据模型验证和边界条件测试
  • 离线缓存和同步机制测试
  • 心情轮图表数据准确性测试
  • 与现有功能的集成测试

Change Log

DateVersionDescriptionAuthor
2025-10-181.0初始版本创建Winston (Architect)

Dev Agent Record

Agent Model Used

(待开发时填写)

Debug Log References

(待开发时填写)

Completion Notes List

(待开发时填写)

File List

(待开发时填写)

QA Results

(待QA测试时填写)

贡献者

The avatar of contributor named as Cai Hongyu Cai Hongyu

文件历史

撰写