|
|
@@ -37,6 +37,13 @@ def _worker(task):
|
|
|
chamber = (m.get("chamber") or "").lower()
|
|
|
recs = [r for r in _WORKER_RECORDS if r.get("chamber") == chamber]
|
|
|
metrics = analyze.aggregate(recs, mid, m.get("party"), chamber)
|
|
|
+ # Territorial delegates (AS/DC/GU/MP/PR/VI) sit in the House but
|
|
|
+ # cannot vote on final passage — only on Committee-of-the-Whole
|
|
|
+ # amendments — so their participation is structurally low.
|
|
|
+ is_delegate = (
|
|
|
+ (m.get("chamber") or "").lower() == "house"
|
|
|
+ and (m.get("state") or "") in ("AS", "DC", "GU", "MP", "PR", "VI")
|
|
|
+ )
|
|
|
payload = {
|
|
|
"id": mid,
|
|
|
"name": m.get("full_name") or m.get("name"),
|
|
|
@@ -46,6 +53,7 @@ def _worker(task):
|
|
|
"served_from": m.get("served_from"),
|
|
|
"served_to": m.get("served_to"),
|
|
|
"served_partial": bool(m.get("served_partial", False)),
|
|
|
+ "is_delegate": is_delegate,
|
|
|
"metrics": metrics,
|
|
|
"_meta": _WORKER_META,
|
|
|
}
|
|
|
@@ -153,6 +161,8 @@ def main(argv=None):
|
|
|
entry["d"] = result["district"]
|
|
|
if result.get("served_partial"):
|
|
|
entry["sp"] = True
|
|
|
+ if result.get("is_delegate"):
|
|
|
+ entry["dl"] = True
|
|
|
mx = result.get("metrics") or {}
|
|
|
entry["k"] = {
|
|
|
"total": mx.get("total", 0),
|