Формат: удалённо, частичная или полная занятость Договор: ИП или самозанятый (СМЗ/НПД) Оплата: почасовая, кандидат указывает свою ставку при отклике Интервью: 30-минутный технический созвон (разбор архитектуры и кода)
Проект
Делаем модуль массового импорта учеников в админ-панели: загрузка .xlsx, асинхронная обработка в фоне, статус/лог в реальном времени, отчёты об ошибках и повторный импорт проблемных строк. Требования по производительности, надёжности и безопасности уже описаны в BRD.
Основные задачи
Бэкенд (NestJS, TypeScript)
REST API для запуска/мониторинга Import Job, WS для прогресса.
Очередь фоновой обработки (BullMQ/RabbitMQ/Kafka) с ретраями и идемпотентностью.
Валидации и нормализация данных (даты, пол, СНИЛС, контакты).
Политика дедупликации: ATTACH_ONLY и UPSERT (whitelist полей).
RBAC, аудит действий, маскирование PII в логах/метриках.
Экспорт отчётов (CSV/XLSX), пагинация списков.
Фронтенд (Vue3 + Quasar)
Страница «Массовый импорт учеников»: загрузка файла, выбор владельца группы, имя группы, запуск.
Страница статуса Import Job: прогресс (total/ok/error/pending), лента событий, кнопки «Скачать ошибки», «Повторить проблемные».
Список «Группы учеников» с поиском/пагинацией; карточка группы со списком участников.
Наблюдаемость и качество
Метрики (Prometheus/Grafana): p95 времени импорта, TPS, % ошибок, размер очереди.
Sentry/логирование: job_id, row_no, error_code; алёрты по SLO.
Стек
Backend: NestJS, TypeScript, Node.js, BullMQ/RabbitMQ, Prisma/TypeORM, PostgreSQL, Redis
Frontend: Vue 3, Quasar (SSR/SPA), Pinia/TanStack Query, Vite
Инфраструктура: Docker, Traefik/NGINX, Sentry, Prometheus/Grafana
Форматы: XLSX, WebSocket
Требования
Уверенно: очереди задач, транзакции, идемпотентность, конкуренция воркеров.
Работа с PostgreSQL (индексы, upsert, оптимизация запросов), Redis.
Опыт обработки файлов (XLSX) и серверной валидации данных.
Понимание PII/безопасности (маскирование, ограничение прав, аудит).
Стиль кода: функциональный подход, иммутабельность, чистые функции;
Будет плюсом
Опыт в Quasar SSR,WS-стримингах, BullMQ;
Интеграция метрик (Prometheus), алёртов и Sentry релизов.
Условия
Договор: ИП или самозанятый (СМЗ/НПД).
Оплата: почасовая (заявите свою ставку, валюту и доступность по часам/неделю). Выплаты по завершённым этапам.
График: гибкий, синхронизация по MSK приветствуется.
Процессы: ревью кода, документация API.
Критерии успеха (SLO/Definition of Done)
Импорт 500 строк: p95 ≤ 60 с при нормальной нагрузке.
Статус виден пользователю ≤ 1 с после запуска.
Дубликаты: 0% в режиме ATTACH_ONLY; корректный UPSERT по whitelist.
Отчёт ошибок: полный, с row_no, error_code, рекомендацией по исправлению.
Метрики/логи/алёрты подключены, PII замаскированы.
Процесс отбора
Отклик: короткое письмо + ссылки + ставка.
30-мин техсозвон: архитектура импорта, идемпотентность, конкуренция воркеров, схема БД, UX статуса. |