InsuranceBot / tmp_count_fields.py
rohitsar567's picture
Deploy: Stack A (NIM brain + Maverick judge + Sarvam voice). D-019.
13779e8 verified
Raw
History Blame
2.24 kB
#!/usr/bin/env python3
"""Validate batch 4 JSONs and count populated fields."""
import json
import os
BASE = "/Users/rohitsar/Documents/Personal/AI Work/Insurance Sales Bot/rag/extracted"
BATCH = [
"hdfc-ergo__total-health-plan__wordings",
"icici-lombard__arogya-sanjeevani__wordings",
"icici-lombard__complete-health-insurance-health-shield__wordings",
"icici-lombard__complete-health-insurance-umbrella__wordings",
"icici-lombard__elevate__wordings",
"icici-lombard__health-advantedge__wordings",
"icici-lombard__health-booster-top-up__wordings",
"icici-lombard__health-elite-plus__wordings",
"icici-lombard__health-shield-360-retail__cis",
"icici-lombard__health-shield-360-retail__wordings",
"iffco-tokio__critical-illness-benefit__wordings",
"iffco-tokio__essential-health-plan__wordings",
"iffco-tokio__family-health-protector__wordings",
"iffco-tokio__health-protector-assure__wordings",
"iffco-tokio__health-protector-plus__wordings",
"iffco-tokio__individual-health-protector__wordings",
"manipalcigna__prohealth-insurance-all-variants__wordings",
"manipalcigna__prohealth-select__wordings",
"manipalcigna__sarvah-param__brochure",
]
def is_populated(v):
if v is None:
return False
if isinstance(v, (list, dict)) and len(v) == 0:
return False
if isinstance(v, dict):
# CoverageItem: populated if any subfield set
return any(is_populated(x) for x in v.values())
if isinstance(v, str) and v.strip() == "":
return False
return True
total = 0
ok = 0
field_counts = []
for pid in BATCH:
path = os.path.join(BASE, pid + ".json")
if not os.path.exists(path):
print(f"MISSING {pid}")
continue
try:
with open(path) as f:
data = json.load(f)
except Exception as e:
print(f"ERR {pid} {e}")
continue
ok += 1
n_pop = sum(1 for v in data.values() if is_populated(v))
field_counts.append((pid, n_pop, len(data)))
print(f"OK: {ok}/{len(BATCH)}")
print(f"Average populated fields: {sum(c[1] for c in field_counts)/len(field_counts):.1f}")
print()
for pid, n_pop, total_f in field_counts:
print(f" {pid}: {n_pop}/{total_f}")