Перейти к содержанию

NestJS 12: API заявок «Диспетчер»

«Диспетчер» — общий учебный проект кабинета заявок и API. Этот курс содержит 14 самостоятельных учебных результатов и одну полную конечную версию исходников. Исходные записи: rq-101 «Заменить проектор», rq-102 «Настроить Wi-Fi», rq-103 «Подготовить переговорную». Статусы new/active/done, version и HTTP-формы одинаковы в обоих курсах.

Последовательность результатов

Урок Полученный учебный результат
1. NestJS и договор API диспетчера Определить данные и локальную точку входа ESM API.
2. Модули Nest и область доступности provider Собрать TicketsModule и отдельный DatabaseModule.
3. Providers и разделение HTTP, правил и SQL Связать service с repository без SQL в controller.
4. Контроллер заявок и HTTP-маршруты Связать GET и PATCH с параметрами и DTO.
5. DTO и проверка тела PATCH Отклонять неизвестные и неверные поля до SQL.
6. Query DTO и буквальный поиск заявок Ограничить q/status и согласовать поиск с клиентом.
7. Guards и серверное право изменения Различать удостоверение demo actor и роль PATCH.
8. Interceptor и идентификатор запроса Связать ответ и журнал через requestId без изменения JSON.
9. PostgreSQL и жизненный цикл пула Подготовить таблицы и один владелец pg Pool.
10. Репозиторий и параметризованные запросы Читать список и Ticket без SQL в controller.
11. Транзакция изменения и конфликт version Атомарно обновить Ticket и ticket_events с проверкой основы.
12. Фильтр исключений и единый ответ отказа Возвращать statusCode/code/message/requestId без внутренних данных.
13. OpenAPI и согласованная документация API Описать запросы и ответы без подмены runtime validation.
14. Конфигурация и передача NestJS API Передать ESM API, SQL и ожидаемые сценарии без ложного отчёта.

Профиль и исходники

Nest common/core/platform-express 12.0.1 (ESM), config 12.0.1, swagger 12.0.2, TypeScript 6.0.3, RxJS 7.8.2, pg 8.16.3, PostgreSQL 18, Node 22.22.3+ внутри 22.x. Сервер изучается без Angular: собственные SQL, CONTRACT.md и читательские HTTP-примеры включены. Модули, DTO, guards/interceptors, repository, transaction и error envelope продолжают одну модель.

Скачать одну полную конечную версию. Внутри README задаёт действия читателя, выбранные зависимости и границы; CONTRACT.md описывает API. Ранние листинги статьи названы упрощённым учебным состоянием либо фрагментом, поэтому архив не накладывается как комплект снимков каждого шага. Lockfile отсутствует: npm tree не разрешалось.

example_execution: not_run. Пакеты не устанавливались; программы, SQL, HTTP, миграции, тесты и измерения не запускались. Все реакции, status и JSON в уроках ожидаемые. Авторская проверка ограничена чтением официальных источников и просмотром текста/структуры файлов. Сборка страниц сайта не подтверждает выполнение учебного проекта.

Границы лаборатории

Один общий список, первые 200 совпадений и total без следующей страницы. Учебные tokens публичны, Nest слушает loopback: настоящие аккаунты, tenants и production-доступ не реализованы. PATCH требует title/status/version и атомарно меняет Ticket вместе с журналом. 409 оставляет Angular-черновик, reload заменяет его явно. Потеря ответа после COMMIT неоднозначна; idempotency и автоматический merge отсутствуют. Fixture не хранит данные между перезагрузками или вкладками.

Соседний курс: Angular кабинет. Общий маршрут: интерактивная веб-разработка.