Files
interview-demo-code/.cursor/prompts/api-generation.md
Nikita Kiselev 9a93cc7342 feat: add Telegram customers management system with admin panel
Implement comprehensive Telegram customers storage and management functionality:

Backend:
- Add database migration for telecart_customers table with indexes
- Create TelegramCustomer model with CRUD operations
- Implement TelegramCustomerService for business logic
- Add TelegramCustomerHandler for API endpoint (saveOrUpdate)
- Add TelegramCustomersHandler for admin API (getCustomers with pagination, filtering, sorting)
- Add SendMessageHandler for sending messages to customers via Telegram
- Create custom exceptions: TelegramCustomerNotFoundException, TelegramCustomerWriteNotAllowedException
- Refactor TelegramInitDataDecoder to separate decoding logic
- Add TelegramHeader enum for header constants
- Update SignatureValidator to use TelegramInitDataDecoder
- Register new routes in bastion/routes.php and src/routes.php

Frontend (Admin):
- Add CustomersView.vue component with PrimeVue DataTable
- Implement advanced filtering (text, date, boolean filters)
- Add column visibility toggle functionality
- Add global search with debounce
- Implement message sending dialog with validation
- Add Russian locale for PrimeVue components
- Add navigation link in App.vue
- Register route in router

Frontend (SPA):
- Add saveTelegramCustomer utility function
- Integrate automatic customer data saving on app initialization
- Extract user data from Telegram.WebApp.initDataUnsafe

The system automatically saves/updates customer data when users access the Telegram Mini App,
and provides admin interface for viewing, filtering, and messaging customers.

BREAKING CHANGE: None
2025-11-23 21:30:51 +03:00

4.5 KiB
Raw Blame History

Промпты для генерации API

Создание нового API endpoint

Создай новый API endpoint [ENDPOINT_NAME] для [DESCRIPTION]:

1. Handler в [HANDLER_PATH]:
   - Метод handle() принимает Request
   - Валидация входных данных
   - Использование Service для бизнес-логики
   - Возврат JsonResponse с правильной структурой
   - Обработка ошибок с логированием

2. Service в [SERVICE_PATH]:
   - Бизнес-логика
   - Работа с Model
   - Валидация данных
   - Обработка исключений

3. Model в [MODEL_PATH] (если нужен):
   - Методы для работы с БД
   - Использование Query Builder
   - Типизация методов

4. Route в routes.php:
   - Добавь маршрут с правильным именем

5. Миграция (если нужна новая таблица):
   - Создай миграцию в database/migrations/
   - Используй фиксированный префикс telecart_
   - Добавь индексы где необходимо

Следуй архитектуре MVC-L проекта и используй существующие паттерны.

Создание CRUD API

Создай полный CRUD API для сущности [ENTITY_NAME]:

1. Handler с методами:
   - list() - список с пагинацией и фильтрацией
   - get() - получение одной записи
   - create() - создание
   - update() - обновление
   - delete() - удаление

2. Service с бизнес-логикой для всех операций

3. Model с методами:
   - findAll() - список
   - findById() - по ID
   - create() - создание
   - update() - обновление
   - delete() - удаление

4. DTO для валидации данных

5. Миграция для таблицы [TABLE_NAME]

6. Routes для всех endpoints

Используй серверную пагинацию, фильтрацию и сортировку для list().

Создание Admin API endpoint

Создай Admin API endpoint [ENDPOINT_NAME] в bastion/Handlers/:

1. Handler в bastion/Handlers/[HANDLER_NAME].php:
   - Используй Request для получения параметров
   - Валидация данных
   - Работа через Service
   - Возврат JsonResponse с структурой { data: { data: [...], totalRecords: ... } }
   - Обработка ошибок

2. Service в bastion/Services/ (если нужен):
   - Бизнес-логика для админки
   - Работа с Models

3. Route в bastion/routes.php

4. Frontend компонент (если нужен UI):
   - Vue компонент в frontend/admin/src/views/
   - Используй PrimeVue компоненты
   - Серверная пагинация/фильтрация
   - Обработка ошибок с toast уведомлениями

Следуй существующим паттернам проекта.

Создание Frontend API клиента

Создай функцию для работы с API endpoint [ENDPOINT_NAME]:

1. В frontend/[admin|spa]/src/utils/http.js:
   - Функция api[Method] для вызова endpoint
   - Правильная обработка ошибок
   - Возврат структурированного ответа

2. Использование:
   - В компонентах через import
   - Обработка loading states
   - Toast уведомления для ошибок

Следуй существующим паттернам в http.js.

Создание миграции

Создай миграцию для таблицы [TABLE_NAME]:

1. Файл: database/migrations/[TIMESTAMP]_[DESCRIPTION].php
2. Используй фиксированный префикс telecart_ для таблицы
3. Добавь все необходимые поля с правильными типами
4. Добавь индексы для часто используемых полей
5. Используй utf8mb4_unicode_ci collation
6. Используй InnoDB engine
7. Добавь created_at и updated_at timestamps
8. Не создавай foreign keys (используй только индексы)

Следуй структуре существующих миграций.