Files
econom/goals.md
brusnitsyn fb2e6c58e3
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
first commit
2026-04-06 00:06:00 +09:00

145 lines
6.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Проект: 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 и в `Анализе`.