微信小程序页面迁移校验之前 P5任务处理之前

This commit is contained in:
Neo
2026-03-09 01:19:21 +08:00
parent 263bf96035
commit 6e20987d2f
1112 changed files with 153824 additions and 219694 deletions

View File

@@ -0,0 +1,136 @@
"""百炼 AI 应用连通性测试 — 完整响应输出版本。
将 8 个应用的完整返回内容写入 export/bailian_test_results.txt。
"""
import json
import os
import sys
import time
import urllib.request
import urllib.error
from pathlib import Path
from dotenv import load_dotenv
# 加载 .env
load_dotenv(Path(__file__).resolve().parents[2] / ".env")
BAILIAN_API_KEY = os.environ.get("BAILIAN_API_KEY", "")
if not BAILIAN_API_KEY:
print("❌ BAILIAN_API_KEY 未设置"); sys.exit(1)
API_BASE = "https://dashscope.aliyuncs.com/api/v1/apps"
APP_CONFIGS = [
("BAILIAN_APP_ID_1_CHAT", "应用1-通用对话"),
("BAILIAN_APP_ID_2_FINANCE", "应用2-财务洞察"),
("BAILIAN_APP_ID_3_CLUE", "应用3-客户数据维客线索分析"),
("BAILIAN_APP_ID_4_ANALYSIS", "应用4-关系分析/任务建议"),
("BAILIAN_APP_ID_5_TACTICS", "应用5-话术参考"),
("BAILIAN_APP_ID_6_NOTE", "应用6-备注分析"),
("BAILIAN_APP_ID_7_CUSTOMER", "应用7-客户分析"),
("BAILIAN_APP_ID_8_CONSOLIDATE", "应用8-维客线索整理"),
]
# 简短示例 prompt复用原脚本的首条 prompt 结构)
FIRST_PROMPTS = {
"BAILIAN_APP_ID_1_CHAT": json.dumps({
"page": "finance_dashboard",
"data": {"monthly_revenue": 12580, "revenue_change_pct": 8.3,
"breakdown": {"台费": 6200, "助教服务费": 3100, "商品": 1800, "充值": 1480}},
"user_query": ""
}, ensure_ascii=False),
"BAILIAN_APP_ID_2_FINANCE": json.dumps({
"page": "finance_dashboard",
"data": {"monthly_revenue": 12580, "top_expense": "人工成本 8200元"},
"user_query": "本月利润率怎么样?"
}, ensure_ascii=False),
"BAILIAN_APP_ID_3_CLUE": json.dumps({
"customer": {"name": "张三", "total_visits": 12, "last_visit_days_ago": 13,
"avg_visit_interval_days": 10, "monthly_spend": 580},
"user_query": ""
}, ensure_ascii=False),
"BAILIAN_APP_ID_4_ANALYSIS": json.dumps({
"customer": {"name": "张三", "total_visits": 12, "last_visit_days_ago": 13,
"tags": ["高频", "台费为主"], "recent_trend": "消费频次下降"},
"user_query": ""
}, ensure_ascii=False),
"BAILIAN_APP_ID_5_TACTICS": json.dumps({
"scenario": "客户3天未到店需要召回话术",
"customer": {"name": "张三", "preference": "周末晚间", "favorite_table": "9号台"},
"user_query": ""
}, ensure_ascii=False),
"BAILIAN_APP_ID_6_NOTE": json.dumps({
"notes": ["客户说最近比较忙", "上次来提到想学斯诺克", "朋友推荐来的"],
"user_query": ""
}, ensure_ascii=False),
"BAILIAN_APP_ID_7_CUSTOMER": json.dumps({
"customer": {"name": "张三", "level": "VIP", "total_spend": 15800,
"visit_count": 45, "first_visit": "2025-06-15", "tags": ["高频", "储值用户"]},
"user_query": ""
}, ensure_ascii=False),
"BAILIAN_APP_ID_8_CONSOLIDATE": json.dumps({
"customer": {"name": "张三", "total_visits": 12, "last_visit_days_ago": 13,
"avg_visit_interval_days": 10, "monthly_spend": 580,
"notes": ["最近比较忙", "想学斯诺克"]},
"user_query": ""
}, ensure_ascii=False),
}
def call_app(env_key: str, label: str) -> dict:
app_id = os.environ.get(env_key, "")
if not app_id:
return {"app": label, "status": "SKIP", "text": f"环境变量 {env_key} 未设置"}
prompt = FIRST_PROMPTS.get(env_key, "你好")
url = f"{API_BASE}/{app_id}/completion"
body = json.dumps({"input": {"prompt": prompt}, "parameters": {"has_thoughts": False}}).encode("utf-8")
headers = {"Authorization": f"Bearer {BAILIAN_API_KEY}", "Content-Type": "application/json"}
t0 = time.time()
try:
req = urllib.request.Request(url, data=body, headers=headers, method="POST")
with urllib.request.urlopen(req, timeout=120) as resp:
data = json.loads(resp.read().decode("utf-8"))
elapsed = round(time.time() - t0, 2)
text = data.get("output", {}).get("text", "")
usage = data.get("usage", {})
return {"app": label, "status": "OK", "elapsed": elapsed, "text": text, "usage": usage}
except Exception as e:
elapsed = round(time.time() - t0, 2)
return {"app": label, "status": "ERROR", "elapsed": elapsed, "text": str(e)[:500]}
def main():
output_path = os.environ.get("EXPORT_ROOT")
if not output_path:
raise RuntimeError("EXPORT_ROOT 环境变量未设置")
out_file = Path(output_path) / "bailian_test_results.txt"
out_file.parent.mkdir(parents=True, exist_ok=True)
lines = []
lines.append("=" * 70)
lines.append("百炼 AI 应用连通性测试 — 完整响应")
lines.append(f"时间: {time.strftime('%Y-%m-%d %H:%M:%S')}")
lines.append("=" * 70)
for env_key, label in APP_CONFIGS:
print(f"{label} ...", flush=True)
r = call_app(env_key, label)
icon = "" if r["status"] == "OK" else ""
print(f" {icon} {r['status']} ({r.get('elapsed', '?')}s)")
lines.append(f"\n{'' * 70}")
lines.append(f"{r['app']}{r['status']} ({r.get('elapsed', '?')}s)")
lines.append(f"{'' * 70}")
lines.append(r["text"])
if "usage" in r:
lines.append(f"\n[usage] {json.dumps(r['usage'], ensure_ascii=False)}")
out_file.write_text("\n".join(lines), encoding="utf-8")
print(f"\n✅ 完整结果已写入: {out_file}")
if __name__ == "__main__":
main()