38 lines
3.1 KiB
Markdown
38 lines
3.1 KiB
Markdown
# 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-соединение.
|