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

文件历史 ​

用 ♥ 撰写