[2026-06-28] taiga-vault: personal/lessons/cashinput-is-placeholder-fail.md personal/projects/budget-app/lessons.md
This commit is contained in:
@@ -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-соединение.
|
||||||
@@ -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`
|
||||||
Reference in New Issue
Block a user