# CashInput is_placeholder — failed deploy **Дата:** 2026-06-23 **Статус:** Код написан, в прод не попал. Последняя транзакция (1770) не сохранилась. ## Что было сделано ### Бэкенд - `Transaction.is_placeholder` (Boolean, default false) — колонка добавлена в БД через alembic migration (`add_is_placeholder_to_transaction`) - API принимает/возвращает `is_placeholder`, фильтр `?is_placeholder=true/false` - Миграция создалась и применилась корректно — колонка в БД есть ### Фронтенд (CashInput.vue) - Выбор **валюты** первым шагом (крупные кнопки $ ₽ € С̲ ₸), сохраняется в localStorage (`cash_last_currency`) - Счёт — под валютой, все счета этой валюты. После добавления — сбрасывается на первый наличный (type=cash) - **is_placeholder** = `acct.type !== 'cash'` — если счёт cash, то обычная транзакция; если debit/credit — placeholder ## Почему не сработало Проект не был передеплоен. Docker-команды на macOS провалились: 1. `docker compose exec postgres psql -U budget_user` — не принял синтаксис `-U` на macOS Docker 2. `docker exec budget-app-postgres-1` — контейнера с таким именем нет (postgres — внешний, не в docker) 3. Код в контейнерах (budget-backend, budget-frontend) — старый, до правок ## Текущее состояние (на момент 2026-06-23 сессии) - postgres на хосте (Eagle), не в docker: `psql -h localhost -U budget_app -d budget_app` - БД: `transaction` (ед.ч.), есть колонка `is_placeholder` - Последние транзакции — из старого Excel-импорта (2024-12-21 и старше), все `is_placeholder=false` - Последний успешный билд и деплой — до правок is_placeholder ## Уроки 1. **После кода — деплой.** Код без деплоя эфемерен. Не считать задачу завершённой, пока `docker-compose build && docker-compose up -d` не отработали на production. 2. **Проверять деплой.** После деплоя — зайти на сайт и ввести тестовую транзакцию. Если в сумме не прибавилась — деплой не взлетел. 3. **Docker на macOS** — команды `docker compose exec ... -U` могут не работать из-за конфликта флагов. Лучше сразу `psql -h host.docker.internal` или прямой `psql` на хосте. 4. **Контейнер postgres** — если БД не в docker, не пытаться exec'ить. Сразу искать host-соединение.