docs(ptica): две докстроки обещали то, чего в коде нет (#2464) #3002
No reviewers
Labels
No labels
Fable 5 ревью
GG-форсайт
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
feedback/max
generative
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
ИРД
вторичка
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#3002
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/2464-two-docstrings"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Два расхождения документации с кодом одним PR — тот же класс, что #2968.
1.
QuarterDump(nspd_client)Докстрока класса:
Фактическая сигнатура, 600 строк ниже:
Неверно вдвойне:
include_zouit=True, 5 ЗОУИТ-слоёв входят в дефолтный вызов;territorial_zones/red_lines/engineeringи все ЗОУИТ идут через grid-walk приgrid_n=7, то есть по 49 запросов каждый. Дефолтный дамп — сотни запросов, а не 17. Экономит rate-limit толькоinclude_risks=False.Докстрока самого метода при этом говорит верно: «Default True». Правильный образец лежал рядом с дефектом — как и в нескольких других находках этого эпика.
2.
find_active_on_demand_job(cadastre_fetch)В запросе нет ни слова
failed, ни какого-либо временного фильтра:Обещание вдвойне вредно: оно подразумевало, что неуспешная джоба старше минуты вернётся как активная (не вернётся), и отправляло отлаживающего искать окно, которого нет.
Гейты сверяют утверждение с кодом
Не читаемость текста, а согласованность:
include_zouit=Falseв сигнатуре;Два подводных камня, на которые я наступил — и оставил от них защиту
Гейт по тексту не отличает цитату от утверждения. Первая редакция докстрок цитировала старые обещания, чтобы объяснить, что именно было не так, — и гейты покраснели на моём же объяснении. Формулировки пересказаны, а не процитированы; это оговорено прямо в тексте докстроки, чтобы следующий не повторил.
Тело функции нельзя брать как последний кусок разбиения по тройным кавычкам. SQL внутри сам обёрнут в них, поэтому «тело» оказывалось огрызком после запроса, и один гейт проходил по случайности. Вынесен хелпер
_body, отбрасывающий ровно первую докстроку.Как проверено
origin/mainтри гейта красные с конкретными сообщениями («докстрока QuarterDump обещает «Default = только core», а include_zouit по умолчанию True»; «в докстроке осталось число 17»; «докстрока обещает окно «за последние 60 секунд», а в SQL нет ни временного фильтра, ни статуса failed»).test_docstrings_state_the_actual_behaviourловит «починку» через вычёркивание неудобной фразы — молчание читается как «всё хорошо».pytest backend/tests/services/— 3199 passed, 14 skipped.Часть эпика #2464.