Skip to content

Реализовать Task API на .NET 9 - #1

Merged
PANiXiDA merged 8 commits into
developmentfrom
feature/implement-task-api
Oct 16, 2026
Merged

PANiXiDA merged 8 commits into
developmentfrom
feature/implement-task-api

Conversation

@PANiXiDA

@PANiXiDA PANiXiDA commented Oct 16, 2026 •

Copy link
Copy Markdown
Owner

Реализует четыре эндпоинта задач из ТЗ на ASP.NET Core Minimal API, PostgreSQL / EF Core и RabbitMQ. Структура слоёв взята из dotnet-backend-template; PANiXiDA.Core не используется. Добавлены миграции БД, валидация, UTC-метки с точностью до микросекунды и RowVersion через PostgreSQL xmin: при конкурентном завершении один запрос получает 200, второй — 409.

POST возвращает Location /tasks/{id}. Проверки названия, приоритета и состояния завершения выполняет приложение; миграция RemoveTaskCheckConstraints удаляет прежние CHECK-ограничения из существующей БД без потери задач. NOT NULL и ограничения длины полей сохранены.

Application сгруппирован в Tasks/Create, GetList, Complete и Delete: отдельные команды/запрос и обработчики, общие интерфейсы в Abstractions. Presentation повторяет фичи в Features/Tasks с отдельными endpoints, DTO и mappers; TasksEndpoints регистрирует группу /tasks. HTTP-маршруты, JSON и статусы сохранены. Unit-тесты обработчиков следуют тем же папкам фич.

Событие task.completed ставится в фоновую очередь только после успешного сохранения. Publisher использует один асинхронный RabbitMQ-канал; при ошибке или переполнении логирует JSON события. На остановку отводится 4 секунды для завершения публикаций и до 1 секунды для закрытия соединения. Доставка best-effort, без outbox и confirms, согласно ТЗ.

Обычный Docker Compose поднимает API, PostgreSQL и RabbitMQ с веб-панелью на localhost:15672. Демонстрационные учётные данные настроены, опубликованные порты привязаны к loopback. README содержит последовательную инструкцию для заказчика: установка Docker, получение проекта из GitHub, запуск сервиса, вход в RabbitMQ с указанными портом и учётными данными, ручная проверка через PowerShell, остановка и повторный запуск. Просмотр результатов CI вынесен в раздел тестов.

Тесты организованы по образцу Tactical Heroes API:

  • UnitTests: домен, обработчики фич, порядок сохранения и публикации, обработка ошибок, очередь и остановка publisher.
  • IntegrationTests: настоящий PostgreSQL, миграции и ограничения, xmin, сортировка и удаление; RabbitMQ transport, JSON-контракт и повторное соединение.
  • FunctionalTests: HTTP API через WebApplicationFactory, валидация, CRUD, гонка запросов, ошибка сохранения и недоступный брокер.

Все Fact/Theory имеют русские DisplayName. Тесты запускаются через dotnet test; Testcontainers автоматически создаёт и удаляет отдельные БД и брокер. Тестовые Dockerfile и Compose удалены. Общий PANiXiDA-Infrastructure/ci-cd/dotnet-tests.yml запускает три проекта на GitHub runner, публикует TRX и покрытие. SDK 10 и xUnit v3/Microsoft.Testing.Platform используются для совместимости с шаблоном; target framework всех проектов и runtime приложения остаются .NET 9.

Проверка коммита 815c884 выполнена только в GitHub Actions, без локального запуска тестов: 21 unit + 9 integration + 20 functional = 50 прошедших тестов, без пропусков. Проверены Location при создании задачи, Unicode-пробелы в названии и обновление исходной схемы БД с сохранением данных и удалением CHECK-ограничений. Сборка рабочего Docker-образа и публикация отчётов также прошли: https://github.com/PANiXiDA/task-api/actions/runs/38943183690 .

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-16T18:18:49.706128Z 815c884 Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@PANiXiDA

Copy link
Copy Markdown
Owner Author

@codex

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9cf2d54119

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/Tasks/PANiXiDA.TaskApi.Tasks.Infrastructure/Persistence/TasksDbContext.cs Outdated
@PANiXiDA

Copy link
Copy Markdown
Owner Author

@codex

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Another round soon, please!

Reviewed commit: 815c88464d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@PANiXiDA
PANiXiDA merged commit 8c54edd into development Oct 16, 2026
6 checks passed
@PANiXiDA
PANiXiDA deleted the feature/implement-task-api branch October 16, 2026 18:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants