Трекер спринты & задачи
−77д
Flutter проект, Riverpod, go_router, dio
Mobile
S1 10.05.2026 В работе
−77д
Дизайн-токены (цвета, типографика) из shared-настроек
Mobile
S1 10.05.2026 К работе
−77д
Splash → онбординг (3 экрана можно пропустить) → ввод телефона → ввод кода → главная-заглушка
Mobile
S1 10.05.2026 К работе
−77д
JWT в flutter_secure_storage
Mobile
S1 10.05.2026 К работе
−77д
Sentry подключён
Mobile
S1 10.05.2026 К работе
−77д
Yandex Cloud аккаунт, биллинг
DevOps
S1 10.05.2026 К работе
−77д
Managed Postgres staging (минимальный план)
DevOps
S1 10.05.2026 К работе
−77д
VM staging: docker-compose с FastAPI + Caddy
DevOps
S1 10.05.2026 К работе
−77д
Домены: `app.example.kz` (mobile API), `example.kz` (web), `admin.example.kz`
DevOps
S1 10.05.2026 К работе
−77д
SSL через Caddy auto
DevOps
S1 10.05.2026 К работе
−77д
Apple Developer + Google Play аккаунты (запускаем сразу — на верификацию уйдёт неделя)
DevOps
S1 10.05.2026 К работе
−77д
**Kaspi merchant-заявка подаётся в неделе 1.** При подаче спросить: (а) обязателен ли IPSec VPN для нашего объёма или достаточно HTTPS-only, (б) sandbox-доступ для тестов в S3. См. `docs/07_refunds.md` §6 — если IPSec обязателен, это +1 неделя DevOps в S6.
DevOps
S1 10.05.2026 К работе
−77д
SMS-авторизация работает на всех трёх клиентах
DevOps
S1 10.05.2026 В работе
−77д
API на staging, web на staging, mobile собирается под Android в CI
DevOps
S1 10.05.2026 К работе
−77д
Sentry получает тестовые ошибки
DevOps
S1 10.05.2026 К работе
−63д
**Интеграция с 1С — входящая часть:**
Backend
S2 24.05.2026 В работе
−63д
`/catalog` — список с фильтрами в URL (SSR для SEO)
Frontend
S2 24.05.2026 К работе
−63д
`/catalog/[category]/[subcategory]` — те же фильтры, фиксированная категория
Frontend
S2 24.05.2026 К работе
−63д
`/product/[slug]` — карточка с галереей фото, выбором размера, кнопкой «в корзину»
Frontend
S2 24.05.2026 К работе
−63д
Поиск в хедере с подсказками (debounce 300ms)
Frontend
S2 24.05.2026 К работе
−63д
Lazy load: «Показать ещё»
Frontend
S2 24.05.2026 К работе
−63д
Карточка товара показывает «похожие из категории» (один SQL-запрос на бэке)
Frontend
S2 24.05.2026 К работе
−63д
`/admin/products` — таблица с inline-edit цены и остатков
Frontend
S2 24.05.2026 К работе
−63д
`/admin/products/new` и `/admin/products/[id]` — форма с загрузкой фото в S3
Frontend
S2 24.05.2026 К работе
−63д
`/admin/categories` — древовидный список (2 уровня)
Frontend
S2 24.05.2026 К работе
−63д
Markdown textarea для описания товара (без WYSIWYG)
Frontend
S2 24.05.2026 К работе
−63д
Список категорий
Mobile
S2 24.05.2026 К работе
−63д
Список товаров с lazy load
Mobile
S2 24.05.2026 К работе
−63д
Карточка с галереей (PageView), выбор размера через bottom sheet
Mobile
S2 24.05.2026 К работе
−63д
Поиск с подсказками
Mobile
S2 24.05.2026 К работе
−63д
Заглушка «в корзину» (логика в Sprint 3)
Mobile
S2 24.05.2026 К работе
−63д
S3 bucket настроен (Yandex Object Storage), CORS для прямых загрузок
DevOps
S2 24.05.2026 К работе
−63д
IP whitelist на endpoint `/api/1c/*` (после уточнения IP заказчика)
DevOps
S2 24.05.2026 К работе
−63д
1С присылает остатки → товар виден на сайте и в мобилке через 5 минут
DevOps
S2 24.05.2026 К работе
−63д
Поиск с опечаткой работает (`pg_trgm` похожести)
DevOps
S2 24.05.2026 К работе
−63д
Lighthouse > 80 на карточке товара (без CDN)
DevOps
S2 24.05.2026 К работе
−49д
`POST /orders` — создание заказа:
Backend
S3 07.06.2026 К работе
−49д
Проверка остатков (без блокировки на старте — оптимистично)
Backend
S3 07.06.2026 К работе
−49д
Создание `Order` со статусом `created`
Backend
S3 07.06.2026 К работе
−49д
Создание `Payment` со статусом `pending`
Backend
S3 07.06.2026 К работе
−49д
Если `payment_method = kaspi` — обращение к Kaspi API за `qr_url`
Backend
S3 07.06.2026 К работе
−49д
Если `payment_method = cash_on_delivery` — статус заказа сразу `confirmed`
Backend
S3 07.06.2026 К работе
−49д
`POST /webhooks/kaspi` с HMAC-проверкой:
Backend
S3 07.06.2026 К работе
−49д
Идемпотентность по `external_id` (UNIQUE constraint в БД)
Backend
S3 07.06.2026 К работе
−49д
При `paid` — обновление статуса заказа, BackgroundTask на push+SMS
Backend
S3 07.06.2026 К работе
−49д
`GET /orders` — история заказов пользователя
Backend
S3 07.06.2026 К работе
−49д
`GET /orders/{id}` — детали заказа
Backend
S3 07.06.2026 К работе
−49д
`/cart` — корзина с inline-изменением количества
Frontend
S3 07.06.2026 К работе
−49д
Поле для промокода
Frontend
S3 07.06.2026 К работе
−49д
`/checkout` — выбор способа доставки (заглушка), адреса (заглушка), способа оплаты
Frontend
S3 07.06.2026 К работе
−49д
После создания заказа → страница с QR Kaspi или статусом «принят к оплате»
Frontend
S3 07.06.2026 К работе
−49д
`/account/orders` — список заказов
Frontend
S3 07.06.2026 К работе
−49д
`/account/orders/[id]` — детали заказа
Frontend
S3 07.06.2026 К работе
−49д
Polling статуса заказа на странице ожидания оплаты (раз в 5 сек, 5 минут максимум)
Frontend
S3 07.06.2026 К работе
−49д
`/admin/orders` — таблица заказов с фильтрами по статусу и дате
Frontend
S3 07.06.2026 К работе
−49д
`/admin/orders/[id]` — детали + кнопки смены статуса
Frontend
S3 07.06.2026 К работе
−49д
`/admin/promo` — CRUD промокодов
Frontend
S3 07.06.2026 К работе
−49д
Корзина (с локальным кешем Hive для оффлайна)
Mobile
S3 07.06.2026 К работе
−49д
Чекаут с выбором способа оплаты
Mobile
S3 07.06.2026 К работе
−49д
Открытие Kaspi через deep link `kaspi://`
Mobile
S3 07.06.2026 К работе
−49д
Возврат в приложение через universal link
Mobile
S3 07.06.2026 К работе
−49д
История заказов в ЛК
Mobile
S3 07.06.2026 К работе
−49д
Polling статуса последнего pending-заказа
Mobile
S3 07.06.2026 К работе
−49д
Kaspi merchant-аккаунт (запросить у заказчика, sandbox для тестов)
DevOps
S3 07.06.2026 К работе
−49д
Webhook-домен с whitelist IP Kaspi
DevOps
S3 07.06.2026 К работе
−49д
Платёжные секреты в `.env` на сервере (без Lockbox — `.env` через SSH)
DevOps
S3 07.06.2026 К работе
−49д
Полный путь: каталог → корзина → промокод → чекаут → Kaspi QR → оплата → статус paid
DevOps
S3 07.06.2026 К работе
−49д
На мобилке тот же путь через deep link
DevOps
S3 07.06.2026 К работе
−49д
Тестовый платёж в sandbox Kaspi прошёл
DevOps
S3 07.06.2026 К работе
−49д
Создание заказа (резерв остатков)
DevOps
S3 07.06.2026 К работе
−49д
Webhook Kaspi (идемпотентность)
DevOps
S3 07.06.2026 К работе
−49д
Расчёт суммы (промокод + округления)
DevOps
S3 07.06.2026 К работе
−35д
Модель `Address`, CRUD
Backend
S4 21.06.2026 К работе
−35д
В `Order` добавляется `delivery_method` (pickup | courier), `pickup_store_id NULL`, `delivery_address_id NULL`, `delivery_cost`
Backend
S4 21.06.2026 К работе
−35д
Список магазинов для самовывоза = enum в коде или табличка `pickup_points` (id, name, address, working_hours)
Backend
S4 21.06.2026 К работе
−35д
Цена курьерской доставки = фикс по городу (одно значение в env или конфиге)
Backend
S4 21.06.2026 К работе
−35д
Статусы заказа: `created → confirmed → packing → shipped → delivered` (для самовывоза вместо `shipped` — `ready_for_pickup`)
Backend
S4 21.06.2026 К работе
−35д
При смене статуса в админке → BackgroundTask на push + SMS
Backend
S4 21.06.2026 К работе
−35д
`POST /devices/register` — регистрация FCM-токена
Backend
S4 21.06.2026 К работе
−35д
Шаблоны уведомлений в коде (русский язык, простые)
Backend
S4 21.06.2026 К работе
−35д
В чекауте — выбор «самовывоз» / «курьер»
Frontend
S4 21.06.2026 К работе
−35д
Самовывоз: выпадашка магазинов
Frontend
S4 21.06.2026 К работе
−35д
Курьер: выбор адреса из сохранённых или ввод нового
Frontend
S4 21.06.2026 К работе
−35д
`/account/addresses` — управление адресами (один основной, несколько дополнительных)
Frontend
S4 21.06.2026 К работе
−35д
`/account/orders/[id]` — таймлайн статусов с датами
Frontend
S4 21.06.2026 К работе
−35д
`/admin/orders/[id]` — кнопки перехода между статусами с подтверждением
Frontend
S4 21.06.2026 К работе
−35д
При смене статуса автоматически шлются push+SMS клиенту
Frontend
S4 21.06.2026 К работе
−35д
Регистрация FCM-токена при логине, повторная при смене юзера
Mobile
S4 21.06.2026 К работе
−35д
Обработка push:
Mobile
S4 21.06.2026 К работе
−35д
Foreground: показать в шторке
Mobile
S4 21.06.2026 К работе
−35д
Background: показать notification
Mobile
S4 21.06.2026 К работе
−35д
Tap → deep link на экран заказа
Mobile
S4 21.06.2026 К работе
−35д
Адреса в ЛК
Mobile
S4 21.06.2026 К работе
−35д
Выбор магазина / адреса в чекауте
Mobile
S4 21.06.2026 К работе
−21д
Модели `GiftCard`, `Outbox`
Backend
S5 05.07.2026 К работе
−21д
API:
Backend
S5 05.07.2026 К работе
−21д
`POST /gift-cards/purchase` — покупка карты (создаётся `Order` типа `gift_card`)
Backend
S5 05.07.2026 К работе
−21д
При оплате карты → BackgroundTask: генерация уникального 16-символьного кода, SMS получателю с кодом и текстом отправителя
Backend
S5 05.07.2026 К работе
−21д
`POST /gift-cards/check` — проверка баланса по коду (без логина)
Backend
S5 05.07.2026 К работе
−21д
`POST /cart/apply-gift-card` — применение карты в корзине (полное или частичное списание)
Backend
S5 05.07.2026 К работе
−21д
В чекауте логика смешанной оплаты: `gift_card_amount + kaspi_amount = total`
Backend
S5 05.07.2026 К работе
−21д
При оплате частично картой — списываем баланс, остальное через Kaspi
Backend
S5 05.07.2026 К работе
−21д
**1С исходящий через outbox:**
Backend
S5 05.07.2026 К работе
−21д
При оплате заказа → INSERT в `outbox` со статусом `pending`, payload = заказ для 1С
Backend
S5 05.07.2026 К работе
−21д
Cron-скрипт каждую минуту: SELECT `pending` LIMIT 10 → POST в 1С → UPDATE `sent` или INCREMENT retries (max 5, потом `failed` + Sentry-алерт)
Backend
S5 05.07.2026 К работе
−21д
Эндпоинт `/admin/outbox/{id}/retry` для ручного повтора `failed`
Backend
S5 05.07.2026 К работе
−21д
API избранного: `GET/POST/DELETE /favorites`
Backend
S5 05.07.2026 К работе
−21д
**Refunds через Kaspi (см. `docs/07_refunds.md`):**
Backend
S5 05.07.2026 К работе
−21д
Таблица `refund` + enum `refund_status`
Backend
S5 05.07.2026 К работе
−21д
`POST /admin/orders/{id}/refunds` — инициация
Backend
S5 05.07.2026 К работе
−21д
Расчёт смешанного возврата (gift_card + Kaspi пропорционально)
Backend
S5 05.07.2026 К работе
−21д
Cron `kaspi_refund_dispatcher` (5 мин) + `kaspi_refund_polling` (15 мин)
Backend
S5 05.07.2026 К работе
−21д
Webhook `refund.completed` в существующий `/webhooks/kaspi`
Backend
S5 05.07.2026 К работе
−21д
Outbox-тип `order_refund_to_1c`
Backend
S5 05.07.2026 К работе
−21д
`/gift-cards` — витрина (выбор номинала из 5 предустановленных, ввод телефона получателя и текста)
Frontend
S5 05.07.2026 К работе
−21д
В чекауте: поле для кода карты + проверка баланса в реальном времени
Frontend
S5 05.07.2026 К работе
−21д
`/account/orders/[id]` — отображение использованной карты в деталях заказа
Frontend
S5 05.07.2026 К работе
−21д
`/admin/gift-cards` — список карт + кнопка «выпустить вручную» (для маркетинга)
Frontend
S5 05.07.2026 К работе
−21д
`/admin/outbox` — таблица с фильтром по статусу + кнопка retry для failed
Frontend
S5 05.07.2026 К работе
−21д
`/admin/orders/[id]` — секция «Возвраты»: кнопка «Сделать возврат», список refunds со статусом, retry для failed
Frontend
S5 05.07.2026 К работе
−21д
`/admin/refunds` — общий список со всеми возвратами и фильтрами
Frontend
S5 05.07.2026 К работе
−21д
`/account/orders/[id]` — отображение `totalRefunded` и списка completed refunds клиенту
Frontend
S5 05.07.2026 К работе
−21д
`/account/favorites` — список избранных товаров
Frontend
S5 05.07.2026 К работе
−21д
Раздел «Подарочные карты» в каталоге
Mobile
S5 05.07.2026 К работе
−21д
Покупка карты (тот же чекаут-флоу что обычные товары)
Mobile
S5 05.07.2026 К работе
−21д
Активация карты — поле в чекауте + Deep link из SMS открывает приложение с предзаполненным кодом
Mobile
S5 05.07.2026 К работе
−21д
Сердечко на карточке товара + раздел «Избранное» в профиле
Mobile
S5 05.07.2026 К работе
−21д
Полный флоу: покупка карты → SMS получателю → активация в чекауте → оплата с использованием баланса
Mobile
S5 05.07.2026 К работе
−21д
Заказы автоматически уходят в 1С через outbox в течение минуты
Mobile
S5 05.07.2026 К работе
−21д
Если 1С недоступна — заказы копятся в `pending`, после восстановления разгребаются автоматически
Mobile
S5 05.07.2026 К работе
−21д
Избранное работает на всех клиентах
Mobile
S5 05.07.2026 К работе
−21д
Возврат через админку: тестовый заказ оплачен → создан refund → webhook от Kaspi → `refund.status=completed` → клиент получил push/SMS → outbox `order_refund_to_1c` создан
Mobile
S5 05.07.2026 К работе
−7д
Code review всех платёжных модулей построчно
Backend
S6 19.07.2026 К работе
−7д
Index review (EXPLAIN ANALYZE медленных запросов из staging)
Backend
S6 19.07.2026 К работе
−7д
Простой rate-limit через slowapi на `/auth/*` и `/search/*`
Backend
S6 19.07.2026 К работе
−7д
CORS финализация
Backend
S6 19.07.2026 К работе
−7д
Production-окружение: новый managed Postgres, новая VM
Backend
S6 19.07.2026 К работе
−7д
`.env.production` отдельно
Backend
S6 19.07.2026 К работе
−7д
SEO: meta-tags на каталоге и карточке, OG-images, sitemap.xml, robots.txt
Frontend
S6 19.07.2026 К работе
−7д
JSON-LD `Product` на карточке (для Google)
Frontend
S6 19.07.2026 К работе
−7д
Lighthouse audit: цель 80+ на ключевых страницах (без CDN — реалистично)
Frontend
S6 19.07.2026 К работе
−7д
Юридические страницы: Оферта, Политика конфиденциальности, Контакты, Доставка, Возвраты
Frontend
S6 19.07.2026 К работе
−7д
Маркетинговые: «О бренде» (одна страница)
Frontend
S6 19.07.2026 К работе
−7д
App Tracking Transparency (iOS 14+)
Mobile
S6 19.07.2026 К работе
−7д
Privacy manifest для App Store
Mobile
S6 19.07.2026 К работе
−7д
Финальная сборка release-версий
Mobile
S6 19.07.2026 К работе
−7д
Подача в App Store и Google Play
Mobile
S6 19.07.2026 К работе
−7д
Реакция на модерацию
Mobile
S6 19.07.2026 К работе
−7д
Production VM + managed Postgres
DevOps
S6 19.07.2026 К работе
−7д
Бэкапы Postgres: managed daily snapshots (Yandex Cloud делает сам, ничего настраивать не надо)
DevOps
S6 19.07.2026 К работе
−7д
Uptime Kuma на отдельной VM с проверками `/health` API, главной сайта, главной админки
DevOps
S6 19.07.2026 К работе
−7д
Telegram-бот для алертов из Sentry и Uptime Kuma
DevOps
S6 19.07.2026 К работе
−7д
Простой rollback: `docker compose down && git checkout previous-tag && docker compose up -d`
DevOps
S6 19.07.2026 К работе
−7д
README с runbook (3-5 типичных инцидентов)
DevOps
S6 19.07.2026 К работе
−7д
Регистрация по SMS
Тестирование
S6 19.07.2026 К работе
−7д
Поиск товара с опечаткой
Тестирование
S6 19.07.2026 К работе
−7д
Фильтры в URL работают
Тестирование
S6 19.07.2026 К работе
−7д
Добавление в корзину на мобилке → синхронизация с сайтом после логина
Тестирование
S6 19.07.2026 К работе
−7д
Оплата Kaspi → статус paid через 30 сек
Тестирование
S6 19.07.2026 К работе
−7д
Получение push на iOS и Android
Тестирование
S6 19.07.2026 К работе
−7д
Получение SMS
Тестирование
S6 19.07.2026 К работе
−7д
Покупка карты на 5000 → SMS с кодом → проверка баланса по коду
Тестирование
S6 19.07.2026 К работе
−7д
Использование карты в чекауте (полное и частичное)
Тестирование
S6 19.07.2026 К работе
−7д
Создание товара с фото → виден на сайте через 1 минуту
Тестирование
S6 19.07.2026 К работе
−7д
Смена статуса заказа → клиент получил push
Тестирование
S6 19.07.2026 К работе
−7д
1С прислала остатки → обновились в каталоге
Тестирование
S6 19.07.2026 К работе
−7д
Заказ ушёл в 1С автоматически
Тестирование
S6 19.07.2026 К работе
−7д
Ручной retry в outbox для failed работает
Тестирование
S6 19.07.2026 К работе
−7д
Оплата при отсутствии товара → корректная ошибка
Тестирование
S6 19.07.2026 К работе
−7д
Истёкший промокод → ошибка
Тестирование
S6 19.07.2026 К работе
−7д
Двойной webhook от Kaspi → один платёж
Тестирование
S6 19.07.2026 К работе
−7д
Sentry без новых ошибок за час
Тестирование
S6 19.07.2026 К работе
−7д
Uptime Kuma зелёный
Тестирование
S6 19.07.2026 К работе
−7д
Тестовый заказ в проде (на свой телефон)
Тестирование
S6 19.07.2026 К работе
−7д
Мобилка в App Store и Google Play
Тестирование
S6 19.07.2026 К работе
−7д
Сайт и админка в проде
Тестирование
S6 19.07.2026 К работе
−7д
Первая реальная покупка прошла
Тестирование
S6 19.07.2026 К работе
−7д
Релиз ✅
Тестирование
S6 19.07.2026 К работе