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

95
demo_rpa.py Normal file
View 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())