File size: 1,647 Bytes
14fdc5e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
44
45
46
47
48
49
50
51
52
53
54
from __future__ import annotations

import argparse
import sys
from pathlib import Path

BACKEND_ROOT = Path(__file__).resolve().parents[1]
if str(BACKEND_ROOT) not in sys.path:
    sys.path.insert(0, str(BACKEND_ROOT))

from core.db import init_db
from services.reference_data_service import ingest_reference_resumes


def main() -> None:
    parser = argparse.ArgumentParser(description="Bulk ingest sample resumes into local database")
    parser.add_argument("--limit", type=int, default=20, help="Maximum number of PDF files to ingest")
    parser.add_argument(
        "--source-dir",
        type=str,
        default=None,
        help="Optional source directory containing resume PDFs",
    )
    parser.add_argument(
        "--force-reingest",
        action="store_true",
        help="Reprocess files even if matching candidate IDs already exist",
    )
    args = parser.parse_args()

    init_db()
    summary = ingest_reference_resumes(
        limit=max(1, min(args.limit, 500)),
        source_dir=args.source_dir,
        force_reingest=args.force_reingest,
    )

    print("Reference resume ingestion summary")
    print(f"source_dir: {summary.source_dir}")
    print(f"requested_limit: {summary.requested_limit}")
    print(f"files_seen: {summary.files_seen}")
    print(f"ingested: {summary.ingested}")
    print(f"skipped: {summary.skipped}")
    print(f"failed: {summary.failed}")

    if summary.failures:
        print("failures:")
        for item in summary.failures:
            print(f" - {item['file']}: {item['error']}")


if __name__ == "__main__":
    main()