# ChatForLife **Repository Path**: cqiemushuo/ChatForLife ## Basic Information - **Project Name**: ChatForLife - **Description**: Chat for Life 是一款基于 AI 的智能情感分析应用,通过 OCR 识别聊天截图中的文字内容,并利用大语言模型进行情感分析和回复建议。项目采用前后端分离架构,前端使用 Flutter 跨平台开发,后端使用 Spring Boot 构建 RESTful API。 核心价值 🎯 智能识别:自动识别聊天截图中的文字内容 💡 情感分析:深度分析对话情感倾向和语气特征 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-30 - **Last Updated**: 2026-03-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Chat for Life - 智能情感分析助手 ## 📋 项目概述 Chat for Life 是一款基于 AI 的智能情感分析应用,通过 OCR 识别聊天截图中的文字内容,并利用大语言模型进行情感分析和回复建议。项目采用前后端分离架构,前端使用 Flutter 跨平台开发,后端使用 Spring Boot 构建 RESTful API。 ### 核心价值 - 🎯 **智能识别**:自动识别聊天截图中的文字内容 - 💡 **情感分析**:深度分析对话情感倾向和语气特征 - 🤖 **AI 建议**:基于豆包大模型提供智能回复建议 - 📱 **跨平台**:支持 Android 和 iOS 双平台 --- ## 🏗️ 技术架构 ### 整体架构图 ``` ┌─────────────────────────────────────────────────────────┐ │ Flutter 前端应用 │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ Pages │ │ Widgets │ │ Providers│ │ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │ │ │ │ │ │ ┌────┴─────────────┴──────────────┴─────┐ │ │ │ Services Layer │ │ │ │ (API/Image/Network/Logger) │ │ │ └────────────────┬───────────────────────┘ │ └───────────────────┼─────────────────────────────────────┘ │ HTTP/REST API ┌───────────────────┼─────────────────────────────────────┐ │ ▼ │ │ Spring Boot 后端 │ │ ┌──────────────────────────────────────┐ │ │ │ Controller Layer │ │ │ │ (ImageController) │ │ │ └──────────────┬───────────────────────┘ │ │ │ │ │ ┌──────────────┴───────────────────────┐ │ │ │ Service Layer │ │ │ │ ┌──────────┐ ┌─────────────┐ │ │ │ │ │OCRService│ │BotChatService│ │ │ │ │ └────┬─────┘ └──────┬──────┘ │ │ │ └───────┼──────────────────┼───────────┘ │ └──────────┼──────────────────┼───────────────────────────┘ │ │ ▼ ▼ ┌──────────┐ ┌──────────────┐ │ 百度 OCR │ │ 火山引擎豆包 │ │ API │ │ 大模型 API │ └──────────┘ └──────────────┘ ``` --- ## 💻 技术栈详解 ### 后端技术栈 (Spring Boot) #### 核心框架 | 技术 | 版本 | 用途 | |------|------|------| | Spring Boot | 2.7.6 | 核心框架,简化配置和开发 | | Spring Web | 2.7.6 | RESTful API 开发 | | Spring Security | 2.7.6 | 安全认证和授权 | | Lombok | - | 简化 Java 代码,减少样板代码 | #### 第三方服务集成 | 服务 | 版本 | 用途 | |------|------|------| | 火山引擎 SDK | LATEST | 豆包大模型 API 调用 | | 百度 OCR API | - | 图片文字识别 | | OkHttp | 4.12.0 | HTTP 客户端,网络请求 | | JSON | 20231013 | JSON 数据处理 | #### 项目结构 ``` back/ ├── src/main/java/com/example/project/ │ ├── MainApplication.java # 应用入口 │ ├── config/ # 配置类 │ │ ├── OCRConfig.java # OCR 配置 │ │ ├── SecurityConfig.java # 安全配置 │ │ └── WebConfig.java # Web 配置(CORS等) │ ├── controller/ # 控制器层 │ │ ├── ImageController.java # 图片分析接口 │ │ ├── ImageRequest.java # 请求 DTO │ │ └── ResultController.java # 结果接口 │ ├── service/ # 服务层 │ │ ├── OCRService.java # OCR 服务接口 │ │ ├── BotChatCompletionsExample.java # AI 对话服务 │ │ ├── ChatResponse.java # 响应 DTO │ │ └── impl/ │ │ └── OCRServiceImpl.java # OCR 服务实现 │ ├── model/entity/ # 实体类 │ │ └── User.java # 用户实体(预留) │ └── repository/ # 数据访问层(预留) │ └── UserRepository.java └── src/main/resources/ └── application.yml # 应用配置文件 ``` ### 前端技术栈 (Flutter) #### 核心框架 | 技术 | 版本 | 用途 | |------|------|------| | Flutter | 3.6.0+ | 跨平台 UI 框架 | | Dart | 3.0.0+ | 编程语言 | #### 核心依赖 | 依赖 | 版本 | 用途 | |------|------|------| | provider | ^6.1.1 | 状态管理 | | dio | ^5.3.2 | HTTP 网络请求 | | http | ^1.1.0 | HTTP 客户端 | | image_picker | ^1.0.4 | 图片选择和拍照 | | image | ^4.1.3 | 图片处理和压缩 | | connectivity_plus | ^5.0.2 | 网络状态检测 | | permission_handler | ^11.0.1 | 权限管理 | | shared_preferences | ^2.2.2 | 本地数据存储 | | flutter_easyloading | ^3.0.5 | 加载提示组件 | #### 项目结构 ``` front/lib/ ├── main.dart # 应用入口 ├── config/ # 配置 │ └── api_config.dart # API 配置 ├── models/ # 数据模型 │ └── sentiment_result.dart # 情感分析结果模型 ├── pages/ # 页面 │ ├── splash_page.dart # 启动页 │ ├── home_page.dart # 主页 │ └── image_upload_page.dart # 图片上传页 ├── providers/ # 状态管理 │ └── analysis_provider.dart # 分析数据状态 ├── services/ # 服务层 │ ├── api_service.dart # API 服务 │ ├── image_service.dart # 图片处理服务 │ ├── network_service.dart # 网络服务 │ └── logger_service.dart # 日志服务 ├── theme/ # 主题 │ └── app_theme.dart # 应用主题配置 └── widgets/ # 可复用组件 ├── emotion_result_card.dart # 情感结果卡片 ├── response_card.dart # 回复建议卡片 ├── image_upload_card.dart # 图片上传卡片 ├── image_picker_widget.dart # 图片选择器 ├── network_status_bar.dart # 网络状态栏 └── result_card_widget.dart # 结果卡片 ``` --- ## 🔄 核心业务流程 ### 1. 图片分析完整流程 ``` 用户操作 │ ├─→ 选择图片/拍照 │ ▼ 图片处理 (Flutter) │ ├─→ 压缩图片 (image_service) ├─→ Base64 编码 ├─→ 网络检测 (network_service) │ ▼ 发送请求 (api_service) │ ├─→ POST /api/v1/analyze ├─→ 请求体: { "image": "base64..." } │ ▼ 后端处理 (Spring Boot) │ ├─→ ImageController 接收请求 │ ├─→ OCRService 识别文字 │ │ │ ├─→ 调用百度 OCR API │ ├─→ 解析识别结果 │ └─→ 返回文字内容 │ ├─→ BotChatCompletionsExample 分析 │ │ │ ├─→ 构建 Prompt │ ├─→ 调用火山引擎豆包 API │ ├─→ 获取 AI 分析结果 │ └─→ 封装 ChatResponse │ └─→ 返回分析结果 │ ▼ 前端展示 (Flutter) │ ├─→ 解析响应数据 ├─→ 更新 Provider 状态 ├─→ 刷新 UI 组件 └─→ 显示分析结果和建议 ``` ### 2. 数据流转 ``` ┌─────────────┐ │ 用户选择 │ │ 图片 │ └──────┬──────┘ │ ▼ ┌─────────────┐ │ ImageService│ │ 压缩/编码 │ └──────┬──────┘ │ ▼ ┌─────────────┐ │ ApiService │ │ HTTP POST │ └──────┬──────┘ │ ▼ ┌─────────────┐ │ImageController│ │ 接收请求 │ └──────┬──────┘ │ ├─────────────┐ │ │ ▼ ▼ ┌──────────┐ ┌──────────┐ │OCRService│ │BotService│ │文字识别 │ │AI 分析 │ └────┬─────┘ └────┬─────┘ │ │ └──────┬──────┘ │ ▼ ┌─────────────┐ │ChatResponse │ │ 返回结果 │ └──────┬──────┘ │ ▼ ┌─────────────┐ │AnalysisProvider│ │ 状态更新 │ └──────┬──────┘ │ ▼ ┌─────────────┐ │ UI 组件 │ │ 结果展示 │ └─────────────┘ ``` --- ## 🔌 API 接口文档 ### 1. 图片分析接口 **接口地址**: `POST /api/v1/analyze` **请求头**: ``` Content-Type: application/json ``` **请求体**: ```json { "image": "data:image/jpeg;base64,/9j/4AAQSkZJRg..." } ``` **响应成功** (200): ```json { "originalText": "识别的原始文字内容", "sentimentAnalysis": "情感分析结果:积极/消极/中性...", "responseSuggestion": "建议回复内容..." } ``` **响应失败** (400/500): ```json { "error": "错误信息描述" } ``` ### 2. 配置说明 **后端配置** (`application.yml`): ```yaml server: port: 8080 address: 0.0.0.0 spring: servlet: multipart: max-file-size: 10MB max-request-size: 10MB baidu: ocr: api-key: ${BAIDU_OCR_API_KEY} secret-key: ${BAIDU_OCR_SECRET_KEY} access-token-url: https://aip.baidubce.com/oauth/2.0/token ocr-url: https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic logging: level: com.example.project: DEBUG ``` **前端配置** (`api_config.dart`): ```dart class ApiConfig { static const String baseUrl = 'http://localhost:8080'; static const String analyzeEndpoint = '/api/v1/analyze'; } ``` --- ## 🚀 部署指南 ### 后端部署 #### 1. 环境要求 - JDK 11+ - Maven 3.6+ - 环境变量配置 #### 2. 构建步骤 ```bash # 进入后端目录 cd back # 清理并构建 mvn clean package # 运行应用 java -jar target/emotion-analysis-1.0-SNAPSHOT.jar ``` #### 3. 环境变量配置 ```bash # Linux/Mac export ARK_API_KEY="your-volcengine-api-key" export BAIDU_OCR_API_KEY="your-baidu-api-key" export BAIDU_OCR_SECRET_KEY="your-baidu-secret-key" # Windows set ARK_API_KEY=your-volcengine-api-key set BAIDU_OCR_API_KEY=your-baidu-api-key set BAIDU_OCR_SECRET_KEY=your-baidu-secret-key ``` ### 前端部署 #### 1. 环境要求 - Flutter SDK 3.6.0+ - Dart SDK 3.0.0+ - Android Studio / Xcode #### 2. 构建步骤 ```bash # 进入前端目录 cd front # 获取依赖 flutter pub get # 运行应用(开发模式) flutter run # 构建 APK(Android) flutter build apk --release # 构建 IPA(iOS) flutter build ios --release ``` --- ## 📊 性能指标 ### 当前性能 - 图片上传:支持最大 10MB - OCR 识别:平均 2-3 秒 - AI 分析:平均 3-5 秒 - 总响应时间:5-8 秒 ### 优化建议 - 实现图片预压缩,减少上传时间 - 添加请求缓存机制 - 实现异步处理和进度反馈 - 优化网络请求超时配置 --- ## 🔒 安全性 ### 当前安全措施 1. **Spring Security**: 基础安全配置 2. **CORS 配置**: 跨域请求控制 3. **API Key 管理**: 环境变量存储敏感信息 4. **输入验证**: 请求参数校验 ### 安全建议 - 实现 JWT 认证机制 - 添加请求频率限制 - 实现 API 签名验证 - 加强日志审计 --- ## 🐛 已知问题 1. ~~数据库功能已注释~~(预留扩展) 2. 错误处理需要更细粒度 3. 缺少单元测试和集成测试 4. 日志系统需要优化 --- ## 📝 开发规范 ### 代码风格 - **Java**: 遵循 Google Java Style Guide - **Dart**: 遵循 Effective Dart 规范 - 使用 Lombok 减少样板代码 - 统一使用 Slf4j 进行日志记录 ### Git 提交规范 ``` feat: 新功能 fix: 修复 bug docs: 文档更新 style: 代码格式调整 refactor: 重构 test: 测试相关 chore: 构建/工具链相关 ``` --- ## 📞 联系方式 - **项目维护**: [Your Name] - **Email**: [your-email@example.com] - **GitHub**: [your-github-repo] --- ## 📄 许可证 MIT License - 详见 LICENSE 文件