288 lines
8.2 KiB
Markdown
288 lines
8.2 KiB
Markdown
# 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实现自动化任务管理,大大提高了工作效率。 |