chore: auto release commit (2026-09-14 15:11:41)
All checks were successful
技能自动化发布 / release (push) Successful in 9s
All checks were successful
技能自动化发布 / release (push) Successful in 9s
This commit is contained in:
95
demo_rpa.py
Normal file
95
demo_rpa.py
Normal file
@@ -0,0 +1,95 @@
|
||||
#!/usr/bin/env python3
|
||||
"""发票RPA功能演示脚本。
|
||||
|
||||
使用方法:
|
||||
1. 首先获取浏览器配置目录:
|
||||
python account-manager/scripts/main.py ensure-web --platform sandbox-jc2009
|
||||
|
||||
2. 运行演示:
|
||||
python demo_rpa.py --profile-dir "从account-manager获取的profile_dir"
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import asyncio
|
||||
import sys
|
||||
import os
|
||||
|
||||
# 添加scripts目录到Python路径
|
||||
scripts_dir = os.path.join(os.path.dirname(__file__), "scripts")
|
||||
if scripts_dir not in sys.path:
|
||||
sys.path.insert(0, scripts_dir)
|
||||
|
||||
from service.rpa import run_invoice_rpa
|
||||
|
||||
|
||||
async def main():
|
||||
"""主函数。"""
|
||||
parser = argparse.ArgumentParser(description="发票RPA功能演示")
|
||||
parser.add_argument("--profile-dir", required=True, help="浏览器配置目录")
|
||||
parser.add_argument("--username", default="15527406659", help="用户名")
|
||||
parser.add_argument("--password", default="qwer1234", help="密码")
|
||||
parser.add_argument("--headless", action="store_true", help="无头模式")
|
||||
parser.add_argument("--detail", action="store_true", help="提取详细信息")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
print("=" * 60)
|
||||
print("发票RPA功能演示")
|
||||
print("=" * 60)
|
||||
print(f"目标网站: https://sandbox.jc2009.com/industries/campus/smartcampus/app/finance/invoice-precheck")
|
||||
print(f"用户名: {args.username[:3]}***")
|
||||
print(f"浏览器配置: {args.profile_dir}")
|
||||
print(f"模式: {'无头' if args.headless else '有头'}")
|
||||
print(f"提取模式: {'详细' if args.detail else '列表'}")
|
||||
print("=" * 60)
|
||||
|
||||
try:
|
||||
print("\n正在启动浏览器并登录...")
|
||||
result = await run_invoice_rpa(
|
||||
username=args.username,
|
||||
password=args.password,
|
||||
profile_dir=args.profile_dir,
|
||||
headless=args.headless,
|
||||
detail_mode=args.detail,
|
||||
)
|
||||
|
||||
if result.success:
|
||||
print("\n✅ 发票信息提取成功!")
|
||||
print(f"提取到 {result.data.get('total_count', 0)} 张发票信息")
|
||||
|
||||
# 显示前3条发票信息
|
||||
invoices = result.data.get('invoices', [])
|
||||
if invoices:
|
||||
print("\n前3条发票信息:")
|
||||
for i, invoice in enumerate(invoices[:3]):
|
||||
print(f"\n发票 {i+1}:")
|
||||
print(f" 行文本: {invoice.get('row_text', 'N/A')[:100]}...")
|
||||
if 'invoice_number' in invoice:
|
||||
print(f" 发票号码: {invoice['invoice_number']}")
|
||||
if 'amount' in invoice:
|
||||
print(f" 金额: {invoice['amount']}")
|
||||
|
||||
# 保存完整结果到文件
|
||||
output_file = "invoice_extraction_result.json"
|
||||
import json
|
||||
with open(output_file, 'w', encoding='utf-8') as f:
|
||||
json.dump(result.data, f, ensure_ascii=False, indent=2)
|
||||
print(f"\n完整结果已保存到: {output_file}")
|
||||
|
||||
else:
|
||||
print(f"\n❌ 发票信息提取失败!")
|
||||
print(f"错误信息: {result.error}")
|
||||
print(f"错误阶段: {result.stage}")
|
||||
|
||||
except Exception as e:
|
||||
print(f"\n❌ 运行异常: {str(e)}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("演示完成")
|
||||
print("=" * 60)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user