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