[2026-06-28] eagle: personal/lessons/cashinput-is-placeholder-fail.md personal/projects/budget-app/lessons.md

This commit is contained in:
Alexey Martemyanov
2026-06-28 20:52:16 +06:00
parent 74b2901b6d
commit 7b733441d0
2 changed files with 56 additions and 0 deletions
@@ -0,0 +1,37 @@
# 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-соединение.
+19
View File
@@ -0,0 +1,19 @@
# Budget App
...
### CashInput избираем по валюте + is_placeholder (2026-06-23)
См. `personal/lessons/cashinput-is-placeholder-fail.md` — код написан, но **не задеплоен**.
Ключевое:
- Колонка `is_placeholder` в БД — есть
- Фронт CashInput.vue — переписан на выбор по валюте, is_placeholder для debit/credit
- Деплой не взлетел — код висит только в исходниках на Mac
- Последняя транзакция не сохранилась, потому что production код старый
### Lessons
- Не считать задачу блядски завершённой, пока `docker-compose build && docker-compose up -d` не отработали
- После деплоя — ввести тестовую транзакцию и проверить в БД
- `docker compose exec` может не работать с `-U` на macOS — использовать прямой `psql -h localhost`