first commit
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled

This commit is contained in:
brusnitsyn
2026-04-06 00:06:00 +09:00
commit fb2e6c58e3
409 changed files with 42953 additions and 0 deletions

144
goals.md Normal file
View File

@@ -0,0 +1,144 @@
Проект: econom-calculator
Стек: Laravel 13, PHP 8.3, Inertia.js v3, Vue 3, Wayfinder, Pest, Tailwind v4.
Цель проекта:
Перенести Excel-логику в веб-приложение. Конечный целевой отчет — лист `АНАЛИЗ`.
Что выяснили по Excel:
- Итог книги — лист `АНАЛИЗ`.
- `Расход-2026` — отдельный ручной ввод расхода медикаментов.
- `2026` не является прямым автогенератором `Расход-2026`.
- Более вероятная логика листа `2026`:
- службы/отделения вводят, сколько услуг они оказали другим отделениям,
- у услуги есть стоимость,
- затем по получателям считаются затраты,
- эти затраты попадают в `АНАЛИЗ`.
- То есть правильная модель для аналога `2026`:
- отделение-исполнитель
- отделение-получатель
- услуга
- количество
- цена
- сумма
Что уже реализовано:
- Раздел `Справочники -> Отделения`
- Раздел `Отчеты -> Периоды`
- Раздел `Отчеты -> Объемные показатели`
- Раздел `Отчеты -> Расход медикаментов`
- Раздел `Отчеты -> Анализ`
Как сейчас устроена бизнес-модель:
1. `report_periods`
- период по команде (`team_id`, `year`, `month`, `status`)
- статус: `draft` / `approved`
2. `service_catalogs`
- каталог услуг
- поля:
- `code`
- `name`
- `unit`
- `default_price`
- `sort_order`
- `is_active`
3. `service_entries`
- журнал оказанных услуг
- поля:
- `report_period_id`
- `service_catalog_id`
- `provider_department_id`
- `recipient_department_id`
- `quantity`
- `unit_price`
4. `medication_expense_rows`
- строка расхода медикаментов на `период + отделение`
5. `medication_expense_values`
- детализация расхода по:
- источнику финансирования
- категории расхода
Справочники расхода медикаментов:
- funding_source:
- `oms`
- `budget`
- `paid`
- `vmp_oms`
- `vmp_budget`
- expense_category:
- `alcohol`
- `narcotic`
- `solutions`
- `medicines`
- `dressing`
Как сейчас должен работать пользовательский поток:
1. Создать отделения и профили отделений.
2. Создать период, например `Февраль 2026`.
3. В `Объемные показатели`:
- выбрать период
- выбрать отделение-исполнитель
- выбрать услугу
- ввести по каждому отделению-получателю:
- количество
- цену
- система считает сумму как `количество × цена`
4. В `Расход медикаментов`:
- выбрать период
- выбрать отделение
- ввести первичные суммы по сетке:
- источник финансирования
- категория расхода
5. В `Анализ`:
- выбрать период
- получить по каждому отделению:
- услуги и затраты по ним
- общий итог по услугам
- расход медикаментов
- итоговые расчетные поля
Что сейчас считает `Анализ`:
- входящие услуги по отделению-получателю
- затраты по каждой услуге
- общий итог по услугам
- расход без перевязки
- перевязка / ИМН
- общий расход медикаментов
- расход медикаментов без бюджета
Что НЕ сделано:
- `Приемник` не подключен
- `зарплата` не подключена
- нет полной копии всех строк и служебных блоков Excel
- нет полной сверки с реальным месяцем Excel
- нет импорта из Excel
- нет итоговых служебных групп, как в Excel
Что важно технически:
- Новая схема уже переосмыслена под `service_catalogs + service_entries`
- Старую упрощенную схему `operational_metric_catalogs + operational_values` лучше не возвращать
- `Анализ` должен дальше развиваться именно от модели услуг, а не от абстрактных показателей
Проблемы/ограничения окружения:
- Feature-тесты не запускаются, потому что в окружении нет `pdo_sqlite`
- Unit-тесты проходили
- Если миграции уже применялись на старой версии схемы, может потребоваться `php artisan migrate:fresh`
Что стоит проверить первым делом в новом чате:
1. Текущее состояние миграций и моделей реально соответствует `service_catalogs/service_entries`
2. Маршруты и Inertia-страницы не остались на старых `operational_*` сущностях
3. `Анализ` действительно читает услуги как затраты по получателям
4. Нужно ли сразу добавлять сверку с конкретным кейсом:
- КДЛ
- Гематологическое
- февраль
- 2471 услуг
Следующий логичный шаг:
- пройти по текущему коду и проверить, что весь проект консистентно переведен на модель услуг,
- потом взять 1 реальный кейс из Excel и вручную сверить расчет в UI и в `Анализе`.