针对大学生学业、人际和就业压力下常见的情绪困扰,专业咨询资源有限、求助门槛高,「心晴」定位为低门槛、非诊断、非治疗的 AI 情绪陪伴产品,帮助用户看见情绪、梳理想法,并在高风险时连接援助资源。
核心功能包括:情绪打卡(选择平静/焦虑/开心/疲惫,可写文字、配图并本地保存);AI 陪伴对话,按 CBT 认知行为疗法引导「事件锚定—思维捕捉—认知检验—行动承诺」;场景认知重建,从宿舍、教室、办公室等真实情境生成「原想法 vs 重建想法」报告;情绪报告用日历、分布和趋势图回看打卡数据;危机转介提供热线、呼吸引导、5-4-3-2-1 接地练习和个人安全计划;个人中心支持主题、IP 形象和数据概览。
主路径为:打开应用 → 记录当下情绪或进入 AI 对话 → 系统做风险分级 → 低风险继续陪伴与认知重建,中高风险展开危机面板并给出热线与自助练习 → 可在报告页回顾情绪变化。产品强调温和表达,不做疾病诊断,高危情况引导求助专业资源。
整体采用前后端分离。前端是 Vite + TypeScript 的移动优先 H5 单页,原生 HTML/CSS/JavaScript 实现打卡、报告、对话和危机面板,Chart.js 做情绪可视化,手绘 SVG 做 IP 与图标,CSS 变量切换四套主题;开发期数据先写入 localStorage,图片用 FileReader 和 Canvas 压缩。后端是 Node.js + Express 的危机检测服务,接口含对话、风险检查、安全计划和资源查询;Vite 把 /api 代理到该服务。AI 走 DeepSeek(也可切通义千问),密钥只放服务端,由 /api/ai/chat/completions 转发。危机识别为「关键词/正则 + 大模型语义分类」双层,AI 超时自动降级,避免漏拦或把整站打挂。
我主要负责前端核心页面与危机链路联调,完成打卡—历史—报告数据闭环、AI 对话与 CBT/场景重建入口,以及风险灯、热线、呼吸与安全计划在同一对话场景中的联动;后端侧参与风险分级接口、AI 转发和失败兜底。目前已跑通主流程,前端核心模块可用,危机接口可用 Vitest 回归。
难点一是早期单文件膨胀,事件重复绑定、页面互相影响,后来按功能拆模块、加独立初始化和 class 前缀。难点二是危机既要少误报口语里的「要死了」,又不能漏掉真实自伤表述,因此做文本归一化、语境守卫,再用大模型复核。难点三是前端不能持有模型密钥,改为服务端代理。另外 Windows 下中文提交乱码、Emoji 跨设备不一致,分别用 UTF-8 规范和内联 SVG 解决。