Тек ҚР

Ақша сомасы: 500000

Өтінімдер саны: 2

Тапсырыс беруші
Шешімдерді қабылдау мерзімі

02.11.26 (қоса алғанда)

Марапаттау нысаны

денежное

Өнім күйі

Идея

Тапсырма түрі

Акт міндеттері

Сфера применения

Медиасфера

Область задачи

Басқа технологиялық шешімдер

Тапсырманың (жобаның) мақсаты мен сипаттамасы

Наш API-шлюз к языковым моделям ограничивает число запросов на каждый API-ключ, чтобы один клиент не расходовал общую квоту провайдера

Өнім түрі

БҚ/АЖ

Мәселенің сипаттамасы

Сервис на FastAPI с эндпоинтом POST /v1/echo, который принимает заголовок Authorization: Bearer <key>. На каждый ключ действует лимит N запросов за T секунд по скользящему окну; состояние хранится в Redis. При превышении - ответ 429 с заголовком Retry-After. Лимиты задаются через переменные окружения Django-проект с моделями Company и Task: название, email ответственного, cycle_days, дата последнего выполнения, статус. Метод Task.is_due(days_ahead) говорит, подходит ли срок. Ежедневная задача Celery beat находит задачи со сроком в ближайшие 3 дня и отправляет каждому ответственному одно письмо-дайджест (достаточно console email backend). Повторно в тот же день письмо не уходит. Отметка «выполнено» в Django admin сдвигает следующий срок Сервис на FastAPI + PostgreSQL: • POST /jobs — создать задание (prompt и параметры), статус queued. • POST /jobs/claim — воркер атомарно забирает одно задание через SELECT … FOR UPDATE SKIP LOCKED, статус running. • POST /jobs/{id}/complete и POST /jobs/{id}/fail — результат или ошибка. • GET /jobs/{id} — статус для клиента. Плюс воркер на Python, который в цикле забирает задания и имитирует генерацию (пауза и текстовый результат). Задания, которые висят в running дольше 10 минут, возвращаются в очередь. SPA на React + TypeScript (Vite). Данные — JSON на 500+ записей, сгенерированный скриптом: время, модель, статус (200 / 429 / 500), токены на вход и выход, задержка в мс, стоимость в $. На странице: • таблица с пагинацией и сортировкой по времени, задержке и стоимости; • фильтры по модели, статусу и датам, которые сохраняются в URL; • карточки итогов: число запросов, доля ошибок, средняя задержка, сумма; • график задержки по времени (Recharts или аналог). Данные загружаются через TanStack Query с имитацией сетевой задержки.

Tech-тапсырма
Күтілетін әсер

Репозиторий с README и docker-compose.yml (api + redis). Тесты pytest (можно с fakeredis): лимит не превышен; превышен; окно сдвинулось; разные ключи не влияют друг на друга. Репозиторий с README и docker-compose.yml (web, db, redis, celery, beat). Тесты pytest-django на is_due и на задачу рассылки. Репозиторий с README и docker-compose.yml (db, api, 2 воркера). Тесты: два воркера не получают одно задание; переходы статусов; возврат зависших заданий. Репозиторий с README и демо на GitHub Pages или Vercel. Тесты Vitest на функции фильтрации и подсчёта итогов.

Жауапты тұлғаның ТАӘ

Нижников Владимир Григорьевич

Ескерту