fix(site-finder): склеить разорванный regex в _PLANNING_NO_MATCH_SQL (#1230)
Some checks failed
Deploy / build-frontend (push) Blocked by required conditions
Deploy / deploy (push) Blocked by required conditions
Deploy / changes (push) Successful in 7s
Deploy / build-backend (push) Has been cancelled
Deploy / build-worker (push) Has been cancelled
CI / changes (pull_request) Successful in 7s
CI / changes (push) Successful in 8s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / backend-tests (push) Has been skipped
CI / frontend-tests (push) Has been skipped
Some checks failed
Deploy / build-frontend (push) Blocked by required conditions
Deploy / deploy (push) Blocked by required conditions
Deploy / changes (push) Successful in 7s
Deploy / build-backend (push) Has been cancelled
Deploy / build-worker (push) Has been cancelled
CI / changes (pull_request) Successful in 7s
CI / changes (push) Successful in 8s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / backend-tests (push) Has been skipped
CI / frontend-tests (push) Has been skipped
Литерал regex был разорван переносом строки внутри одной пары '...': ветки 'Донбасской\\n' и 'Лумумбы\\n' содержали NL+8 пробелов и никогда не матчили однострочные planning_projects.full_name (PG ~ — POSIX ARE без (?x)). Geom-only КРТ-fallback молча терял ППТ по этим двум топонимам. Patch: вынес паттерн в _KRT_TOPONYM_REGEX через Python adjacent-literal concat, склеил в SQL через +. Все 17 веток в одной строке. 9 krt_lookup тестов зелёные. Closes #1230
This commit is contained in:
parent
06c4bb9fd6
commit
0c62d0b0c3
1 changed files with 17 additions and 3 deletions
|
|
@ -64,6 +64,20 @@ _PLANNING_KRT_SQL = text(
|
|||
# Вторичный запрос: planning_projects без матча с ekb_krt_sites — geom-only без реквизитов.
|
||||
# Запускается только если первый не дал результатов, чтобы не путать пользователя
|
||||
# двумя overlapping-источниками.
|
||||
#
|
||||
# Regex-топонимы для geom-only КРТ-fallback — собран как ОДИН непрерывный паттерн.
|
||||
# Раньше literal был разорван переносом строки внутри ОДНОЙ пары '...' внутри SQL,
|
||||
# и ветки 'Донбасской\n ' / 'Лумумбы\n ' содержали NL+8 пробелов отступа,
|
||||
# никогда не матчили однострочные full_name (PG `~` — POSIX ARE без (?x)) — #1230.
|
||||
# Python склеивает соседние строковые литералы на этапе парсинга, поэтому regex попадает
|
||||
# в SQL одной строкой. Не SQL-injection: статическая константа, без user input.
|
||||
# При добавлении новых топонимов держим строки <100 chars и НЕ ломаем regex переносом.
|
||||
_KRT_TOPONYM_REGEX = (
|
||||
"[кК][рР][тТ]|комплексн.*развити|Краснофлотцев|Донбасской|Шефской|Азина"
|
||||
"|Черкасской|Кварцевой|Летчиков|Вилонова|Лумумбы|Студенческой|Васильева"
|
||||
"|Гурзуфск|Бакинских|Шадринский|Бабушкина"
|
||||
)
|
||||
|
||||
_PLANNING_NO_MATCH_SQL = text(
|
||||
"""
|
||||
SELECT
|
||||
|
|
@ -76,9 +90,9 @@ _PLANNING_NO_MATCH_SQL = text(
|
|||
pp.geom,
|
||||
ST_GeomFromText(CAST(:parcel_wkt AS text), 4326)
|
||||
)
|
||||
AND pp.full_name ~ '[кК][рР][тТ]|комплексн.*развити|Краснофлотцев|Донбасской
|
||||
|Шефской|Азина|Черкасской|Кварцевой|Летчиков|Вилонова|Лумумбы
|
||||
|Студенческой|Васильева|Гурзуфск|Бакинских|Шадринский|Бабушкина'
|
||||
AND pp.full_name ~ '"""
|
||||
+ _KRT_TOPONYM_REGEX
|
||||
+ """'
|
||||
ORDER BY pp.dmd_actual_year DESC
|
||||
"""
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue