How platypusjo/holidayplanning works
Назначение и запуск
HolidayPlanning — серверная система планирования мероприятий: праздники, участники, подрядчики, расходы, цели и справочники статусов/категорий. Основная точка запуска — ASP.NET API в HolidayPlanningApi/Program.cs; решение — HolidayPlanningApi/HolidayPlanningApi.sln. README упоминает TypeScript/CSS/Python, но дерево содержит реализованный .NET backend и пустой/неразвернутый HolidayPlanningClient.
HTTP boundary
Контроллеры предоставляют ресурсные API для доменов планирования и вызывают BLL-сервисы, изолируя HTTP от правил и хранения. Аутентификация выделена в HolidayPlanningApi/Controllers/AuthController.cs; ключевые ресурсы представлены HolidayPlanningApi/Controllers/HolidayController.cs, HolidayPlanningApi/Controllers/ExpenseController.cs и HolidayPlanningApi/Controllers/MemberController.cs.
Бизнес-слой и контрактные DTO
BLL определяет сервисные интерфейсы, CRUD-контракты и DTO, отделяющие API от persistence-entities. Общая сервисная база находится в BLL/Abstract/BaseService.cs; контракты — BLL/Intefaces/ICrud.cs и BLL/Intefaces/IHolidayService.cs; транспортные модели — BLL/DTOs/HolidayDto.cs, BLL/DTOs/ExpenseDto.cs, BLL/DTOs/PatchGoalStatusDto.cs. Patch DTO указывают на специализированные переходы статусов и оплаты, а не только полную замену ресурсов.
Предметные workflow
Центральный агрегат — праздник: BLL/Services/HolidayService.cs работает с участниками, расходами и планированием. Финансовый поток реализован через BLL/Services/ExpenseService.cs и BLL/Services/HolidayExpenseService.cs; подрядчики и их статусы — BLL/Services/ContractorService.cs и BLL/Services/ContractorStatusService.cs. Цели, участники, меню и категории оформлены как отдельные сервисы/справочники, что позволяет API независимо управлять каждым аспектом мероприятия.
Persistence boundary
DAL использует entity/repository/unit-of-work границу. EF-style контекст — DAL/Entities/HolidayPlanningDbContext.cs; транзакционная координация — DAL/Repositories/UnitOfWork.cs и DAL/Interfaces/IUnitOfWork.cs; базовые паттерны — DAL/Abstract/BaseRepository.cs и DAL/Interfaces/IRepository.cs. Репозитории специализированы для основных агрегатов, например DAL/Repositories/HolidayRepository.cs и DAL/Repositories/ExpenseRepository.cs.
Модели и преобразование данных
Реляционные сущности находятся в DAL/Entities/Holiday.cs, DAL/Entities/Member.cs, DAL/Entities/Contractor.cs, DAL/Entities/Goal.cs и DAL/Entities/Expense.cs. Конвертеры являются явной anti-corruption границей между entity и DTO: DAL/Abstract/BaseConverter.cs, DAL/Converters/HolidayConverter.cs, DAL/Converters/MemberConverter.cs. Статусы частично централизованы через enum/provider: DAL/Enums/ContractorStatusEnum.cs и DAL/Providers/ContractorStatusProvider.cs.
Runtime и инфраструктура
Материальный runtime — ASP.NET/.NET API с настройками окружений в HolidayPlanningApi/appsettings.json и HolidayPlanningApi/appsettings.Development.json. Внешняя инфраструктура непосредственно не раскрыта деревом; конфигурация подключения и сервисов должна происходить через эти settings и регистрацию в HolidayPlanningApi/Program.cs. Автотесты в основном проверяют конвертацию DAL-моделей, например HolidayPlanningTests/HolidayConverterTests.cs.
Main entry points: ICrud.cs CRUD service contracts · HolidayService.cs Holiday workflow · UnitOfWork.cs Unit of work · Program.cs API bootstrap
Components 18
ASP.NET API
- API bootstrap · Registers HTTP pipeline and application services.
HolidayPlanningApi/Program.cs - Environment settings · Provides connection and service configuration.
HolidayPlanningApi/appsettings.json - Authentication API
HolidayPlanningApi/Controllers/AuthController.cs - Planning resource APIs · Holiday, expense, and member endpoints.
HolidayPlanningApi/Controllers/HolidayController.cs
Business layer
- CRUD service contracts
BLL/Intefaces/ICrud.cs - Holiday service contract
BLL/Intefaces/IHolidayService.cs - Planning DTOs · Includes resource and status/payment patch models.
BLL/DTOs/HolidayDto.cs - Service base
BLL/Abstract/BaseService.cs - Holiday workflow · Coordinates event participants, expenses, and planning.
BLL/Services/HolidayService.cs - Expense workflow · Manages expenses and holiday-expense relations.
BLL/Services/ExpenseService.cs - Contractor workflow · Manages contractors and contractor statuses.
BLL/Services/ContractorService.cs
Persistence layer
- Unit of work
DAL/Repositories/UnitOfWork.cs - Repository base
DAL/Abstract/BaseRepository.cs - Aggregate repositories · Holiday and expense persistence operations.
DAL/Repositories/HolidayRepository.cs - Entity–DTO converters · Separates persistence entities from service DTOs.
DAL/Converters/HolidayConverter.cs - Planning entities · Holiday, member, contractor, goal, and expense records.
DAL/Entities/Holiday.cs - Planning DbContext
DAL/Entities/HolidayPlanningDbContext.cs - Contractor status provider · Centralizes contractor status values.
DAL/Providers/ContractorStatusProvider.cs
Connections 24
- Environment settings → API bootstrap: configures
- API bootstrap → Authentication API: routes
- API bootstrap → Planning resource APIs: routes
- Planning resource APIs → Holiday service contract: uses
- Planning resource APIs → CRUD service contracts: uses
- Authentication API → CRUD service contracts: uses services
- Holiday service contract → Holiday workflow: implemented by
- CRUD service contracts → Holiday workflow: implemented by
- CRUD service contracts → Expense workflow: implemented by
- CRUD service contracts → Contractor workflow: implemented by
- Holiday workflow → Service base: extends
- Holiday workflow → Planning DTOs: exchanges
- Expense workflow → Planning DTOs: exchanges
- Holiday workflow → Unit of work: persists through
- Expense workflow → Unit of work: persists through
- Contractor workflow → Unit of work: persists through
- Contractor workflow → Contractor status provider: uses statuses
- Unit of work → Aggregate repositories: coordinates
- Aggregate repositories → Repository base: extends
- Aggregate repositories → Planning entities: reads and writes
- Entity–DTO converters → Planning DTOs: maps to
- Entity–DTO converters → Planning entities: maps from
- Unit of work → Planning DbContext: commits via
- Planning DbContext → Planning entities: tracks