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