Spaces:
Sleeping
Sleeping
| # Full post-extraction pipeline: | |
| # 1. wait for extraction PID | |
| # 2. run info_source_map.py (URL/content audit) | |
| # 3. generate 40-data/policy_facts/*.json from rag/extracted/*.json | |
| # 4. build_kb_mirror.py (regenerate kb/policies/*.md) | |
| # 5. sync rag/extracted + 40-data/policy_facts to dataset | |
| # 6. re-ingest Chroma over the full 190-PDF corpus | |
| # 7. sync rag/vectors to dataset | |
| # 8. factory-restart HF Space + wait for RUNNING | |
| set -uo pipefail | |
| cd "$(dirname "$0")/.." | |
| EXTRACT_PID="${1:-8392}" | |
| LOG="logs/full_pipeline_$(date +%Y%m%d_%H%M%S).log" | |
| exec > "$LOG" 2>&1 | |
| echo "=== FULL PIPELINE START $(date) ===" | |
| echo "extract pid: $EXTRACT_PID" | |
| echo "" | |
| echo "[1/8] waiting for extraction ..." | |
| while ps -p "$EXTRACT_PID" > /dev/null 2>&1; do sleep 30; done | |
| JSON_COUNT=$(ls rag/extracted/*.json 2>/dev/null | grep -v _raw | grep -v .old | grep -v _backup | wc -l | tr -d ' ') | |
| echo "[1/8] done. valid JSONs: $JSON_COUNT" | |
| echo "" | |
| echo "[2/8] info source map (URL+content audit on every claim) ..." | |
| .venv/bin/python tools/info_source_map.py 2>&1 | tail -20 | |
| echo "" | |
| echo "[3/8] generate marketplace cards from extractions ..." | |
| .venv/bin/python tools/generate_policy_facts.py | |
| echo "" | |
| echo "[4/8] build kb mirror (regenerate kb/policies/*.md + INDEX) ..." | |
| .venv/bin/python tools/build_kb_mirror.py 2>&1 | tail -20 | |
| echo "" | |
| echo "[5/8] sync extracted + policy_facts to dataset ..." | |
| .venv/bin/python -c " | |
| import os | |
| from dotenv import load_dotenv | |
| from huggingface_hub import HfApi | |
| load_dotenv('.env') | |
| api = HfApi(token=os.environ['HF_TOKEN']) | |
| for folder, path_in_repo in [('rag/extracted','rag/extracted'),('40-data/policy_facts','40-data/policy_facts'),('rag/corpus','rag/corpus')]: | |
| api.upload_folder(folder_path=folder, path_in_repo=path_in_repo, | |
| repo_id='rohitsar567/insurance-bot-data', repo_type='dataset', | |
| commit_message=f'sync {folder} post-extraction (190 PDFs, 19 insurers)', | |
| ignore_patterns=['*._raw.txt','*.old','*_backup_old_prompt/**','_playwright_results.md','*.tmp']) | |
| print(f' synced {folder}') | |
| " | |
| echo "" | |
| echo "[6/8] re-ingest Chroma over 190-PDF corpus ..." | |
| .venv/bin/python -m rag.ingest 2>&1 | tail -10 | |
| echo "" | |
| echo "[7/8] sync rag/vectors to dataset ..." | |
| .venv/bin/python -c " | |
| import os | |
| from dotenv import load_dotenv | |
| from huggingface_hub import HfApi | |
| load_dotenv('.env') | |
| api = HfApi(token=os.environ['HF_TOKEN']) | |
| api.upload_folder(folder_path='rag/vectors', path_in_repo='rag/vectors', | |
| repo_id='rohitsar567/insurance-bot-data', repo_type='dataset', | |
| commit_message='vectors re-ingested over 190-PDF corpus, 19 insurers') | |
| print(' vectors synced') | |
| " | |
| echo "" | |
| echo "[8/8] HF Space factory_reboot ..." | |
| .venv/bin/python -c " | |
| import os, time | |
| from dotenv import load_dotenv | |
| from huggingface_hub import HfApi | |
| load_dotenv('.env') | |
| api = HfApi(token=os.environ['HF_TOKEN']) | |
| api.restart_space('rohitsar567/InsuranceBot', factory_reboot=True) | |
| print(' factory_reboot fired') | |
| time.sleep(15) | |
| rt = api.get_space_runtime('rohitsar567/InsuranceBot') | |
| print(f' stage: {rt.stage}') | |
| # Wait for RUNNING | |
| import time | |
| deadline = time.time() + 25*60 | |
| prev = None | |
| while time.time() < deadline: | |
| rt = api.get_space_runtime('rohitsar567/InsuranceBot') | |
| if rt.stage != prev: | |
| print(f' [{time.strftime(\"%H:%M:%S\")}] stage={rt.stage}') | |
| prev = rt.stage | |
| if rt.stage == 'RUNNING': | |
| print(' Space LIVE'); break | |
| if rt.stage in ('RUNTIME_ERROR','BUILD_ERROR','CONFIG_ERROR'): | |
| print(f' Space failed: {rt.stage}'); break | |
| time.sleep(30) | |
| " | |
| echo "" | |
| echo "=== FULL PIPELINE DONE $(date) ===" | |