立项背景与目标: 为纪念一段珍贵的友谊,立项打造一款"有温度"的情绪陪伴类移动应用。针对传统日记工具缺乏情感反馈、情绪变化难以被看见的痛点,让用户拥有一棵能感知情绪、陪伴成长的专属小树,实现"倾诉有回应、情绪被记录"的目标。 核心功能模块:
1. 情绪感知小树:基于中文关键词与情绪词典的本地情绪分析,识别开心、难过、焦虑、愤怒、疲惫、兴奋、爱意 7类情绪,实时驱动小树形态与天气特效变化(开心→阳光、难过→下雨、焦虑→大风)。
2. AI 智能对话:接入豆包(火山方舟)大模型 API,定制"小树人格"系统提示词,按用户情绪用不同语气回应;未配置或请求失败时自动降级到本地模板引擎,保证离线可用。
3. 养成系统:小橘芽→青叶苗→友谊枝→大橘树四阶段成长,由绑定天数与倾诉次数共同驱动升级。
4. 情绪时间轴与记忆果实:图表可视化每日"情绪花园";情绪波动较大时自动结出记忆果实,封存当天心情与对话。
5. 树洞模式、时光胶囊、每周周报、双树联结:AES 加密倾诉树洞、设定解锁日期的写给未来的信、每周心情总结、好友双树互联。
业务流程: 首次启动进入故事引导页 → 绑定专属小树(命名与昵称)→ 主界面与小树对话 → 系统本地分析情绪、更新小树状态、生成回应并持久化记录 →通过情绪时间轴、记忆果实、周报随时回顾心情变化。
整体架构与设计思路: 采用 Flutter + Provider 状态管理,代码按模型层、服务层、界面层、工具层分层组织。main.dart 通过 MultiProvider 统一注入 5 个核心服务,界面层以 Consumer
订阅状态驱动 UI,全组件化开发。数据层基于 sqflite 本地 SQLite 数据库,存储对话、情绪记录、记忆果实、时光胶囊等数据,树洞内容 AES 对称加密落库,全程离线可用、隐私优先。AI
层封装独立的 DoubaoService 调用火山方舟 Chat Completions 接口,设置 20 秒超时与异常捕获,失败静默降级本地模板引擎,实现"大模型优先、本地兜底"双通道策略。动画层使用
CustomPainter 自绘小树,配合 AnimationController 实现生长阶段形态变化与天气粒子特效(雨/雪/风/闪电)。
个人负责模块与结果: 独立完成需求分析、UI 设计、架构搭建与全部功能开发,共交付 11 个页面、5 个核心服务模块、7 类情绪识别、4 个成长阶段、37+ 条情绪化回复模板。对话模块在未配置API Key 或网络异常时用户无感知降级,核心体验零依赖。
难点与解决方案:
1. 大模型响应延迟影响对话体验——增加"小树正在聆听"气泡与树身动画反馈,20 秒超时熔断后静默降级本地模板,保证任何网络条件下都有即时回应。
2. 情绪状态多模块同步——将情绪分析结果收敛到 TreeService 单一状态源,通过 ChangeNotifier 驱动小树形态、天气特效、回应语气同步联动。
3. 隐私安全——树洞内容 AES 加密落库,密钥仅存本地,全部数据不上传服务器。