diff --git a/personal/lessons/cashinput-is-placeholder-fail.md b/personal/lessons/cashinput-is-placeholder-fail.md new file mode 100644 index 00000000..0165ccc5 --- /dev/null +++ b/personal/lessons/cashinput-is-placeholder-fail.md @@ -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-соединение. diff --git a/personal/projects/budget-app/lessons.md b/personal/projects/budget-app/lessons.md new file mode 100644 index 00000000..3c5d7792 --- /dev/null +++ b/personal/projects/budget-app/lessons.md @@ -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`