Fix: Allow searching for unbound permits by name

This commit is contained in:
Codex Agent 2025-12-22 16:27:48 +08:00
parent 73cd32b50d
commit 199a97cceb
2 changed files with 13 additions and 10 deletions

View File

@ -327,7 +327,7 @@ def search_v2(
"id": "",
"display_name": "",
"region": {"id": ctx["region_id"], "name": ctx["region_name"]},
"theme": {"id": "", "name": ""},
"theme": {"id": ctx.get("theme_id", ""), "name": ctx.get("theme_name", "")},
"permits": permits,
}
)

View File

@ -3657,7 +3657,7 @@ def load_permits_and_risks(
params.append(permit_id)
sql += """
ORDER BY p.name, rk.risk_content
ORDER BY p.name, LENGTH(rpr.serial_number), rpr.serial_number, rk.risk_content
"""
permits: Dict[str, Dict[str, object]] = {}
risk_seen_map: Dict[str, Set[str]] = {} # pid -> set of risk_ids
@ -4122,18 +4122,19 @@ def find_permit_contexts_by_name(permit_name: str) -> List[Dict[str, str]]:
sql = """
SELECT
rtp.region_id,
rpd.region_id,
r.name AS region_name,
rtp.theme_id,
t.name AS theme_name,
p.id AS permit_id,
p.name AS permit_name
FROM region_theme_permits rtp
JOIN permits p ON p.id = rtp.permit_id
JOIN regions r ON r.id = rtp.region_id
JOIN themes t ON t.id = rtp.theme_id
FROM region_permit_details rpd
JOIN permits p ON p.id = rpd.permit_id
JOIN regions r ON r.id = rpd.region_id
LEFT JOIN region_theme_permits rtp ON rtp.region_id = rpd.region_id AND rtp.permit_id = rpd.permit_id
LEFT JOIN themes t ON t.id = rtp.theme_id
WHERE p.name = %s
ORDER BY r.name, t.name
ORDER BY r.name, t.name NULLS LAST
"""
ordered: OrderedDict[Tuple[str, str], Dict[str, str]] = OrderedDict()
with _lic_pg_conn() as conn:
@ -4143,14 +4144,16 @@ def find_permit_contexts_by_name(permit_name: str) -> List[Dict[str, str]]:
region_id, region_name, theme_id, theme_name, permit_id, canonical_name = row
rid = str(region_id)
pid = str(permit_id)
tid = str(theme_id) if theme_id else ""
tname = str(theme_name) if theme_name else ""
key = (rid, pid)
if key in ordered:
continue
ordered[key] = {
"region_id": rid,
"region_name": str(region_name),
"theme_id": str(theme_id),
"theme_name": str(theme_name),
"theme_id": tid,
"theme_name": tname,
"permit_id": pid,
"permit_name": str(canonical_name),
}