InsuranceBot / tools /full_pipeline.sh
rohitsar567's picture
refactor: KI-050 β€” complete data/ β†’ 40-data/ rename across all Python refs
52c6351
Raw
History Blame Contribute Delete
3.58 kB
#!/bin/bash
# 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) ==="