Conversation
…d patients classes into a separate class
…Info. fix: add summary
…tors, specializations, and appointments
…patients, doctors, specializations, and appointments
…ls in the Clinic API
…e registrations and Swagger integration
…octor data retrieval in the Clinic API
…inic.Tests project
…ecialization management in the Clinic API
…nt, and Specialization services, enhancing method naming and documentation
…ctor, patient, and specialization management in the Clinic API
…terface to include specialization update functionality
… and specialization management, consolidating common CRUD operations and enhancing code reusability
… Doctor, Specialization, and Appointment services, and add mapping for UpdateSpecializationDto
… Doctor, Patient, and Specialization management
…tion data access with CRUD operations
- Created ClinicDbFactory for design-time DbContext instantiation. - Added initial migration (20251219134315_InitialCreate) to set up database schema for Doctors, Patients, Specializations, Appointments, and DoctorSpecialization tables. - Implemented seed data migration (20251219134336_SeedData) to populate initial records for specializations, doctors, patients, and appointments. - Updated model snapshot to reflect the current state of the database schema.
…s to use base controller pattern
- Removed IClinicDataBase interface and its implementation. - Deleted DataSeed class for test data. - Updated Program.cs to configure Entity Framework and database context. - Created AnalyticsServices for analytics-related functionalities. - Refactored AppointmentServices, DoctorServices, PatientServices, and SpecializationServices to use specific data interfaces. - Updated appsettings for database connection strings and logging levels.
…ucture and functionality
…tructure and add Clinic.Application project
… and specializations
- Created CreateUpdateDoctorDto and GetDoctorDto for doctor management. - Added CreateUpdatePatientDto and GetPatientDto for patient management. - Introduced CreateUpdateSpecializationDto and GetSpecializationDto for specialization handling. - Implemented service interfaces for appointment, doctor, patient, and specialization management. - Established base service interface for CRUD operations. - Updated in-memory repositories to implement new interfaces. - Removed obsolete ServiceDefaults project and related files. - Added gRPC contract for appointment ingestion. - Updated solution file to reflect new project structure and references.
alxmcs
left a comment
There was a problem hiding this comment.
Если подводить итог:
- в проектах выбраны некорректные sdk,
- в проектах инвертирован информационный обмен по grpc,
- генератор контрактов не стартует,
- нарушена архитектура - независимые друг от друга сервисы вместо общей библиотеки контрактов имеют еще и общую базу.
- пересдача состоится завтра, а пул-риквест ты открыл сегодня.
Я понимаю, что это жест отчаяния, и рассчитан он был на то, что я скорее осведомлюсь о наличии кода, чем о его качестве. К общему нашему сожалению, я осведомился о качестве.
Очевидно, что исправить такие существенные архитектурные проблемы за оставшееся время ты не успеешь (или помрешь пытаясь, а мне потом посреди ночи это ревьюировать). Так что давай встретимся на комиссии.
There was a problem hiding this comment.
Тебе темплейты чем мешали? Будь добр, верни все обратно
| [HttpGet("doctors/experience")] | ||
| [ProducesResponseType(typeof(IReadOnlyList<GetDoctorDto>), StatusCodes.Status200OK)] |
There was a problem hiding this comment.
Здесь и далее по коду - нет атрибутов с респонс кодами метода контроллера
| /// <summary> | ||
| /// Controller for analytics and business logic queries about doctors, patients, and appointments. | ||
| /// </summary> | ||
| [ApiController] | ||
| [Route("api/analytics")] | ||
| public class AnalyticsController(AnalyticsServices testServices) : ControllerBase |
There was a problem hiding this comment.
Здесь и далее по коду - нет описания параметров службы в саммари
| /// gRPC service that ingests appointment contracts from a client stream | ||
| /// and persists mapped appointments to storage. | ||
| /// </summary> | ||
| public class ContractIngestService : ContractIngestor.ContractIngestorBase |
Clinic/Clinic.AppHost/AppHost.cs
Outdated
| .WithReference(postgresql) | ||
| .WithReference(api) |
There was a problem hiding this comment.
Генератору контрактов не нужны референсы ни к серверу апи, ни тем более к базе данных. Это полностью независимый сервис, который разделяет с апи сервером только контракты
There was a problem hiding this comment.
Я в каждом втором pr твоим одногруппникам писал, что сервис генерации не должен знать про базу. В итоге ты каплишь его и сервер апи по базе. Потрясающе.
На всякий случай - все pr твоих одногруппников находятся в этом же репозитории, они лежат в тут в открытом виде, на них можно посмотреть, чтобы не наступать на те же грабли, что и твои предшественники.
Говорить о том ,что этот класс нарушает SRP я уже не буду, потому что в том виде, в котором он существует сейчас, он существовать не должен
| </PropertyGroup> | ||
|
|
||
| <ItemGroup> | ||
| <PackageReference Include="Grpc.Net.Client" Version="2.64.0" /> |
There was a problem hiding this comment.
Генератор контрактов - не grpc-клиент, а grpc-сервер, так как он является источником данных. У тебя перепутано направление информационного обмена
| </ItemGroup> | ||
|
|
||
| <ItemGroup> | ||
| <Protobuf Include="Proto/appointment.proto" GrpcServices="Both" /> |
There was a problem hiding this comment.
Это не лучшее место для генерации контрактов - проекты, которые будут референсить эту библиотеку, получат лишний функционал - проекту, которому требуется grpc клиент достанется еще и сервер, проекту, которому требуется grpc сервер достанется еще и клиент
| <ItemGroup> | ||
| <PackageReference Include="Swashbuckle.AspNetCore" Version="8.0.0" /> | ||
| <PackageReference Include="AutoMapper" Version="13.0.1" /> | ||
| <PackageReference Include="Grpc.AspNetCore" Version="2.64.0" /> |
There was a problem hiding this comment.
Соответственно, сервер рестового апи в информационном обмене по grpc выступает клиентом. У тебя наоборот
…generator configuration


ФИО: Ксеневич Максим Станиславович
Номер группы: 6412
Номер лабораторной: 4
Номер варианта: 36
Краткое описание предметной области: Поликлиника
Краткое описание добавленных фич: Добавлена доменная модель/юнит-тесты/т.д.В ходе лабораторной работы спроектирован и внедрён сервис автоматической генерации пациентов, обменивающийся данными с основным сервером посредством потокового gRPC-канала. Вся система, включая генератор данных оркестрируется через .NET Aspire. Так же изменил структуру DTO, вместо отдельный CreateDto UpdateDto, создал один общий DTO CreateUpdate*Dto.
Немного структурировал проект.