Files
verify-invoice-default/RPA_README.md
chenfuqiang c5103e2650
All checks were successful
技能自动化发布 / release (push) Successful in 9s
chore: auto release commit (2026-09-14 15:11:41)
2026-09-14 15:11:41 +08:00

212 lines
5.5 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.
# 发票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技能相同的许可证。