gendesign/tradein-mvp/.gitignore
bot-backend 25bebadca5
All checks were successful
CI Trade-In / changes (pull_request) Successful in 9s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI / changes (pull_request) Successful in 10s
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Successful in 1m9s
CI / openapi-codegen-check (pull_request) Successful in 2m23s
CI / backend-tests (pull_request) Successful in 18m6s
chore(deps): три места, где сборка не воспроизводится — лок-призрак, глоб и неприпинованный сайдкар
Ничего не апгрейдит. Убирает три способа собрать образ не тем, что в репозитории.

1. tradein-mvp/backend/uv.lock — удалён (файл был untracked, в .gitignore
   с рождения). Мера — uv-workspace, сборка берёт КОРНЕВОЙ tradein-mvp/uv.lock
   (`context: ./tradein-mvp`, `COPY pyproject.toml uv.lock ./` + `uv sync
   --frozen`). Лок, созданный `uv lock` из backend/, не читает никто, и он тихо
   разошёлся с рабочим: на 2026-08-29 в нём pillow 12.2.0, starlette 1.0.1,
   python-multipart 0.0.29, pydantic-settings 2.14.1, weasyprint 68.1 — пять
   пакетов с открытыми advisory, которых в реальной сборке Меры нет вообще.
   Именно он подмешал пять фантомных строк в OSV-скан этой серии.
   Строка .gitignore остаётся (второй лок не нужен), но теперь с объяснением
   почему — иначе следующий читатель снимет ignore и закоммитит призрак.

2. backend/Dockerfile — `COPY pyproject.toml uv.lock* ./` + `if [ -f uv.lock ];
   then uv sync --frozen ...; else uv sync ...; fi` → без глоба и без фолбэка.
   Глоб + фолбэк означали: пропал лок — сборка не падает, а молча переключается
   на резолв «свежайшее из диапазонов pyproject». Образ собрался бы с версиями,
   которых никто не видел ни в одном PR. Теперь пропажа лока роняет COPY.

3. tradein-mvp/browser/Dockerfile — `pip install "camoufox[geoip]" aiohttp`
   без единого пина. У сайдкара нет лока вообще, так что любая пересборка (в том
   числе на несвязанном коммите) тянула свежайший camoufox, а с ним другой
   playwright — под который НЕ написан sed-патч coreBundle.js в том же файле.
   Запинено по факту прод-контейнера tradein-browser: camoufox 0.5.5,
   playwright 1.60.0, aiohttp 3.14.3. playwright явно, хотя и транзитивный
   (camoufox 0.5.5 → playwright<1.61): патч завязан на конкретную сборку драйвера.

   Там же переписан комментарий «Апгрейд playwright невозможен — camoufox 0.4.11
   pinned»: неверны обе половины. camoufox не был запинен ни на что, а 0.4.11
   в проде не стоит с неизвестно каких пор — контейнер сейчас несёт 0.5.5 и
   playwright 1.60.0.

Версии сняты с живого прод-контейнера, наличие на PyPI проверено.
2026-08-29 14:01:14 +03:00

62 lines
2 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Trade-In MVP
# Backend Python
backend/.venv/
backend/__pycache__/
backend/**/__pycache__/
backend/*.egg-info/
backend/.pytest_cache/
backend/.ruff_cache/
backend/.mypy_cache/
# backend/uv.lock — ИГНОРИРУЕТСЯ НАМЕРЕННО, это не забытый файл.
# Мера — uv-workspace: единственный лок живёт в корне (tradein-mvp/uv.lock), и
# именно его берёт сборка (context: ./tradein-mvp, `COPY pyproject.toml uv.lock ./`
# + `uv sync --frozen`). `uv lock`, запущенный из backend/, создаёт ВТОРОЙ лок,
# который никто не читает и который тихо расходится с рабочим: на 2026-08-29
# в нём висели pillow 12.2.0, starlette 1.0.1, python-multipart 0.0.29,
# pydantic-settings 2.14.1 и weasyprint 68.1 — пять пакетов с открытыми
# advisory, которых в реальной сборке Меры нет вообще.
# Локи обновлять из корня: `cd tradein-mvp && uv lock`.
backend/uv.lock
# Frontend Node
frontend/node_modules/
frontend/.next/
frontend/out/
frontend/dist/
# frontend/package-lock.json — TRACKED с #2770: Dockerfile и CI ставят `npm ci`,
# которому лок обязателен. Правишь frontend/package.json — регенерируй лок
# (`npm install --legacy-peer-deps --no-audit --no-fund`) в том же PR, иначе
# `npm ci` роняет сборку образа и весь deploy откатывается.
frontend/next-env.d.ts
# Docker
postgres-data/
caddy-data/
caddy-config/
# Env (никогда не коммитим)
.env
.env.local
.env.*.local
backend/.env
backend/.env.runtime
frontend/.env.local
# Public html mockup (исходник от gendsgn.ru — не наш код, держим в docs)
frontend/public/tradein.html
# Test PDF outputs
docs/sample-svg-test.pdf
docs/sample-vps-*.pdf
*.tmp.pdf
# IDE / OS
.vscode/
.idea/
.DS_Store
Thumbs.db
*.swp
# Logs
*.log