From cb5efbe3ca3a699d446de08eada8b4a20c0588a2 Mon Sep 17 00:00:00 2001 From: Jeason <1710884619@qq.com> Date: Wed, 18 Mar 2026 15:15:20 +0800 Subject: [PATCH] first commit --- README.md | 423 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 423 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..38d4171 --- /dev/null +++ b/README.md @@ -0,0 +1,423 @@ +# Screen2Feishu - AI任务管理Web应用 + +## 项目简介 + +Screen2Feishu是一个基于AI技术的任务管理Web应用,能够自动分析截图和任务描述,识别任务信息并写入飞书多维表格。 + +## 核心功能 + +### 📸 图片上传分析 + +- 上传截图,AI自动分析图片内容 +- 识别任务描述、优先级、发起人等信息 +- 自动匹配飞书用户,处理重名情况 +- 将分析结果写入飞书多维表格 + +### ⚙️ 智能配置 + +- 内存处理模式:不保存图片文件,节省存储空间 +- 用户匹配机制:自动匹配飞书用户列表 +- 随机匹配回退:重名时随机选择最近联系人 +- 缓存管理:自动管理用户缓存,提高匹配效率 + +### 📊 实时反馈 + +- 显示AI分析结果 +- 显示操作状态和进度 +- 系统配置信息展示 +- 用户缓存状态监控 + +## 快速开始 + +### 1. 环境准备 + +```bash +# 安装Python依赖 +pip install -r requirements.txt +``` + +### 2. 配置文件 + +复制配置文件模板并编辑: + +```bash +cp config.example.yaml config.yaml +``` + +编辑 `config.yaml` 文件,填入你的配置: + +```yaml +ai: + api_key: "your_api_key" + base_url: "https://api.openai.com/v1" + model: "gpt-4o" + +feishu: + app_id: "your_app_id" + app_secret: "your_app_secret" + app_token: "your_app_token" + table_id: "your_table_id" + +system: + memory_processing: false # 是否启用内存处理 + post_process: "keep" # 文件处理策略 + + user_matching: + enabled: true # 是否启用用户匹配 + fallback_to_random: true # 是否启用随机匹配回退 + cache_enabled: true # 是否启用缓存 + cache_file: "./data/user_cache.json" +``` + +### 3. 启动应用 + +```bash +# 使用启动脚本(推荐) +python start_web_app.py + +# 或者直接启动 +python web_app.py +``` + +### 4. 访问界面 + +打开浏览器,访问:`http://localhost:5000` + +## 使用指南 + +### 图片上传分析 + +1. **选择图片**:点击上传区域或拖拽图片到指定区域 +2. **上传分析**:点击"上传并分析"按钮 +3. **查看结果**:系统会显示AI分析结果和操作状态 +4. **自动处理**:任务会自动写入飞书多维表格 + +### AI分析结果 + +系统会识别以下信息: + +- **任务描述**:从图片中提取的任务内容 +- **优先级**:紧急、较紧急、一般、普通 +- **状态**:未开始、进行中、已完成 +- **发起人**:识别到的任务发起人姓名 +- **部门**:发起人所属部门 +- **开始日期**:任务开始时间 +- **截止日期**:任务截止时间 + +### 用户匹配机制 + +1. **自动匹配**:系统从飞书API获取用户列表 +2. **精确匹配**:根据姓名精确匹配用户 +3. **模糊匹配**:根据姓名包含关系匹配用户 +4. **随机回退**:重名时随机选择最近联系人 +5. **人工确认**:无法匹配时标记为待确认 + +## 配置说明 + +### 内存处理模式 + +```yaml +system: + memory_processing: true # 启用内存处理,不保存图片文件 +``` + +**优点**: + +- 不占用磁盘空间 +- 处理速度更快 +- 隐私保护更好 + +**缺点**: + +- 无法保留原始截图 +- 无法回溯分析过程 + +### 用户匹配配置 + +```yaml +system: + user_matching: + enabled: true # 启用用户匹配 + fallback_to_random: true # 启用随机匹配回退 + cache_enabled: true # 启用缓存 + cache_file: "./data/user_cache.json" # 缓存文件路径 +``` + +**缓存机制**: + +- 自动从飞书API获取用户列表 +- 缓存有效期24小时 +- 支持手动刷新缓存 + +### 文件处理策略 + +```yaml +system: + post_process: "keep" # 保留原始文件 + # post_process: "delete" # 删除原始文件 + # post_process: "move" # 移动到processed_images目录 +``` + +## API接口 + +### 1. 上传图片分析 + +**接口**:`POST /api/upload` + +**请求**: + +```javascript +// 使用FormData上传图片 +const formData = new FormData(); +formData.append('image', file); + +fetch('/api/upload', { + method: 'POST', + body: formData +}); +``` + +**响应**: + +```json +{ + "success": true, + "message": "任务已成功添加到飞书", + "ai_result": { + "task_description": "任务描述", + "priority": "紧急", + "status": "未开始", + "initiator": "张三", + "department": "研发部", + "start_date": "2026-03-03", + "due_date": "2026-03-10", + "任务发起方": {"id": "user_123"}, + "任务发起方.部门": "研发部" + } +} +``` + +### 2. 获取用户缓存信息 + +**接口**:`GET /api/user_cache` + +**响应**: + +```json +{ + "success": true, + "stats": { + "user_count": 10, + "recent_contact_count": 5, + "cache_age_hours": 0.5, + "is_expired": false + } +} +``` + +### 3. 获取配置信息 + +**接口**:`GET /api/config` + +**响应**: + +```json +{ + "success": true, + "config": { + "memory_processing": false, + "user_matching_enabled": true, + "fallback_to_random": true, + "cache_enabled": true, + "post_process": "keep" + } +} +``` + +## 界面说明 + +### 主界面布局 + +``` +┌─────────────────────────────────────────────────────────┐ +│ Screen2Feishu │ +├─────────────────────────────────────────────────────────┤ +│ 统计信息: 用户缓存 | 最近联系人 | 缓存状态 │ +├──────────────────────┬──────────────────────────────────┤ +│ 📸 图片上传分析 │ ⚙️ 系统配置 │ +│ │ │ +│ [上传区域] │ 内存处理: 启用/禁用 │ +│ 文件名: xxx │ 用户匹配: 启用/禁用 │ +│ [上传] [清空] │ 随机匹配: 启用/禁用 │ +│ │ 缓存功能: 启用/禁用 │ +│ 上传状态: │ 文件处理: keep/delete/move │ +│ [状态信息] │ │ +│ │ 📝 状态日志 │ +│ AI分析结果: │ [日志信息] │ +│ [分析结果] │ │ +└──────────────────────┴──────────────────────────────────┘ +``` + +### 状态指示 + +- **绿色**:成功状态 +- **黄色**:警告状态(待确认、随机匹配等) +- **红色**:错误状态 +- **蓝色**:信息状态 + +### 日志系统 + +系统会记录所有操作的日志,包括: + +- 文件上传状态 +- AI分析结果 +- 用户匹配过程 +- 飞书写入结果 +- 错误信息 + +## 使用场景 + +### 场景1:截图转任务 + +1. 从聊天记录、邮件或文档中截图 +2. 上传截图到Web界面 +3. AI自动分析截图内容 +4. 生成任务并写入飞书表格 + +### 场景2:批量处理 + +1. 准备多个截图文件 +2. 逐个上传分析 +3. 系统自动处理并写入飞书 + +### 场景3:实时监控 + +1. 配置监控文件夹 +2. 新截图自动触发分析 +3. 实时更新飞书表格 + +## 故障排除 + +### 1. 无法启动应用 + +**问题**:`ModuleNotFoundError` + +**解决**: + +```bash +pip install -r requirements.txt +``` + +### 2. AI分析失败 + +**问题**:API密钥错误或网络问题 + +**解决**: + +- 检查 `config.yaml` 中的API密钥 +- 检查网络连接 +- 查看浏览器控制台错误信息 + +### 3. 飞书写入失败 + +**问题**:飞书API权限不足 + +**解决**: + +- 检查飞书应用权限 +- 验证 `app_id`、`app_secret`、`app_token`、`table_id` +- 查看日志中的详细错误信息 + +### 4. 用户匹配失败 + +**问题**:无法获取用户列表或匹配失败 + +**解决**: + +- 检查飞书API权限(用户列表读取) +- 检查缓存文件路径 +- 查看日志了解详细错误 + +## 技术架构 + +### 前端技术 + +- **HTML5**:语义化结构 +- **CSS3**:现代样式,响应式设计 +- **JavaScript**:异步请求,实时更新 + +### 后端技术 + +- **Flask**:轻量级Web框架 +- **OpenAI API**:AI图像分析 +- **飞书API**:用户管理和表格写入 +- **用户缓存**:提高匹配效率 + +### 数据流 + +``` +用户上传图片 → Web服务器接收 → AI分析 → 用户匹配 → 飞书写入 → 返回结果 +``` + +## 项目结构 + +``` +Screen2Feishu/ +├── web_app.py # Web应用入口 +├── start_web_app.py # 启动脚本 +├── config.yaml # 配置文件 +├── requirements.txt # Python依赖 +├── templates/ +│ └── index.html # Web界面 +├── services/ +│ ├── ai_service.py # AI服务 +│ └── feishu_service.py # 飞书服务 +├── utils/ +│ ├── user_cache.py # 用户缓存 +│ ├── config_loader.py # 配置加载 +│ ├── logger.py # 日志工具 +│ └── notifier.py # 通知工具 +├── data/ # 数据目录 +├── monitor_images/ # 监控图片 +└── processed_images/ # 已处理图片 +``` + +## 注意事项 + +1. **安全**:妥善保管API密钥,不要泄露 +2. **权限**:确保飞书应用有必要的API权限 +3. **网络**:保持网络连接稳定 +4. **存储**:注意磁盘空间使用 +5. **隐私**:敏感信息不要在日志中显示 + +## 更新日志 + +### v1.0.0 + +- ✅ 基础Web界面 +- ✅ 图片上传分析 +- ✅ AI自动识别 +- ✅ 用户匹配机制 +- ✅ 飞书集成 +- ✅ 实时状态反馈 +- ✅ 日志系统 +- ✅ 配置管理 + +## 贡献指南 + +1. Fork项目 +2. 创建功能分支 +3. 提交代码 +4. 创建Pull Request + +## 许可证 + +MIT License + +## 联系方式 + +如有问题或建议,请通过GitHub Issues反馈。 + +--- + +**Screen2Feishu** - 让AI帮你管理任务 🚀 \ No newline at end of file