Files
feishu_screen/项目结构说明.md

288 lines
8.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Screen2Feishu 项目结构说明
## 项目目录结构
```
Screen2Feishu/
├── main.py # 原始命令行程序入口
├── web_app.py # Web应用入口
├── start_web_app.py # Web应用启动器
├── config.yaml # 配置文件
├── config.example.yaml # 配置文件示例
├── requirements.txt # Python依赖
├── README.md # 项目说明
├── Web应用使用说明.md # Web应用使用说明
├── 项目结构说明.md # 本文件
├── 优化设计方案.md # 优化设计方案
├── 优化功能说明.md # 优化功能说明
├── 优化总结_更新版.md # 优化总结
├── BUG修复总结.md # BUG修复说明
├── 优先级修改说明.md # 优先级修改说明
├── test_priority.py # 优先级测试脚本
├── app.log # 应用日志文件
├── data/ # 数据目录
│ ├── user_cache.json # 用户缓存文件
│ └── test_user_cache.json # 测试缓存文件
├── monitor_images/ # 监控图片目录(待处理)
├── processed_images/ # 已处理图片目录
├── services/ # 服务层
│ ├── __init__.py
│ ├── ai_service.py # AI服务
│ └── feishu_service.py # 飞书服务
├── templates/ # Web模板目录
│ └── index.html # Web界面模板
├── utils/ # 工具层
│ ├── __init__.py
│ ├── config_loader.py # 配置加载器
│ ├── logger.py # 日志工具
│ ├── notifier.py # 通知工具
│ └── user_cache.py # 用户缓存管理器
└── tests/ # 测试目录
├── __init__.py
└── test_config_loader.py # 配置加载器测试
```
## 核心文件说明
### 1. 主程序文件
#### main.py
- **功能**:原始命令行程序入口
- **用途**:监控文件夹,自动处理图片并写入飞书
- **使用方式**`python main.py`
#### web_app.py
- **功能**Web应用入口
- **用途**提供Web界面和API接口
- **使用方式**`python web_app.py`
#### start_web_app.py
- **功能**Web应用启动器
- **用途**检查环境并启动Web应用
- **使用方式**`python start_web_app.py`
### 2. 配置文件
#### config.yaml
- **功能**:应用配置文件
- **内容**
- AI服务配置API密钥、模型等
- 飞书服务配置应用ID、密钥、表格ID等
- 系统配置(文件夹路径、处理策略等)
- 用户匹配配置(启用状态、缓存路径等)
#### config.example.yaml
- **功能**:配置文件示例
- **用途**:作为配置文件模板
### 3. 服务层
#### services/ai_service.py
- **功能**AI服务
- **主要类**`AIService`
- **主要方法**
- `analyze_image()`:分析图片文件
- `analyze_image_from_bytes()`:分析内存中的图片数据
- `_build_prompt()`构建AI提示词
- `_parse_ai_response()`解析AI响应
#### services/feishu_service.py
- **功能**:飞书服务
- **主要类**`FeishuService`
- **主要方法**
- `add_task()`:添加任务到飞书
- `_match_initiator()`:匹配任务发起人
- `_get_user_list()`:获取飞书用户列表
- `_build_fields()`:构建飞书字段数据
### 4. 工具层
#### utils/user_cache.py
- **功能**:用户缓存管理器
- **主要类**`UserCacheManager`
- **主要方法**
- `match_user_by_name()`:根据名字匹配用户
- `add_recent_contact()`:添加最近联系人
- `get_random_recent_contact()`:随机选择最近联系人
- `update_users()`:更新用户列表
#### utils/config_loader.py
- **功能**:配置加载器
- **主要函数**
- `load_config()`:加载配置文件
- `validate_config()`:验证配置
#### utils/logger.py
- **功能**:日志工具
- **主要函数**
- `setup_logger()`:设置日志记录器
#### utils/notifier.py
- **功能**:通知工具
- **主要函数**
- `send_notification()`:发送桌面通知
### 5. Web界面
#### templates/index.html
- **功能**Web界面模板
- **主要功能**
- 任务添加表单
- 图片上传功能
- 任务列表展示
- 筛选和搜索功能
- 编辑和删除功能
- 通知权限管理
### 6. 测试文件
#### test_priority.py
- **功能**:优先级测试脚本
- **用途**:验证优先级修改是否正确
## 数据流
### 1. 命令行模式main.py
```
监控文件夹 → 检测新图片 → AI分析 → 用户匹配 → 飞书写入 → 后处理
```
### 2. Web应用模式web_app.py
```
用户上传图片 → Web服务器接收 → AI分析 → 用户匹配 → 飞书写入 → 返回结果
```
## 配置说明
### AI服务配置
```yaml
ai:
api_key: "API密钥"
base_url: "API基础URL"
model: "模型名称"
```
### 飞书服务配置
```yaml
feishu:
app_id: "应用ID"
app_secret: "应用密钥"
app_token: "多维表格Token"
table_id: "数据表ID"
```
### 系统配置
```yaml
system:
watch_folder: "监控文件夹路径"
post_process: "文件处理策略(keep/delete/move)"
processed_folder: "已处理文件夹路径"
log_level: "日志级别"
log_file: "日志文件路径"
memory_processing: "是否启用内存处理"
```
### 用户匹配配置
```yaml
system:
user_matching:
enabled: "是否启用用户匹配"
fallback_to_random: "是否启用随机匹配回退"
cache_enabled: "是否启用缓存"
cache_file: "缓存文件路径"
```
## 使用方式
### 1. 命令行模式
```bash
# 安装依赖
pip install -r requirements.txt
# 配置config.yaml
cp config.example.yaml config.yaml
# 编辑config.yaml填入正确的配置
# 启动程序
python main.py
```
### 2. Web应用模式
```bash
# 安装依赖
pip install -r requirements.txt
# 配置config.yaml
cp config.example.yaml config.yaml
# 编辑config.yaml填入正确的配置
# 启动Web应用
python start_web_app.py
# 或者直接启动
python web_app.py
# 访问界面
# 打开浏览器,访问 http://localhost:5000
```
## 优化功能
### 1. 任务发起方识别优化
- AI提示词增强明确指示识别发件人/发送者
- 用户匹配机制,自动匹配飞书用户
- 人工评判机制,重名时提供备选方案
- 最近联系人缓存,提高匹配效率
### 2. 图片处理优化
- 内存处理支持,避免保存图片文件
- 文件处理策略,可配置保留/删除/移动
- 存储优化减少50%存储占用
### 3. 字段处理优化
- 保留部门信息,避免覆盖
- 添加提示信息,便于人工确认
- 任务描述标记,显示待确认/随机匹配状态
### 4. 优先级修改
- 将优先级选项修改为:紧急、较紧急、一般、普通
- 更新AI提示词和验证逻辑
- 更新飞书服务验证逻辑
### 5. BUG修复
- 修复None值检查避免类型错误
- 提高代码健壮性
## 扩展开发
### 添加新功能
1.`services/`目录添加新服务
2.`utils/`目录添加新工具
3.`templates/`目录添加新页面
4.`web_app.py`添加新API接口
### 修改现有功能
1. 修改对应的服务类或工具函数
2. 更新配置文件(如果需要)
3. 更新Web界面如果需要
4. 测试修改后的功能
### 调试技巧
1. 查看`app.log`日志文件
2. 使用浏览器开发者工具调试前端
3. 使用Flask调试模式`debug=True`
4. 查看飞书API响应和错误信息
## 注意事项
1. **配置安全**:不要将配置文件提交到版本控制
2. **API密钥**妥善保管API密钥避免泄露
3. **文件权限**:确保程序有读写相关目录的权限
4. **网络连接**确保网络连接稳定特别是调用AI和飞书API时
5. **资源限制**:注意内存和存储空间使用,特别是处理大图片时
## 总结
Screen2Feishu项目提供了完整的任务管理解决方案包括命令行模式和Web应用模式。通过AI技术自动分析图片和任务描述结合飞书API实现自动化任务管理大大提高了工作效率。