File size: 1,842 Bytes
9df97a2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/usr/bin/env python3
import os
import json
import requests

BASE = os.getenv("API_BASE_URL", "http://127.0.0.1:8000")
EMAIL = os.getenv("RECRUITER_EMAIL", "recruiter@test.com")
PASSWORD = os.getenv("RECRUITER_PASSWORD", "password123")

# Login recruiter
r=requests.post(BASE+'/api/auth/login', json={'email': EMAIL, 'password': PASSWORD}, timeout=15)
if r.status_code!=200:
    print('Login failed', r.status_code, r.text)
    raise SystemExit(1)
token=r.json().get('access_token')
headers={'Authorization':f'Bearer {token}','Content-Type':'application/json'}

# Create criteria
payload={'title':'Senior Python Developer','description':'Looking for backend engineer with FastAPI and ML experience','required_skills':[{'name':'Python','weight':80},{'name':'FastAPI','weight':70},{'name':'Machine Learning','weight':60}]}
r2=requests.post(BASE+'/api/criteria', headers=headers, json=payload, timeout=30)
print('create criteria', r2.status_code)
print(r2.text[:1000])

if r2.status_code==201:
    cid=r2.json().get('id')
    print('criteria id', cid)
    # generate and match
    r3=requests.post(BASE+'/api/matching/generate-and-match', headers=headers, json={'job_title':'Senior Python Developer','description':'Looking for backend engineer with FastAPI and ML experience'}, timeout=60)
    print('generate-and-match', r3.status_code)
    try:
        print(json.dumps(r3.json(), indent=2)[:2000])
    except Exception:
        print(r3.text[:2000])
    # match explanation
    r4=requests.post(BASE+'/api/matching/match-explanation', headers=headers, json={'candidate_id':1,'job_criteria_id':cid}, timeout=30)
    print('match-explanation', r4.status_code)
    try:
        print(json.dumps(r4.json(), indent=2)[:2000])
    except Exception:
        print(r4.text[:2000])
else:
    print('Criteria creation failed; status', r2.status_code)