101 lines
3.2 KiB
Python
101 lines
3.2 KiB
Python
"""
|
|
简化版 Mock 数据插入脚本 - 只插入2条记录
|
|
"""
|
|
import asyncio
|
|
import httpx
|
|
import json
|
|
import uuid
|
|
import random
|
|
|
|
COZE_API_BASE = "https://api.coze.cn"
|
|
COZE_PAT_TOKEN = "pat_nd1wU47WyPS9GCIyJ1clnH8h1WOQXGrYELX8w73TnSZaYbFdYD4swIhzcETBUbfT"
|
|
WORKFLOW_ID = "7597376294612107318"
|
|
|
|
# 模拟候选人
|
|
CANDIDATES = [
|
|
{"name": "张小美", "score": 85, "status": "completed", "risk": "low"},
|
|
{"name": "李明辉", "score": 72, "status": "completed", "risk": "medium"},
|
|
]
|
|
|
|
# 简化对话
|
|
DIALOGUES = [
|
|
{"stage": "专业技能", "q": "请介绍您的护肤专业知识", "a": "我在医美行业有3年经验..."},
|
|
{"stage": "沟通能力", "q": "遇到客户投诉如何处理", "a": "首先我会认真倾听客户的问题..."},
|
|
]
|
|
|
|
|
|
async def execute_sql(sql: str, table: str) -> dict:
|
|
headers = {
|
|
"Authorization": f"Bearer {COZE_PAT_TOKEN}",
|
|
"Content-Type": "application/json"
|
|
}
|
|
payload = {
|
|
"workflow_id": WORKFLOW_ID,
|
|
"parameters": {"input": json.dumps({"table": table, "sql": sql}, ensure_ascii=False)}
|
|
}
|
|
async with httpx.AsyncClient(timeout=30.0) as client:
|
|
r = await client.post(f"{COZE_API_BASE}/v1/workflow/run", headers=headers, json=payload)
|
|
return r.json()
|
|
|
|
|
|
async def main():
|
|
print("=" * 50)
|
|
print("插入 Mock 数据")
|
|
print("=" * 50)
|
|
|
|
for idx, c in enumerate(CANDIDATES, 1):
|
|
session_id = f"MOCK_{uuid.uuid4().hex[:8].upper()}"
|
|
|
|
# 生成评估报告
|
|
report = f"""## 面试评估报告
|
|
|
|
**候选人**: {c['name']}
|
|
**综合评分**: {c['score']}/100
|
|
|
|
### 各维度评分
|
|
- 专业技能: {random.randint(70, 95)}分
|
|
- 沟通能力: {random.randint(70, 95)}分
|
|
- 服务意识: {random.randint(70, 95)}分
|
|
- 学习能力: {random.randint(70, 95)}分
|
|
|
|
### 风险评估
|
|
风险等级: {c['risk']}
|
|
|
|
### 总结
|
|
该候选人整体表现{"良好" if c['score'] >= 80 else "一般"},建议{"录用" if c['score'] >= 75 else "观察"}。
|
|
"""
|
|
|
|
# 1. 插入评估记录
|
|
sql1 = f"""INSERT INTO ci_interview_assessments (
|
|
session_id, candidate_name, assessment_report, current_stage
|
|
) VALUES (
|
|
'{session_id}', '{c["name"]}', '{report.replace("'", "''")}', '{c["status"]}'
|
|
)"""
|
|
|
|
print(f"\n📝 插入候选人 {idx}: {c['name']}")
|
|
result = await execute_sql(sql1, "assessments")
|
|
print(f" 评估记录: code={result.get('code')}")
|
|
|
|
# 2. 插入对话记录
|
|
for j, d in enumerate(DIALOGUES, 1):
|
|
log_id = f"LOG_{session_id}_{j:02d}"
|
|
sql2 = f"""INSERT INTO ci_interview_logs (
|
|
log_id, session_id, stage, round, ai_question, user_answer, log_type
|
|
) VALUES (
|
|
'{log_id}', '{session_id}', '{d["stage"]}', '{j}',
|
|
'{d["q"].replace("'", "''")}', '{d["a"].replace("'", "''")}', 'interview'
|
|
)"""
|
|
|
|
result = await execute_sql(sql2, "logs")
|
|
print(f" 对话{j}: code={result.get('code')}")
|
|
|
|
await asyncio.sleep(0.5)
|
|
|
|
print("\n" + "=" * 50)
|
|
print("✅ 完成!")
|
|
print("=" * 50)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|