Files
verify-invoice-default/demo_rpa.py
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

95 lines
3.4 KiB
Python
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.
#!/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())