5.4 KiB
5.4 KiB
发票RPA功能使用说明
概述
本功能为verify-invoice-default技能添加了RPA(机器人流程自动化)能力,可以自动从https://sandbox.jc2009.com/industries/campus/smartcampus/app/finance/invoice-precheck网站提取发票信息。
功能特性
- 自动登录:支持用户名密码自动登录
- 页面导航:自动导航到发票预检页面
- 信息提取:提取发票列表和详细信息
- 拟人操作:模拟真实用户操作,避免被检测
- 错误处理:处理登录超时、验证码等异常情况
前置条件
- 浏览器配置目录:需要通过account-manager获取
profile_dir - Python环境:需要Python 3.10+环境
- 依赖包:需要
jiangchang-platform-kit>=1.2.11
使用方法
1. 获取浏览器配置目录
首先,需要通过account-manager获取浏览器配置目录:
# 登录account-manager
python account-manager/scripts/main.py ensure-web --platform sandbox-jc2009
# 或者使用简化的命令
python account-manager/scripts/main.py pick-web --platform sandbox-jc2009 --ensure
2. 测试RPA连接
在使用前,建议先测试连接和登录功能:
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. 提取发票信息
基本提取(列表模式)
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
无头模式(不推荐生产使用)
python scripts/main.py extract-invoices \
--username "15527406659" \
--password "qwer1234" \
--profile-dir "从account-manager获取的profile_dir" \
--headless
命令参数说明
extract-invoices 命令
| 参数 | 必填 | 说明 |
|---|---|---|
--username |
是 | 网站用户名 |
--password |
是 | 网站密码 |
--profile-dir |
是 | 浏览器配置目录 |
--headless |
否 | 无头模式(生产不建议) |
--detail-mode |
否 | 提取详细信息 |
test-rpa-connection 命令
| 参数 | 必填 | 说明 |
|---|---|---|
--username |
是 | 网站用户名 |
--password |
是 | 网站密码 |
--profile-dir |
是 | 浏览器配置目录 |
输出格式
成功输出
{
"total_count": 10,
"invoices": [
{
"row_index": 0,
"row_text": "发票信息...",
"invoice_number": "12345678",
"amount": "100.00"
}
],
"extraction_complete": true
}
失败输出
{
"success": false,
"error": "错误信息",
"stage": "错误发生阶段"
}
常见问题
1. 浏览器启动失败
错误信息:ERROR:MISSING_BROWSER 浏览器启动失败
解决方案:
- 确保已安装Chrome或Edge浏览器
- 检查
profile_dir是否有效 - 确保没有其他浏览器进程占用配置目录
2. 登录失败
错误信息:ERROR:LOGIN_TIMEOUT 登录失败或超时
解决方案:
- 检查用户名和密码是否正确
- 确保网络连接正常
- 检查是否有验证码需要人工处理
3. 页面加载失败
错误信息:导航到发票页面失败
解决方案:
- 检查网络连接
- 确保已登录
- 检查目标URL是否正确
技术实现
架构设计
invoice_rpa.py # RPA主流程协调
├── browser_session.py # 浏览器会话管理
├── login_handler.py # 登录处理
└── invoice_extractor.py # 发票信息提取
核心流程
- 启动浏览器:使用Playwright启动持久化浏览器上下文
- 登录网站:自动输入用户名密码,处理验证码
- 导航页面:跳转到发票预检页面
- 提取信息:解析页面DOM,提取发票数据
- 返回结果:格式化输出提取的发票信息
安全特性
- 拟人操作:模拟真实用户操作节奏
- 错误处理:完善的异常捕获和错误报告
- 资源清理:确保浏览器正确关闭
- 日志记录:详细的操作日志
开发说明
添加新的提取字段
- 在
invoice_extractor.py的INVOICE_SELECTORS中添加选择器 - 在
_extract_invoice_from_row函数中添加提取逻辑 - 更新
format_invoice_data函数的输出格式
修改登录流程
- 在
login_handler.py的LOGIN_SELECTORS中更新选择器 - 修改
_try_auto_login函数的登录逻辑 - 更新
_is_logged_in函数的检测逻辑
添加新的RPA功能
- 在
service/rpa/目录下创建新模块 - 在
__init__.py中导出新功能 - 在
task_service.py中添加对应的命令函数 - 在
cli/app.py中添加命令行参数
注意事项
- 合规性:仅用于授权范围内的正常界面操作
- 频率控制:避免频繁请求,防止被网站限制
- 人工兜底:验证码、人脸等必须等待人工完成
- 数据安全:不要在日志中暴露敏感信息
- 资源管理:确保浏览器会话正确关闭
更新日志
v1.0.0 (2026-09-14)
- 初始版本
- 实现基本登录和页面导航
- 实现发票信息提取
- 集成到现有CLI系统