GenDesign — full migration from GitHub including issues/PR/wiki (2026-05-16)
Find a file
bot-backend 542ff1c9ca docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253
Оба места утверждали, что у Домклика один выделенный резидентный прокси и
пула нет. Это перестало быть правдой ещё в #2800 (миграция 253 сняла
резервацию узла), но текст остался — и именно на него опирался тикет #3189,
поставленный под «калибровку» ограничения, которого не существует.
Свип к тому же ходит через пул давно (serp.py:359), а бэкфилл подключён к
нему в PR #3222.

Заодно докстринг называл не тот ограничитель: свип кладёт не счётчик
провалов lease, а break по первому DomClickBlockedError (#2854) — до
ротации дело не доходит ни при каком счётчике, отсюда buckets_completed=0.

Только комментарии, поведение не меняется. Миграция 175 уже применена, а
_schema_migrations трекает по имени файла без checksum — правка текста
её не перезапустит.
2026-08-29 18:57:25 +03:00
.claude chore(rules): убрать осиротевшие после PR #3198 ветки bot-pipeline 2026-08-28 23:27:22 +03:00
.design-sync chore(design-sync): durable-инпуты tradein DS-панели — 6 floor-card превью, бренд-шрифты Manrope/Plex, source-kit fork-фикс (#2267) 2026-07-03 10:23:45 +03:00
.forgejo/workflows chore(ci): node 20 отслужил — рантайм фронтов и оба CI-джоба на node 24 LTS 2026-08-29 14:02:55 +03:00
.playwright-mcp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_audit_ptica_0622 docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_svgserve docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-3029@1a37c7e0f9 docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-3029g@6bb3189bc4 docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-3061@7d98a674c9 docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-3196@d20fc576ca docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-adminexcl/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-appini@a0539cf865 docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-authdsn/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-av403b/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-avbf/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-avinc/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-avserp/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-b2/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-basecheck/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-bkp@1cb14c6a35 docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-bspine/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-cad/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-caddysites@00df38bc2a docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-cadval docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-cardhash/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-cbmode@89619b0cd2 docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-cdetail/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-citloc/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-conf/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-cookerr/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-couchbk@0111b32cb2 docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-created/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-dcapi/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-dcdetail/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-dcenrich/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-dclocal/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-dedup/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-deleg@98aad7b985 docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-deps4@25bebadca5 docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-det429/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-egress/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-floors/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-geo/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-herofix/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-hookfix@0e4beb8457 docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-landing/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-match/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-mera/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-metrics@124cfb3d5d docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-metricsfix@a72d39d74d docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-nbfix/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-noblock/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-node24@4e8cf5ab62 docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-oblast/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-obs@a77bfa5270 docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-p4a/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-prank/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-pricesp/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-recharts@a3e642fed4 docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-recon@be2e07d9c3 docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-rev2606/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-rev2614/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-rev2624/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-rev2633/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-revive/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-rstglob@8a5d323608 docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-scrapi/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-tgpin@13269d8ebb docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-version/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-vitest-mera@57ec24f364 docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-vitest-sf@0f6cf5c67d docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-ydetail/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_wt-zhkh/tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
auth chore(ci+rbac): auth/** в paths-фильтры + «Поиск домов» только у админа 2026-07-31 20:24:24 +03:00
backend chore(site-finder): удалить мёртвый код — 14 неиспользуемых символов (#3235) 2026-08-29 15:39:10 +00:00
caddy fix(mera/b2c): вернуть потерянные вопросы FAQ, починить адрес превью и честность двух комментариев 2026-08-29 19:35:57 +05:00
data fix(gendesign): FDW-роль не могла читать районы ЕКБ — витрина сделок МЕРЫ теряла район 2026-08-29 18:56:11 +05:00
docs feat(observability): /metrics в обоих бэкендах — счётчики, задержка, дашборд 2026-08-26 11:30:18 +03:00
frontend Merge pull request 'chore(ci): node 20 отслужил — рантайм фронтов и оба CI-джоба на node 24 LTS' (#3214) from chore/node24-runtime into main 2026-08-29 11:29:12 +00:00
memory Memory: +rel Project_GenDesign→SiteFinder_v0_2_May08 (deploys), SiteFinder_v0_2_May08→MVP_Scope_AreaSelect_Apr25 (contradicts... (2026-05-10 22:44:45 +05) 2026-05-10 22:44:45 +05:00
ops feat(ops/metrics): инфра-алерты уезжают в тему «метрики», клиенты остаются в «алертах» 2026-08-27 21:50:51 +03:00
preview feat(preview): add static mockups behind basic auth at /preview/* 2026-05-17 11:15:13 +03:00
scripts fix(smoke): периметр требовал 401 от вебхука, который PR-D3 открыл намеренно 2026-08-29 18:49:43 +03:00
site-finder Merge pull request 'fix(site-finder): remove dead sat_factor (computed+written, never applied) (#1509)' (#1698) from fix/score-sat-factor-1509 into main 2026-06-17 18:28:45 +00:00
tradein-mvp docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
.codannaignore docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
.editorconfig init 2026-04-25 13:45:19 +03:00
.env.example feat(security): GlitchTip forwarder для basic_auth 401 events (Phase 2 PR #426) (#430) 2026-05-23 08:42:36 +00:00
.fastembed_cache docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
.gitattributes chore(ops): скрипты аудита и первичной настройки выделенного сервера Selectel 2026-08-22 12:49:09 +03:00
.gitignore fix(ops/metrics): Prometheus не видел ни одного Alertmanager — цель file_sd осталась пустой 2026-08-27 21:10:25 +03:00
.mcp.json.bak-diskmove docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
.mcp.json.bak-obsidianfix docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
.pre-commit-config.yaml chore(tooling): pre-commit, pyproject и uv.lock — один ruff 0.15.20 (#2864) (#3021) 2026-08-21 11:37:23 +00:00
.worktreeinclude chore(claude): agents view readiness — cleanup, .worktreeinclude, workflow (#497) 2026-05-24 09:20:26 +00:00
7ya_meta.json docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_plancheck$f.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_svg_1-Аа_37dd3614.svg.b64 docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
_svg_Ст-1_1fad43ba.svg.b64 docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
A01-empty-full.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
audit-1-empty.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
audit-2-autocomplete.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
audit-3-result.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
audit-4-history.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
audit-5-sources.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
audit-6-analytics.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
audit-7-cache.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
audit-8-drawer.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
audit-9-coef-drawer.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
audit-10-usermenu.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
audit2266-01-hero-desktop.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
audit2266-02-hero-desktop-loaded.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
audit2266-03-fullpage-desktop.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
audit2266-04-analogs-overlay.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
audit2266-05-analogs-deals-bottom.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
audit2266-06-analytics-overlay.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
audit2266-07-analytics-top.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
audit2266-08-house-sales.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
audit2266-09-mobile-top.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
audit2266-10-mobile-fresh.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
audit2266-11-mobile-overlay.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
beget-dns.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
Caddyfile refactor(caddy): разделить site-блоки по хостам под переезд (#3062) 2026-08-23 21:52:48 +00:00
CLAUDE.md chore(claude): retire autonomous bot-pipeline 2026-08-28 22:27:00 +03:00
dns-page.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
docker-compose.metrics-agent.yml fix(ops/metrics): postgres-exporter печатал пароль БД в лог при каждой ошибке 2026-08-27 15:55:24 +03:00
docker-compose.metrics.yml feat(ops/metrics): инфра-алерты уезжают в тему «метрики», клиенты остаются в «алертах» 2026-08-27 21:50:51 +03:00
docker-compose.obsidian.yml fix(devops): couchdb healthcheck ложный 401 — auth /_up кредами (#2413) 2026-07-04 12:20:59 +00:00
docker-compose.prod.yml feat(glitchtip): включить встроенный MCP-сервер образа 6.1.6 2026-08-29 13:41:58 +03:00
docker-compose.uptime.yml ci(infra): coverage-gate (#68) + OpenAPI codegen-assert (#69) + uptime monitoring (#75) 2026-06-13 23:28:06 +05:00
docker-compose.yml ship #13-16: multi-target Dockerfile, per-object drill-in, CRM pipeline, 2026-04-27 19:32:37 +03:00
estimate-hero-after.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
gendesign-techdebt-plan.md docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
Makefile ops: alembic baseline, pre-commit, TIGER cleanup, pg_dump scripts 2026-04-26 13:08:51 +03:00
mera-audit-00-initial.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
mera-audit-01-hero.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
mera-audit-02-autocomplete.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
mera-audit-03-address-selected.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
mera-audit-04-result.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
mera-audit-report.md docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
mera-audit-wave1.md docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
mera-b2c-paid-flow-decision.md docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
mera-b2c-plan.md docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
mera-landing-viewport.jpg docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
mera-locationcoef.json docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
mera-mobile-estimate.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
mera-pr-d-spec.md docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
mera-prod-chat.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
mera-prod-hero-map.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
mera-prod-map-verify.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
mera-tbank-acquiring-recon.md docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
mera-v2-full.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
mera-v2-viewport.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
p1-exposure-prod.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
pinterest-bigtext.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
plan1shot.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
praktika-login-ok.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
prinzip_vp.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
ptica-egrn-genplan-research-brief.md docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
qa-1991-dkp-card-closeup.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
qa-1991-price-cards.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
qa-2391-result.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
qa-2392-dkp-decode.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
qa-2392-history-view.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
qa-2392-viewport-clean.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
qa-city-selector.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
qa-login-page.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
qa-preview-desktop-full.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
qa-preview-desktop-snapshot.md docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
qa-preview-desktop-snapshot2.md docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
qa-team-logged-in.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
qa-team-page.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
qa-v2-nav.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
README.md chore(claude): retire autonomous bot-pipeline 2026-08-28 22:27:00 +03:00
selectel-bucket-form-ru1.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
selectel-os-setup.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
serp_offer_shape.json docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
serp_ssr_shape.json docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
support-btn-desktop.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
svgcheck.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
tradein-v2-analogs-overlay.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
tradein-v2-analytics-overlay.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
tradein-v2-flagship-viewport.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
tradein-v2-fullpage.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
tradein-v2-lead-form-visible.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
tradein-v2-snapshot1.md docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
ui-1-dashboard.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
ui-dashboard.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
ui-empty.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
ui-menu-open.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
ui-usermenu.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
ui-validation.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
ural100.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
v2-cta-overlap.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
v2-dashboard.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
v2-focus-address-input.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
v2-overlay-analogi-open-navvisible.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
verify-1-dashboard.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
verify-2-drawer.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00
verify-3-analogs.png docs(tradein/domclick): два комментария описывали пул, которого нет с миграции 253 2026-08-29 18:57:25 +03:00

GenDesign — Site Finder + Trade-In «Мера»

Несколько продуктовых линий для девелоперов и риелторов РФ в одном монорепо:

  • Site Finder v2 «Foresight» — AI-подбор инвестиционных земельных участков + прогноз продуктовой стратегии («GG-форсайт»: спрос/предложение, сценарии, что строить, gate-вердикт по ПЗЗ/ЗОУИТ/ОКН).
  • Trade-In «Мера» — оценка выкупной стоимости вторичного жилья (адрес → оценка по аналогам и реальным сделкам, PDF-отчёт, white-label). tradein-mvp/, отдельный пайплайн.
  • Generative Design — автоматическая генерация концепций застройки (на ранней стадии).

Целевой регион Discovery — Свердловская обл. (ЕКБ, ПЗЗ, МСК-66).

North Star

К концу месяца 3: 3 платящих пилота (≥30 тыс. ₽/мес каждый) + заявка в реестр российского ПО → право на Раунд А (2025 млн ₽).


Текущий статус (июнь 2026)

Live: https://gendsgn.ru/ — HTTP/2+HTTP/3, валидный TLS, /health {"status":"ok"}. Полный CI/CD: Forgejo Actions (git.gendsgn.ru) → GHCR → SSH-deploy на Beget VPS (миграция с GitHub Actions 16 мая 2026). Sentry/GlitchTip активен (release tracking привязан к git-sha).

Слой Статус
Site Finder v2 «Foresight» (/site-finder) — анализ участка по cad_num, карта by-bbox, forecast-движок live
↳ Forecast-движок (/parcels/{cad}/forecast + /analyze): спрос/предложение, сценарии, confidence, affordability, rate-sensitivity, продуктовое ТЗ (backend/app/services/forecasting/*, фронт Section6Forecast + ScenariosBlock + ForecastConfidenceBlock)
↳ Gate-вердикт ПЗЗ/ЗОУИТ/ОКН (gate_verdict) + ИРД-overlay/analyze backend (gate_verdict.py, ird_overlay_lookup.py, ird_analyze.py); фронт GateVerdictBanner
↳ Конкуренты / best-layouts / изохроны (/parcels/{cad}/competitors, /best-layouts, /isochrones) live
Trade-In «Мера» (/trade-in) — оценка вторички по аналогам + реальным сделкам, PDF, white-label live (tradein-mvp/, отдельный стек/пайплайн)
↳ Скрейперы аналогов: Avito / Cian / Domclick / Yandex.Realty (+ детальные парсеры, browser-fetcher)
↳ SberIndex time-adjust (city-level вторичный индекс цен) + Rosreestr ДКП-сделки + ДаДата/геокодер
Аналитический калькулятор /analytics/recommend (Tier 3 per-bucket эластичность, кадастр vs рынок)
DOM.РФ kn-API скрейпер (строящиеся ЖК Свердл, sale_graph + infra + photos) Celery beat + admin UI
NSPD geo bulk-fetcher (rosreestr2coord lite, без Playwright) admin UI с per-target логами
Rosreestr CSV-сделки (квартирные партиции, ~7M строк, 27 мес истории)
NSPD кадастровые кварталы + здания ЕКБ Celery beat + admin UI
OSM ekb_districts_geom (PostGIS-полигоны районов ЕКБ)
Objective ETL (Anton SQLite → PG, ports на psycopg v3) admin UI
Uptime Kuma мониторинг (status.gendsgn.ru, отдельный стек)
Obsidian Self-hosted LiveSync vault на obsidian.gendsgn.ru multi-device sync
Concept page (/concept) — Generative Design 🟡 skeleton

Backlog: Forgejo Issues (трекаемые задачи с PR-связью) + Obsidian vault (планы, ADR, research — см. ниже про разделение).


Quick start (локально)

Требования: Docker Desktop, Node.js 20+, uv для backend dev.

cp backend/.env.example backend/.env
cp frontend/.env.example frontend/.env
docker compose up -d --build
curl http://localhost:8000/health   # → {"status":"ok","environment":"dev"}
# Frontend:  http://localhost:3000
# Swagger:   http://localhost:8000/docs

Полезные make-таргеты: logs, backend-shell, migrate, test, lint, typecheck, codegen (TS-типы из OpenAPI).


Архитектура

Backend: Python 3.12, FastAPI, SQLAlchemy 2.0, GeoAlchemy2, Pydantic v2, Celery + Redis, httpx, Shapely 2, scikit-learn. БД: PostgreSQL 16 + PostGIS 3.4 (партиционированные rosreestr_deals, GIST на geom-полях, ~50 предметных таблиц). Frontend: Next.js 15, React 19, TypeScript 5, Tailwind 4, TanStack Query, Leaflet/Mapbox, ECharts. Экспорт: WeasyPrint (PDF), ezdxf (DXF), openpyxl (Excel). Dev: uv lockfile, ruff, mypy strict (на core + generative), pytest, pre-commit hooks.

Структура монорепо:

backend/                 FastAPI app, services (analytics_queries, scrapers, generative, site_finder, forecasting), workers (Celery)
frontend/                Next.js app router (analytics, admin, concept, site-finder + forecast/scenarios компоненты)
tradein-mvp/             Trade-In «Мера» — standalone стек (FastAPI + Next.js + Postgres + Caddy), скрейперы вторички, PDF-оценка
site-finder/             standalone pipeline-скрипты SF v1 (0112_*.py загрузка/скоринг) + server.py (Leaflet UI на SQLite-кэше)
auth/                    roles.yaml — RBAC (single source of truth, bind-mount в main + tradein backend)
caddy/                   users.caddy.snippet — basic-auth snippet для Caddy
preview/                 статичные HTML-макеты (analytics / landing / monitoring / site-finder)
data/sql/                ETL артефакты — миграции схемы, загрузчики rosreestr/anton/nspd
ops/                     backup.sh + deploy скрипты
scripts/                 утилиты (migrate_kg_to_obsidian.py, setup-couchdb.sh, cleanup_ghosts.py)
docs/                    стратегические снапшоты (актуальное knowledge — в Obsidian vault)
memory/                  legacy JSONL knowledge graph (deprecated, не обновляется — данные в Obsidian)
docker-compose.prod.yml  main стек (backend, frontend, postgres, redis, worker, beat, caddy)
docker-compose.obsidian.yml  obsidian-стек (CouchDB) — деплоится отдельно
docker-compose.uptime.yml    Uptime Kuma мониторинг (status.gendsgn.ru) — отдельный стек, запуск вручную
.forgejo/workflows/        (Forgejo Actions — основной CI/CD после миграции 16.05.2026)
  ├── ci.yml              lint (ruff) + pytest на PR
  ├── deploy.yml          main → пересборка backend/frontend образов + auto-apply data/sql/*.sql + SSH deploy
  ├── deploy-tradein.yml  tradein-mvp стек (отдельный пайплайн + свой _schema_migrations)
  └── stale-claims.yml    авто-снятие протухших claim-меток в bot-пайплайне

Аналитика — что доступно

В прод-БД ~50 предметных таблиц:

  • domrf_kn_* — DOM.РФ объекты, квартиры, sale_graph, infrastructure, photos (1500+ ЖК Свердл).
  • rosreestr_deals — партиционированные ДДУ/ДКП-сделки 2024Q1—2026Q1, ~7M строк, 27 мес истории.
  • cad_quarters_geom + cad_buildings — NSPD кадастровые кварталы и здания (cost_value, year_built, floors, geom).
  • ekb_districts_geom — PostGIS-полигоны OSM для spatial-join.
  • cbr_mortgage_series, yandex_realty_zk, domrf_realization, sber_ddf_metrics — макро/cross-validation.

Калькулятор /analytics/recommend считает квартирографию (5 size-бакетов) с per-bucket эластичностью через регрессию sale_graph, нормировкой на район/класс/конкурентов, кадастр-vs-рынок cross-check, и инверсным режимом «требуемая цена для срока X мес».

Подробное описание схемы БД, helper-views, FK и 27.04 history — в Obsidian vault: domains/analytics/Analytics_Dashboard_Apr27, domains/domrf/events/DomRF_Lazy_Loaded_Apr27_2026, events/Anton_Imported_Apr27_2026, domains/cadastre/Cad_Quarter_Backfill_Apr30. См. также data/sql/*.sql (DDL артефакты).


Site Finder v2 «Foresight» — что доступно

Анализ инвестиционного участка по кадастровому номеру: карта (/parcels/by-bbox), запуск анализа (POST /parcels/{cad}/analyze), прогнозный движок (GET /parcels/{cad}/forecast + экспорт). Бизнес-логика — backend/app/services/site_finder/* и backend/app/services/forecasting/*.

  • Forecast-движок (forecasting/orchestrator.py): прогноз спроса/предложения (demand_supply_forecast), сценарии (scenarios), оценка уверенности (confidence_engine), доступность (affordability), чувствительность к ставке (rate_sensitivity), продуктовый скоринг и «что строить» (product_scoring, what_to_build). Фронт: Section6Forecast, ScenariosBlock, ForecastChart, ForecastConfidenceBlock, ForecastHorizonsBlock, ForecastProductTzBlock.
  • Gate-вердикт: проверка регуляторных ограничений ПЗЗ/ЗОУИТ/ОКН (gate_verdict.py, pzz_loader, zone_regulation, okn_lookup) → баннер вердикта на фронте (GateVerdictBanner).
  • ИРД (исходно-разрешительная документация): overlay-lookup + анализ на backend (ird_overlay_lookup.py, ird_analyze.py).
  • Соседство/контекст: конкуренты (POST /parcels/{cad}/competitors), лучшие планировки (/best-layouts + PDF), изохроны (/isochrones), POI-скоринг, КРТ/резервирование/network-обременения.

site-finder/ (отдельная папка) — это standalone-пайплайн SF v1: скрипты 01_…12_*.py (загрузка участков, fetch POI, скоринг v1/v2, отчёты) + server.py (Leaflet-UI поверх SQLite-кэша POI). Это исследовательский прекурсор прод-движка в backend/, не путать с прод-API.


Trade-In «Мера» — оценка вторички

Отдельный продукт в tradein-mvp/ (standalone стек: FastAPI + Next.js 15 + Postgres + Caddy, свой deploy-tradein.yml). Дефолтный бренд переименован «Trade-In» → «Мера» (white-label-бренды клиентов резолвятся по slug из таблицы brands; URL-пути /trade-in/* и code-идентификаторы сохранены).

Поток: адрес → геокодер (ДаДата) → подбор аналогов в радиусе (PostGIS ST_DWithin) → оценка → PDF-отчёт (WeasyPrint, layout по референсу «Брусника.Обмен»).

  • Источники аналогов: скрейперы Avito / Cian / Domclick / Yandex.Realty (backend/app/services/scrapers/*, с детальными парсерами и browser_fetcher).
  • Реальные сделки: Rosreestr ДКП-поллинг (rosreestr_poll.py).
  • Time-adjust: SberIndex city-level вторичный индекс цен (sber_index.py) — приведение разновременных аналогов/сделок к текущему месяцу.
  • Оценка (estimator.py): SQL-агрегация поверх listings + deals, Tukey-фильтр выбросов (1.5×IQR), медиана/Q1/Q3 + confidence; больше не mock.
  • API: POST /api/v1/trade-in/estimate, GET …/estimate/{id}, GET …/estimate/{id}/pdf. Multi-tenant: /api/v1/brand/{slug}, RBAC через auth/roles.yaml.

Подробнее — tradein-mvp/README.md и tradein-mvp/DEPLOY.md.


Production хостинг

Beget Cloud, Москва, 2 vCPU / 4 GB / 40 GB NVMe. Стоимость ~1 140 ₽/мес сервер + ~17 ₽/мес домен.

Два изолированных стека через docker compose, общая Docker network gendesign_shared:

  1. Main стек (docker-compose.prod.yml, project gendesign): postgres + redis + backend (FastAPI) + worker + beat (Celery, Chromium только в worker) + frontend + caddy (auto-TLS Let's Encrypt). Backend/frontend bind на 127.0.0.1 — наружу только Caddy.

  2. Obsidian стек (docker-compose.obsidian.yml, project gendesign-obsidian): couchdb:3 — Self-hosted LiveSync remote для multi-device sync vault'а на obsidian.gendsgn.ru. Caddy в main-стеке маршрутизирует через gendesign_shared network.

Split deploy — изменения в main НЕ перезагружают obsidian (и наоборот). Каждый стек со своим workflow.

SSH-only по ключу к non-root пользователю gendesign, fail2ban активен. UFW: 22/80/443.

Forgejo Actions deploys (self-hosted git.gendsgn.ru, мигрировано с GitHub Actions 16.05.2026):

  • .forgejo/workflows/ci.yml — на PR: ruff lint + pytest (coverage gate ≥65%). mypy strict в гейте не гоняется (доступен вручную — uv run mypy app/services/generative app/services/site_finder/scorer.py). Блокирует merge при провале.
  • .forgejo/workflows/deploy.yml — main: триггер на backend/**, frontend/**, Caddyfile, docker-compose.prod.yml, data/sql/**. Build backend lean + worker-with-chromium + frontend → push в приватный GHCR → SSH git reset --hard, auto-apply pending data/sql/NN_*.sql через _schema_migrations (idempotent, см. ниже про миграции), sed SENTRY_RELEASE=$IMAGE_TAG в backend/.env.runtime, compose pull && up -d, caddy reload, curl /health.
  • .forgejo/workflows/deploy-tradein.yml — tradein-mvp стек (отдельный пайплайн).
  • .forgejo/workflows/deploy-obsidian.yml — obsidian: триггер на docker-compose.obsidian.yml, scripts/setup-couchdb.sh, docs/obsidian-livesync.md. Без сборки образов (couchdb:3 с DockerHub), SSH compose up -d + idempotent bootstrap (CORS, DB, лимиты). (до 2026-07-05 ошибочно лежал в .github/workflows/ — там ни разу не исполнился, см. issue #2416; контейнер держался вручную.)

Forgejo Secrets / Variables: DEPLOY_HOST, DEPLOY_USER, DEPLOY_SSH_KEY, DEPLOY_PORT. Сервер авторизуется в GHCR однократно через PAT с read:packages. COUCHDB_USER/COUCHDB_PASSWORD — в backend/.env.runtime на VPS (не в репе).

Миграции БД — _schema_migrations, не Alembic

Схема развивается через идемпотентные data/sql/NN_*.sql (CREATE … IF NOT EXISTS, guarded DO-блоки). deploy.yml перед compose up прогоняет файлы в лексикографическом порядке, отмечая применённые в таблице-трекере _schema_migrations (применяется ровно один раз каждый). Каталог backend/alembic/versions/ пуст — Alembic в проде не используется. Подробности и граница «raw SQL vs ORM» — docs/Schema_Migrations_vs_Alembic.md.

Триггеры миграции на Yandex Cloud: 3-й платящий пилот / Раунд А / госзаказ (нужен реестр ПО) / БД >10 GB / >50 RPS. На YC ~1015 тыс ₽/мес.

Операционные грабли

  • docker compose restart НЕ перечитывает env_file: — после правки .env всегда up -d --force-recreate --no-deps backend.
  • deploy.yml использует git reset --hard origin/main — ручные правки в /opt/gendesign будут стёрты при следующем деплое (.env-файлы переживут — в .gitignore).
  • На проде всегда указывать -f docker-compose.prod.yml (без него поднимет dev compose без Caddy).
  • caddy reload не сбрасывает retry-queue для ACME. При смене hostname с битым cert-state: docker volume rm gendesign_caddy_data && up -d caddy.

Текущий фокус (июнь 2026)

Исходный 12-недельный roadmap (Stage 0 → 2c, апрель–июнь) пройден: скелет/CI/прод, NSPD-скрейпер + per-bucket эластичность, ПКК-данные и скоринг участков — всё . Site Finder вышел из стадии «заглушка» в боевой v2-движок, параллельно запущен Trade-In. Активные направления:

  • Site Finder v2 «Foresight» (#944 GG-форсайт) — ИИ-прогноз продуктовой стратегии девелопера: спрос/предложение, сценарии, confidence, продуктовое ТЗ. Движок и фронт-секции отгружены, продолжается доведение точности и покрытия.
  • ИРД (#1067) — исходно-разрешительная документация: overlay + analyze на участке.
  • Trade-In «Мера» — оценка вторички на реальных данных (скрейперы Avito/Cian/Domclick/Yandex + Rosreestr ДКП + SberIndex), расширение покрытия аналогов и detail-парсинга.
  • Generative Design (/concept) — на ранней стадии (skeleton), доводится после стабилизации SF/Trade-In.

Трекаемый backlog и приоритеты — Forgejo Issues с лейблами scope/*, вторичка, status/*. North Star — см. секцию выше.


Команда и память проекта

2 фуллстек-разработчика, part-time 20 ч/нед, ритм: 1 синк/нед, daily-async в Telegram, PR-review обязательный, trunk-based. Codegen TS-типов из Pydantic — npm run codegen.

Knowledge base — Obsidian vault

Источник правды — Obsidian vault на obsidian.gendsgn.ru (Self-hosted LiveSync + CouchDB). Markdown-файлы с [[wiki-links]], MOC-страницами, Graph View и тегами. Multi-device sync: desktop / laptop / iPhone / Android. 268 entities мигрированы из исторического JSONL knowledge graph (scripts/migrate_kg_to_obsidian.py), который теперь deprecated.

Структура vault:

  • meta/ — гайды, credentials, project meta (Project_GenDesign, TechStack, NorthStar)
  • domains/{domrf,cadastre,rosreestr,analytics,ui,api,geo,infra}/ — knowledge по бизнес-доменам
  • code/{modules,schemas,patterns,hooks,tasks}/ — code-level entities
  • decisions/ — ADR / планы / политики
  • fixes/ — bug-журналы
  • sessions/, sprints/, events/ — chronological logs
  • research/, sources/, feedback/, github/, limitations/ — прочее
  • old/ — архив legacy paths (redirect-stubs)

Подключение коллеги — гайды в самом vault'е:

  • meta/01_connect_devices.md — установка Obsidian + LiveSync на любую платформу (через Setup URI или 4 поля)
  • meta/03_obsidian_plugins.md — какие плагины ставить (Local REST API, Templater, Dataview)
  • meta/04_mcp_obsidian_setup.md — подключение Claude к vault через MCP

Legacy: старый knowledge graph JSONL (memory/memory-gendesign.jsonl) — снапшот на момент 2026-05-11, не обновляется. Все новые факты пишутся в Obsidian.

Где вести задачи — Forgejo Issues vs Obsidian

Используем оба, но с чёткой ролью (трекер мигрирован с GitHub на self-hosted Forgejo 16.05.2026):

Forgejo Issues (git.gendsgn.ru) Obsidian vault
Что сюда Bug + Feature + Refactor — всё с связью с кодом / PR Knowledge: research, ADR, planning, draft-ideas
Lifecycle Open → Assigned → PR → Merged → Closed Append-only журнал решений и контекста
Уведомления Forgejo email/webhook Никаких (читаешь когда сам пришёл)
Поиск Forgejo search + labels + milestones BM25 + tags + Graph + MOC
Видимость Команде в reviewer'ах Всем у кого есть vault password
Сроки Milestones (12-week roadmap) Frontmatter date:, status:, due:

Правило перехода: Obsidian fixes/Bug_X.md со status: OPEN → когда требует PR — создаём Forgejo Issue, ссылку прописываем во frontmatter .md (issue: 42). Bug-исследование живёт в vault'е, action item — в Issues.

Что куда:

  • Bug_* (vault) + Forgejo Issue с тегом bug → обнаружен баг, фикс через PR
  • decisions/* (vault) — ADR, не нужен Issue
  • research/* (vault) — анализ источников, конкуренты, метрики
  • sessions/* (vault) — журналы рабочих сессий
  • Forgejo Issues feat/* — фичи + PR на 1+ files, видимые в milestones

Claude Code subagents (.claude/agents/)

Разработка ведётся через Claude Code с 6 кастомными subagent'ами (path-scoped, со своими MCP-«учётками»: прод-PostgreSQL, Obsidian vault, Forgejo, GlitchTip). Полные правила — .claude/rules/ + корневой CLAUDE.md.

Agent Scope / зона ответственности
tech-analyst Нечёткая / cross-domain задача → план перед кодом
backend-engineer backend/app/** — FastAPI, Celery, scrapers, services
frontend-engineer frontend/src/** — Next.js 15, React 19, hooks
database-expert data/sql/**.sql, схема, EXPLAIN ANALYZE, прод-БД через MCP
devops-engineer docker-compose*.yml, Caddyfile, .forgejo/workflows/**
code-reviewer Pre-push lint: security, correctness, conventions

Workflow: тривиально (typo, 1-line) → main session; single-domain → профильный worker; cross-domain → tech-analyst сначала. Worker → code-reviewer → коммит → push → PR в Forgejo. Branch + PR обязательны, никаких direct push в main.


Полезные ссылки

🌐 Production https://gendsgn.ru/
🩺 Health https://gendsgn.ru/health
📚 OpenAPI Swagger UI · https://gendsgn.ru/openapi.json (за Caddy basic_auth)
🗂 Knowledge vault https://obsidian.gendsgn.ru (требуется Obsidian + Self-hosted LiveSync, см. vault meta/01_connect_devices.md)
🧰 Git / CI git.gendsgn.ru (Forgejo) · CLAUDE.md — правила разработки
Backlog Issues · Milestones
Деплой Forgejo Actions · GHCR пакеты
Мониторинг Sentry
Инфра Beget VPS cp.beget.com/cloud/... · DNS

Стратегические документы (снимки): docs/MVP_Goals_Python.md, docs/Бизнес-план v2.1 - Site Finder + Roadmap 12 месяцев.md, docs/obsidian-livesync.md. При расхождении с vault'ом — доверяем vault'у.