""" 临时脚本:为本地 DEV 环境填充测试数据 1. 创建 agents 表记录(dev-agent-001 主责 + dev-agent-002 协作) 2. 在 employees 表中插入带部门信息的测试员工(使搜索和组织架构树有数据) 运行后可删除。 """ import asyncio import sqlite3 import uuid from datetime import datetime DB_PATH = r"D:\资料\03-项目开发\wecom_it_smart_desk\backend\smartdesk.db" # ============================================================================ # 测试员工数据(department 字段直接存部门名,非 JSON ID 数组,仅 DEV_MODE 使用) # ============================================================================ TEST_EMPLOYEES = [ # (employee_id, name, department, corp_id) ("dev-user-001", "张三", "研发一部", "dev_corp"), ("dev-user-002", "王五", "人事部", "dev_corp"), ("dev-user-003", "赵六", "研发一部", "dev_corp"), ("dev-user-004", "钱七", "研发二部", "dev_corp"), ("dev-user-005", "孙八", "研发二部", "dev_corp"), ("dev-user-006", "周九", "产品部", "dev_corp"), ("dev-user-007", "吴十", "产品部", "dev_corp"), ("dev-user-008", "郑十一", "测试部", "dev_corp"), ("dev-user-009", "王芳", "测试部", "dev_corp"), ("dev-user-010", "李明", "运维部", "dev_corp"), ("dev-user-011", "陈静", "运维部", "dev_corp"), ("dev-user-012", "刘洋", "财务部", "dev_corp"), ("dev-agent-002", "陈静(协作坐席)", "IT支持组", "dev_corp"), ] # ============================================================================ # Agent 记录(使 Mock 登录的 token 能通过 get_current_agent 认证) # ============================================================================ TEST_AGENTS = [ ("dev-agent-001", "李四(IT坐席)", "online", "agent"), ("dev-agent-002", "陈静(协作坐席)", "online", "agent"), ] def seed(): conn = sqlite3.connect(DB_PATH) c = conn.cursor() # --- 1. 插入/更新 agents 表 --- print("=== 写入 agents 表 ===") for user_id, name, status, role in TEST_AGENTS: # 先检查是否已存在 existing = c.execute("SELECT id FROM agents WHERE user_id = ?", (user_id,)).fetchone() if existing: c.execute( "UPDATE agents SET name=?, status=?, role=? WHERE user_id=?", (name, status, role, user_id), ) print(f" 更新: {user_id} ({name})") else: agent_id = str(uuid.uuid4()) c.execute( """INSERT INTO agents (id, user_id, name, status, current_load, max_load, role, skill_tags, created_at, updated_at) VALUES (?, ?, ?, ?, 0, 5, ?, '[]', ?, ?)""", (agent_id, user_id, name, status, role, datetime.now(), datetime.now()), ) print(f" 新增: {user_id} ({name})") # --- 2. 插入/更新 employees 表 --- print("\n=== 写入 employees 表 ===") for emp_id, name, dept, corp_id in TEST_EMPLOYEES: existing = c.execute( "SELECT id FROM employees WHERE corp_id=? AND employee_id=?", (corp_id, emp_id), ).fetchone() if existing: c.execute( "UPDATE employees SET name=?, department=? WHERE corp_id=? AND employee_id=?", (name, dept, corp_id, emp_id), ) print(f" 更新: {emp_id} ({name}) — {dept}") else: emp_uuid = str(uuid.uuid4()) c.execute( """INSERT INTO employees (id, corp_id, employee_id, name, department, position, mobile, email, avatar, status, it_level, it_level_source, notes, created_at, updated_at) VALUES (?, ?, ?, ?, ?, '', '', '', '', 1, 'silver', 'system', '{}', ?, ?)""", (emp_uuid, corp_id, emp_id, name, dept, datetime.now(), datetime.now()), ) print(f" 新增: {emp_id} ({name}) — {dept}") conn.commit() conn.close() print("\n✅ 测试数据写入完成!") print(f" agents 表: {len(TEST_AGENTS)} 条") print(f" employees 表: {len(TEST_EMPLOYEES)} 条") if __name__ == "__main__": seed()