| import os |
|
|
| os.environ.setdefault("DATABASE_URL", "sqlite:///./ai_talent_finder.db") |
| os.environ.setdefault("USE_AI_PROFILE_GENERATOR", "false") |
|
|
| from fastapi.testclient import TestClient |
| from app.main import app |
| from ai_module.nlp.profile_generator import ProfileGenerator |
| from ai_module.matching.semantic_matcher import SemanticSkillMatcher |
| from ai_module.nlp.enhanced_skill_extractor import EnhancedSkillExtractor |
|
|
|
|
| def main() -> None: |
| client = TestClient(app) |
|
|
| r = client.get("/health") |
| print("health", r.status_code, r.json()) |
|
|
| r = client.post( |
| "/api/matching/generate-profile", |
| json={ |
| "job_title": "Senior Python Developer", |
| "description": "Senior Python FastAPI engineer, 5 years experience, bachelor degree, english and french.", |
| }, |
| ) |
| print("generate_profile", r.status_code, sorted(r.json().keys())) |
|
|
| r = client.post( |
| "/api/matching/generate-and-match", |
| json={ |
| "job_title": "Data Engineer", |
| "description": "Need Python, SQL, ETL and cloud skills.", |
| }, |
| ) |
| body = r.json() |
| print("generate_and_match", r.status_code, "ideal_profile" in body, isinstance(body.get("matches"), list)) |
|
|
| p = ProfileGenerator.generate_from_text("Python lead with 6 years and master degree, english language") |
| print("profile_ok", isinstance(p, dict), len(p.get("ideal_skills", []))) |
|
|
| m = SemanticSkillMatcher.match_candidate_skills( |
| ["Python", "FastAPI", "Docker"], |
| [{"name": "Python", "weight": 100}, {"name": "Django", "weight": 70}], |
| ) |
| print("semantic_ok", round(float(m.get("score", 0)), 2), m.get("total_matches")) |
|
|
| ex = EnhancedSkillExtractor(load_ner=False) |
| sk = ex.extract_skills_hybrid("Python FastAPI Docker Kubernetes communication leadership English") |
| print("skill_extractor_ok", len(sk), sk[0]["name"] if sk else "none") |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|