feat: enhance theme and permit listing with filtering and risk counts

- Filter out "不涉及" (not applicable) theme from list_all_themes()
- Add risk_count column to list_unbound_permits() with aggregated risk counts
- Improve unbound permits API to display risk count per permit-region combination

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Codex Agent 2026-02-04 13:52:57 +08:00
parent fe911592e0
commit b0590fda30
1 changed files with 19 additions and 5 deletions

View File

@ -2648,6 +2648,10 @@ def list_all_themes(
for row in rows:
record = {columns[idx]: row[idx] for idx in range(len(columns))}
items.append(_serialize_theme_row(record))
# 过滤掉"不涉及"主题
items = [item for item in items if item.get("name") != "不涉及"]
return items
@ -2706,13 +2710,23 @@ def list_unbound_permits(
p.name AS permit_name,
rpd.unit_name,
rpd.updated_at,
COALESCE(rpd.is_v2_visible, true) AS is_v2_visible
COALESCE(rpd.is_v2_visible, true) AS is_v2_visible,
COALESCE(risk_counts.risk_count, 0) AS risk_count
FROM region_permit_details rpd
JOIN regions r ON r.id = rpd.region_id
JOIN permits p ON p.id = rpd.permit_id
LEFT JOIN region_theme_permits rtp
ON rtp.region_id = rpd.region_id
AND rtp.permit_id = rpd.permit_id
LEFT JOIN (
SELECT
permit_id,
region_id,
COUNT(risk_id) AS risk_count
FROM region_permit_risks
GROUP BY permit_id, region_id
) risk_counts ON risk_counts.permit_id = rpd.permit_id
AND risk_counts.region_id = rpd.region_id
{ps_join}
WHERE {where_clause}
ORDER BY r.name, p.name