"""添加招聘者账号工具 Usage: uv run python add_recruiter.py --name "张三" --token "your_wt_token" uv run python add_recruiter.py --name "李四" --token "your_wt_token" --source boss uv run python add_recruiter.py --list """ import sys import argparse from pathlib import Path # 添加源码路径 src_path = Path(__file__).parent / "src" / "main" / "python" if str(src_path) not in sys.path: sys.path.insert(0, str(src_path)) from cn.yinlihupo.ylhp_hr_2_0.domain.candidate import CandidateSource from cn.yinlihupo.ylhp_hr_2_0.domain.recruiter import Recruiter, RecruiterStatus from cn.yinlihupo.ylhp_hr_2_0.mapper.recruiter_mapper import RecruiterMapper from cn.yinlihupo.ylhp_hr_2_0.service.recruiter_service import RecruiterService from cn.yinlihupo.ylhp_hr_2_0.config.settings import get_settings def main(): parser = argparse.ArgumentParser(description="招聘者账号管理工具") parser.add_argument("--name", "-n", help="招聘者名称/标识") parser.add_argument("--token", "-t", help="WT Token") parser.add_argument("--source", "-s", default="boss", help="平台来源 (默认: boss)") parser.add_argument("--list", "-l", action="store_true", help="列出所有账号") parser.add_argument("--deactivate", "-d", help="停用指定ID的账号") parser.add_argument("--activate", "-a", help="启用指定ID的账号") parser.add_argument("--delete", help="删除指定ID的账号") args = parser.parse_args() # 初始化服务 settings = get_settings() print(f"使用数据库: {settings.db_url}") mapper = RecruiterMapper(db_url=settings.db_url) service = RecruiterService(mapper=mapper) # 列出所有账号 if args.list: recruiters = service.list_recruiters() print("\n招聘者账号列表:") print("-" * 80) print(f"{'ID':<36} {'名称':<15} {'平台':<10} {'状态':<10} {'最后使用':<20}") print("-" * 80) for r in recruiters: last_used = r.last_used_at.strftime("%Y-%m-%d %H:%M") if r.last_used_at else "从未" print(f"{r.id:<36} {r.name:<15} {r.source.value:<10} {r.status.value:<10} {last_used:<20}") print("-" * 80) print(f"共 {len(recruiters)} 个账号") return # 停用账号 if args.deactivate: if service.deactivate_recruiter(args.deactivate): print(f"账号 {args.deactivate} 已停用") else: print(f"停用失败,账号不存在") return # 启用账号 if args.activate: if service.activate_recruiter(args.activate): print(f"账号 {args.activate} 已启用") else: print(f"启用失败,账号不存在") return # 删除账号 if args.delete: if service.delete_recruiter(args.delete): print(f"账号 {args.delete} 已删除") else: print(f"删除失败,账号不存在") return # 添加新账号 if args.name and args.token: try: source = CandidateSource(args.source.lower()) except ValueError: print(f"错误: 不支持的平台 '{args.source}',支持的平台: boss") return recruiter = service.add_recruiter( name=args.name, source=source, wt_token=args.token ) print(f"\n招聘者账号添加成功!") print(f" ID: {recruiter.id}") print(f" 名称: {recruiter.name}") print(f" 平台: {recruiter.source.value}") print(f" 状态: {recruiter.status.value}") return # 如果没有参数,显示帮助 parser.print_help() if __name__ == "__main__": main()