diff --git a/backend/app/main.py b/backend/app/main.py index 33b3ae0..9ebb03b 100755 --- a/backend/app/main.py +++ b/backend/app/main.py @@ -986,7 +986,13 @@ def build_center_chair_viewer_html(layout: dict[str, object]) -> str: for slot in layout.get("slots", []) if slot.get("id") is not None and slot.get("slot_key") is not None } + members_by_id = { + int(member["id"]): member + for member in layout.get("members", []) + if member.get("id") is not None + } placed_keys: list[str] = [] + assignment_items: list[dict[str, object]] = [] for placement in layout.get("placements", []): slot_id = placement.get("seat_slot_id") if slot_id is None: @@ -994,9 +1000,20 @@ def build_center_chair_viewer_html(layout: dict[str, object]) -> str: slot_key = slot_key_by_id.get(int(slot_id)) if slot_key: placed_keys.append(slot_key) + member = members_by_id.get(int(placement.get("member_id") or 0)) + if member: + assignment_items.append( + { + "key": slot_key, + "member_id": int(member["id"]), + "name": str(member.get("name") or "-"), + "rank": str(member.get("rank") or "-"), + } + ) seat_map = layout.get("seat_map") or {} placed_literal = json.dumps(sorted(set(placed_keys)), ensure_ascii=False, separators=(",", ":")) + assignments_literal = json.dumps(assignment_items, ensure_ascii=False, separators=(",", ":")) if seat_map.get("source_type") == "fixed_html": html = parse_fixed_office_template()["html"] else: @@ -1080,6 +1097,7 @@ def build_center_chair_viewer_html(layout: dict[str, object]) -> str: ) bridge_script = """