Работа над журналом для ст. мед сестер
This commit is contained in:
@@ -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` на конкретные сервисы
|
||||
|
||||
Reference in New Issue
Block a user