一个基于 React + TypeScript 的智能陪伴应用,提供日记记录、AI 对话、情绪分析等功能,旨在为用户提供贴心的数字陪伴体验。
- 富文本编辑: 支持格式化文本、图片、文件上传
- 情绪标签: 智能情绪识别和手动标记
- 多媒体支持: 图片、音频、视频附件
- 天气位置: 自动记录天气和位置信息
- 数据加密: 本地加密存储,保护隐私
- AI 对话: 基于 OpenAI API 的智能对话
- 多场景模式: 关怀模式、咨询模式、日常对话
- 语音交互: Web Speech API 语音识别
- 情绪感知: 实时情绪检测和响应
- 会话管理: 对话历史记录和管理
- 本地存储: IndexedDB 本地数据库
- 数据加密: AES 加密算法保护敏感数据
- 数据导出: 支持数据备份和迁移
- 隐私保护: 完全本地化,无数据上传
- 拟人化 UI: 温暖友好的界面设计
- 响应式布局: 完美适配移动端和桌面端
- 主题切换: 明暗主题自由切换
- 角色定制: 个性化 AI 助手设置
- React 18: 现代化 React 框架
- TypeScript: 类型安全的 JavaScript
- Vite: 快速的构建工具
- Ant Design: 企业级 UI 组件库
- TailwindCSS: 实用优先的 CSS 框架
- Lucide React: 精美的图标库
- Zustand: 轻量级状态管理
- React Router: 客户端路由
- IndexedDB: 浏览器本地数据库
- LocalStorage: 配置信息存储
- Web Crypto API: 数据加密
- OpenAI API: GPT 模型集成
- Web Speech API: 语音识别
- 情绪分析: 文本情绪检测
- Node.js >= 18.0.0
- pnpm >= 8.0.0
# 克隆项目
git clone <repository-url>
cd trae-test
# 安装依赖
pnpm install# 启动开发服务器
pnpm dev
# TypeScript 类型检查
pnpm run check
# 代码格式化
pnpm run format# 构建生产版本
pnpm build
# 预览生产版本
pnpm previewsrc/
├── components/ # 可复用组件
│ ├── ChatInterface.tsx # 对话界面组件
│ ├── DiaryEditor.tsx # 日记编辑器
│ ├── Layout.tsx # 应用布局
│ └── ...
├── pages/ # 页面组件
│ ├── Home.tsx # 首页
│ ├── Diary.tsx # 日记页面
│ ├── Chat.tsx # 对话页面
│ ├── Timeline.tsx # 时间轴
│ └── Settings/ # 设置页面
├── services/ # 业务逻辑服务
│ ├── database.ts # 数据库服务
│ ├── diaryService.ts # 日记服务
│ ├── chatService.ts # 对话服务
│ └── aiService.ts # AI 服务
├── store/ # 状态管理
│ └── index.ts # Zustand 状态
├── types/ # TypeScript 类型定义
│ └── index.ts
├── hooks/ # 自定义 Hooks
└── utils/ # 工具函数
在使用 AI 对话功能前,需要配置 OpenAI API:
- 获取 OpenAI API Key
- 在应用设置中配置 API Key
- 选择合适的模型和参数
应用使用 IndexedDB 进行本地存储:
- 数据库名称:
SmartCompanionDB - 版本: 1
- 表结构:
diaries: 日记数据chatSessions: 对话会话chatMessages: 对话消息userProfiles: 用户配置
- 所有敏感数据使用 AES-256 加密
- 数据完全存储在本地,不上传到服务器
- 支持数据导出和删除
- OpenAI API Key 本地加密存储
- 支持自定义 API 端点
- 请求数据不包含个人身份信息
- 点击"写日记"进入编辑页面
- 输入标题和内容
- 添加情绪标签和多媒体附件
- 保存日记,系统自动加密存储
- 进入"对话"页面
- 选择对话模式(关怀/咨询/日常)
- 开始与 AI 助手对话
- 支持文字和语音输入
- 在"设置"中查看数据统计
- 导出数据进行备份
- 清理或删除不需要的数据
欢迎提交 Issue 和 Pull Request!
- 遵循 TypeScript 严格模式
- 使用 ESLint 和 Prettier 格式化代码
- 编写单元测试覆盖核心功能
- 提交前运行
pnpm run check
- 组件文件使用 PascalCase
- 工具函数使用 camelCase
- 常量使用 UPPER_SNAKE_CASE
- 添加中文注释说明复杂逻辑
MIT License - 详见 LICENSE 文件
感谢以下开源项目:
💝 智能陪伴,温暖相伴 - 让科技更有温度,让陪伴更加贴心。