Работа над журналом для ст. мед сестер

This commit is contained in:
brusnitsyn
2026-05-04 17:11:16 +09:00
parent f107ebd167
commit 7a58812072
61 changed files with 3532 additions and 1163 deletions

View File

@@ -4,6 +4,51 @@
## Что уже сделано
### 0. Обновление от 2026-04-27
Выполнен следующий шаг из handoff:
- добавлен `Infrastructure/Reports/Services/ReportStatisticsReadService`
- `ReportService::getReportStatistics` теперь делегирует в новый read-service
- из `ReportService` удалены legacy-private методы статистики:
- `getStatisticsFromSnapshots`
- `getStatisticsFromReplica`
- `getMetrikaResultCount`
- добавлена константа `MetrikaConfig::STAFF_COUNT`
- добавлены unit-тесты `ReportStatisticsReadServiceTest`
Выполнено продолжение:
- добавлен `Infrastructure/Reports/Services/ManualPatientManagementService`
- из `ReportService` вынесена orchestration manual/special пациентов:
- создание пациента
- исход пациента
- редактирование
- привязка к МИС
- операции manual/special пациента
- синхронизация manual-снапшотов
- `ReportService` сохраняет совместимые публичные методы, но теперь делегирует их в новый сервис
Выполнено финальное сужение legacy-фасада:
- добавлен `Infrastructure/Reports/Services/ReanimationIndicatorService`
- добавлен `Infrastructure/Reports/Services/ReportMetadataReadService`
- добавлен `Infrastructure/Reports/Services/ReportRuntimeService`
- добавлен `Infrastructure/Reports/Services/ReportSaveOrchestrator`
- добавлен `Infrastructure/Reports/Services/ObservationPatientManagementService`
- добавлен `Infrastructure/Reports/Services/ReportClinicalSearchService`
- legacy save fallback в `ReportSavePathService` больше не идёт через `ReportService`
- `LegacyReportServiceAdapter` больше не зависит от `ReportService`
- `ReportService` теперь совместимый фасад: публичные методы сохранены, бизнес-логика делегируется в новые сервисы
Проверка:
```bash
php artisan test tests/Unit/Reports
```
Результат: `19 passed`.
### 1. Базовый каркас Domain / Application / Infrastructure
Добавлены новые слои:
@@ -45,6 +90,13 @@
- `Infrastructure/Reports/Services/CalculatedMetricsSynchronizer`
- `Infrastructure/Reports/Services/SnapshotPersistenceService`
- `Infrastructure/Reports/Services/AutoFillReportPayloadBuilder`
- `Infrastructure/Reports/Services/ManualPatientManagementService`
- `Infrastructure/Reports/Services/ReanimationIndicatorService`
- `Infrastructure/Reports/Services/ReportMetadataReadService`
- `Infrastructure/Reports/Services/ReportRuntimeService`
- `Infrastructure/Reports/Services/ReportSaveOrchestrator`
- `Infrastructure/Reports/Services/ObservationPatientManagementService`
- `Infrastructure/Reports/Services/ReportClinicalSearchService`
### 4. Вынесены источники данных
Сейчас выделены отдельные источники:
@@ -79,10 +131,9 @@
## Что ещё специально НЕ сделано
- старый код не удалён
- старый `ReportService` не удалён, но теперь это совместимый фасад
- полный cutover на новую архитектуру не выполнен
- `getReportStatistics` пока ещё остаётся внутри `ReportService`
- часть legacy read/statistics логики ещё не вынесена в отдельный infrastructure/application слой
- контроллеры и `ReportPageService` всё ещё обращаются к `ReportService`, их можно переводить на конкретные сервисы после ручной проверки
- integration tests на SQLite здесь не гонялись, потому что в окружении нет `pdo_sqlite`
## Проверки и тесты
@@ -137,17 +188,15 @@ php artisan test tests/Unit/Reports
Следующая итерация:
1. Вынести `getReportStatistics` из `ReportService` в отдельный read-service.
2. Затем вынести snapshot/replica statistics orchestration в новый infrastructure/application слой.
3. После этого ещё сильнее сузить `ReportService` до legacy facade.
1. Перевести контроллеры и `ReportPageService` с `ReportService` на конкретные application/infrastructure сервисы.
2. После ручной проверки удалить `ReportService` как совместимый фасад.
3. После полного cutover удалить `LegacyAutoFillPatientSource`/legacy comparison-обвязку или оставить только как диагностический инструмент.
Рекомендуемое направление:
- создать что-то вроде `Infrastructure/Reports/Services/ReportStatisticsReadService`
- перевести туда:
- `getStatisticsFromSnapshots`
- `getStatisticsFromReplica`
- вспомогательные read-context части, если они ещё не покрыты `ReportReadContextResolver`
- `ReportService` уже оставлен тонким фасадом
- переиспользовать `ReportReadContextResolver` для периодов и snapshot-vs-replica решений
- не удалять legacy save-flow до полного cutover и сравнения old/new
## Если нужно быстро продолжить завтра
@@ -166,5 +215,4 @@ php artisan test tests/Unit/Reports
И дальше брать следующий шаг:
- перенос `getReportStatistics` в отдельный сервис
- перевод контроллеров с `ReportService` на конкретные сервисы