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
Ничего не апгрейдит. Убирает три способа собрать образ не тем, что в репозитории. 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 проверено.
62 lines
2 KiB
Text
62 lines
2 KiB
Text
# 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
|