chore: auto release commit (2026-09-14 15:11:41)
All checks were successful
技能自动化发布 / release (push) Successful in 9s

This commit is contained in:
chenfuqiang
2026-09-14 15:11:41 +08:00
parent ce96693564
commit c5103e2650
17 changed files with 2626 additions and 2 deletions

212
RPA_README.md Normal file
View File

@@ -0,0 +1,212 @@
# 发票RPA功能
## 简介
本功能为verify-invoice-default技能添加了RPA(机器人流程自动化)能力,可以自动从网站提取发票信息,用于后续的票据合规预审。
## 功能特性
- 🤖 **自动登录**:支持用户名密码自动登录
- 🌐 **页面导航**:自动导航到发票预检页面
- 📊 **信息提取**:提取发票列表和详细信息
- 🎭 **拟人操作**:模拟真实用户操作,避免被检测
- ⚠️ **错误处理**:处理登录超时、验证码等异常情况
## 快速开始
### 1. 获取浏览器配置目录
```bash
# 确保已安装account-manager
cd account-manager
python scripts/main.py ensure-web --platform sandbox-jc2009
```
### 2. 测试连接
```bash
cd verify-invoice-default/verify-invoice-default
python scripts/main.py test-rpa-connection \
--username "15527406659" \
--password "qwer1234" \
--profile-dir "从account-manager获取的profile_dir"
```
### 3. 提取发票信息
```bash
# 基本提取
python scripts/main.py extract-invoices \
--username "15527406659" \
--password "qwer1234" \
--profile-dir "从account-manager获取的profile_dir"
# 详细信息提取
python scripts/main.py extract-invoices \
--username "15527406659" \
--password "qwer1234" \
--profile-dir "从account-manager获取的profile_dir" \
--detail-mode
```
## 命令行参数
### extract-invoices
| 参数 | 必填 | 说明 |
|------|------|------|
| `--username` | 是 | 网站用户名 |
| `--password` | 是 | 网站密码 |
| `--profile-dir` | 是 | 浏览器配置目录 |
| `--headless` | 否 | 无头模式(生产不建议) |
| `--detail-mode` | 否 | 提取详细信息 |
### test-rpa-connection
| 参数 | 必填 | 说明 |
|------|------|------|
| `--username` | 是 | 网站用户名 |
| `--password` | 是 | 网站密码 |
| `--profile-dir` | 是 | 浏览器配置目录 |
## 输出格式
### 成功输出
```json
{
"total_count": 10,
"invoices": [
{
"row_index": 0,
"row_text": "发票信息...",
"invoice_number": "12345678",
"amount": "100.00"
}
],
"extraction_complete": true
}
```
### 失败输出
```json
{
"success": false,
"error": "错误信息",
"stage": "错误发生阶段"
}
```
## 文件结构
```
verify-invoice-default/verify-invoice-default/
├── scripts/
│ ├── service/
│ │ ├── rpa/
│ │ │ ├── __init__.py # RPA模块初始化
│ │ │ ├── browser_session.py # 浏览器会话管理
│ │ │ ├── login_handler.py # 登录处理
│ │ │ ├── invoice_extractor.py # 发票信息提取
│ │ │ └── invoice_rpa.py # RPA主流程
│ │ └── rpa_invoice_service.py # RPA数据服务
│ ├── db/
│ │ ├── connection.py # 数据库连接
│ │ └── rpa_invoice_schema.py # RPA数据表结构
│ └── cli/
│ └── app.py # CLI入口(已更新)
├── test_rpa.py # 测试脚本
├── demo_rpa.py # 演示脚本
├── RPA_README.md # 本文件
├── RPA_USAGE.md # 详细使用说明
└── PLATFORM_USAGE.md # 平台内使用指南
```
## 常见问题
### 1. 浏览器启动失败
**错误**:`ERROR:MISSING_BROWSER 浏览器启动失败`
**解决**:
- 确保已安装Chrome或Edge浏览器
- 检查`profile_dir`是否有效
- 确保没有其他浏览器进程占用配置目录
### 2. 登录失败
**错误**:`ERROR:LOGIN_TIMEOUT 登录失败或超时`
**解决**:
- 检查用户名和密码是否正确
- 确保网络连接正常
- 检查是否有验证码需要人工处理
### 3. 页面加载失败
**错误**:`导航到发票页面失败`
**解决**:
- 检查网络连接
- 确保已登录
- 检查目标URL是否正确
## 技术细节
### 架构设计
RPA功能采用分层架构设计:
1. **浏览器会话层**:管理浏览器的启动、配置和关闭
2. **登录处理层**:处理网站登录流程
3. **信息提取层**:从页面提取发票信息
4. **主流程层**:协调各层完成RPA任务
### 安全考虑
1. **合规性**:仅用于授权范围内的正常界面操作
2. **频率控制**:避免频繁请求,防止被网站限制
3. **人工兜底**:验证码、人脸等必须等待人工完成
4. **数据安全**:不要在日志中暴露敏感信息
### 扩展性
RPA功能设计为可扩展的:
1. **支持新网站**:只需修改URL和选择器
2. **支持新字段**:在提取器中添加新的选择器
3. **支持新操作**:可以添加点击、填写等操作
## 开发指南
### 添加新的提取字段
1. 在`invoice_extractor.py`的`INVOICE_SELECTORS`中添加选择器
2. 在`_extract_invoice_from_row`函数中添加提取逻辑
3. 更新`format_invoice_data`函数的输出格式
### 修改登录流程
1. 在`login_handler.py`的`LOGIN_SELECTORS`中更新选择器
2. 修改`_try_auto_login`函数的登录逻辑
3. 更新`_is_logged_in`函数的检测逻辑
### 添加新的RPA功能
1. 在`service/rpa/`目录下创建新模块
2. 在`__init__.py`中导出新功能
3. 在`task_service.py`中添加对应的命令函数
4. 在`cli/app.py`中添加命令行参数
## 更新日志
### v1.0.0 (2026-09-14)
- 初始版本
- 实现基本登录和页面导航
- 实现发票信息提取
- 集成到现有CLI系统
## 许可证
本项目遵循与verify-invoice-default技能相同的许可证。