гора.
i. хроника · обновляется по понедельникам

Что делаю сейчас.

Лог разработки моих проектов. Что переписал, что починил, что вынес наружу. Кодовые имена вместо имён клиентских репо. Без счётчиков строк, без коммитов как таковых — только реальные изменения, которые увидел пользователь или которые внутри что-то поменяли.

rss.xml →

фильтр

  1. XXXIX неделя

    · 21—27 сентября 2026
    Atlas
    • SMS Forwarder шлёт входящие на номер водителя в POST /api/v1/sms-inbox/incoming, raw_body в байт.
    • Спутник копирует все разделы товара, а не только основной. ZIP 33130–33139 видели хабовую выдачу и пустоту.
    • Витрина-бренд без товаров не наследует флаги хаба. BudRush и GreenDrop показывали чужие настройки как свои.
  2. XXXVIII неделя

    · 14—20 сентября 2026
    Atlas
    • Маскированные звонки клиент ↔ водитель. Номера из пула Twilio, гейт по статусу заказа, рубильник в админке и кнопки на всех поверхностях.
    • Перенос корзины при смене магазина группы. Витрина теперь сохраняет товары вместо очистки, диалог говорит правду о потерях.
    • Воронка чекаута видит отказы на клиенте. Сервер рассказывает причину, почему заказ не ушёл — ZIP в чужой зоне, магазин закрыт, нет доставки.
  3. XXXVII неделя

    · 7—13 сентября 2026
    Atlas
    • Крипто-платежи: окно оплаты 45 минут вместо 30, кнопка наличных в checkout, плашки о сети.
    • Сетка доступа диспетчеров к магазинам. Админ задаёт видимость и default store per человеку.
    • Индекс по driver_id + delivered_at в orders. Seq scan на каждом опросе экрана водителя исчез.
  4. XXXVI неделя

    · 31 августа — 6 сентября 2026
    Atlas
    • Три отметки времени заказа до забора в S2. Бот теперь отвечает на вопрос «когда?» вместо молчания.
    • Крипто-платёж: привязка перевода и запись денег в одной транзакции. Разрыв между ними больше невидим.
    • Удалённый товар не воскресает в корзине. Чистка ковша слияния и сигнал о глухой записи.
  5. XXXV неделя

    · 24—30 августа 2026
    Atlas
    • Состав заказа в S2: itemId, name, variant. Резолв по contact_phone.
    • Multistore: скоуп денежных записей, атрибуция входов, режим «все магазины» в статистике API.
    • Сателлит наследует промо-настройки хаба. Аффилиэйт работает по всей системе.
  6. XXXIV неделя

    · 17—23 августа 2026
    Atlas
    • Сателлит исполняет заказ сам, без передачи хабу. Честный список недостающих позиций вместо молчаливой передачи.
    • Резолвер магазина покупателя портирован в пакет. Витрина и мини-апп читают контракт из одного источника.
    • Диспетчер выбирает рабочую точку на сервере. Выбор живёт в users.active_store_id, не в localStorage.
  7. XXXIII неделя

    · 10—16 августа 2026
    Atlas
    • BOM: рецепт теперь список ингредиентов, OCC по отпечатку состава, множество материалов на вариант.
    • Hub-spoke: этапы 1–6 закрыты, 404 fail-closed, гейт корзины, SEO-герметичность, подтверждение смены магазина.
    • Боты и доставка: P0 захват аккаунта через пересланный контакт, гейт открывается при молчащем боте, водитель требует живую трансляцию.
  8. XXXII неделя

    · 3—9 августа 2026
    Atlas
    • Живая геопозиция водителя доходит до расчёта ETA. Три баги: канал молчал в aiogram, точка исчезала раньше срока, гейт спрашивал не ту систему.
    • Трансляция геолокации просит бессрочный режим вместо 8 часов. Смены часто длиннее, и обрыв посреди доставки убивал живое время прибытия.
    • SMS о подъезде и страница трекинга теперь показывают одно число. Было: случайный текст из 98 заготовок обещал 4–7 минут независимо от реальности.
  9. XXXI неделя

    · 27 июля — 2 августа 2026
    Atlas
    • Display Order перестал откатывать перетаскивание. applySorting ставил sortBoost DESC перед cdo_sort.
    • Driver Report разделил наличные на две колонки: To wallet и Owner's cash вместо общей суммы.
    • Себестоимость лота теперь доходит до карточки товара. products.cost_price писал только оператор, склад не трогал.
  10. XXX неделя

    · 20—26 июля 2026
    Atlas
    • Корзина теперь снимает снимок товаров внутри очереди синка, а не до неё. Гостевой→аккаунт мёрж работает без потерь данных при повторах и разрывах сети.
    • Warehouse: рецепт привязал произведённое количество к потреблённому. Раньше оператор мог создать неограниченный готовый товар вручную.
    • Badges: REORDER теперь видна (порог 5/0.4), JUST IN перестала зависать на старых товарах. Delivery slots: убрал off-by-one при сдвиге часовых поясов.
  11. XXIX неделя

    · 13—19 июля 2026
    Atlas
    • Twilio в checkout-OTP как primary, WAHA fallback. SMS-верификация обязательна перед доставкой.
    • Крипто-платежи: durable ledger для shared ETH/TRON адресов, chain-check перед expiry, блокировка смены метода при partial payment.
    • Signup: CAPTCHA + geo-allowlist вместо blocklist префиксов, grandfather для существующих номеров.
  12. XXVIII неделя

    · 6—12 июля 2026
    Atlas
    • Автозаполнение граммов сырья в производстве из веса товара. Оператор больше не вводит вручную.
    • Блокировка OTP для мошеннических номеров (KZ, UA, JM пулы) + глобальный circuit breaker на send-otp.
    • Nominatim fallback для автодополнения адресов при недоступности Google Maps.
  13. XXVII неделя

    · 29 июня — 5 июля 2026
    Atlas
    • Крипто-платежи: привязал TRON и native-ETH к конкретной транзакции, закрыл double-credit на обоих.
    • Отменённый заказ больше не помечается оплаченным, инвойс истекает при отмене.
    • Чат customer↔driver в Telegram mini-app и на страницах checkout/tracking, без миграций БД.
    • Возрастная верификация теперь на всех маршрутах, не только на homepage.
    • Cashback и рефералы кредитятся при доставке, не при создании заказа — закрыл exploit на отмену.
    • Live Ops панель: real-time ошибки checkout/login/registration, заказы, посещения и health системы.
    • Флорида: mail/USPS доставка без курьера, платёжный цикл, snapshot реквизитов, гейт по store.settings.
    • Driver Report теперь показывает крипто-платежи в breakdown, не только в Sales.
  14. XXVI неделя

    · 22—28 июня 2026
    Atlas
    • Диспетчер видит дату доставки рядом с временем слота. Запланированные заказы теперь показывают YYYY-MM-DD, а не только 10:00-11:00.
    • Deals категория теперь автоматическая: товар появляется при скидке, исчезает при её отмене. Вместо ручного флага is_current_deals.
    • Checkout: сохранённые адреса можно редактировать и удалять. PATCH/DELETE уже были на бэке, добавили в UI.
    • Скрытые варианты товаров на витрине. OOS фильтруются, не серятся. availableVariants / minAvailablePrice в variant-utils.ts.
    • Адрес доставки привязан к store-TZ как ключ. Убрали пересчёты из UTC и browser-local при каждом чтении.
    • Уведомление о пикапе показывает выбранный водителем транспорт, а не текущий глобальный.
  15. XXV неделя

    · 15—21 июня 2026
    Atlas
    • Подарки в корзине теперь показываются после подтверждения, не раньше. OoS варианты заменяются на доступные из той же категории.
    • Баннеры в админке теперь читаются из API, а не захардкожены. Карусель подтягивает GET /banners/active с фильтром по аудитории.
    • OTP можно выбрать: WhatsApp или SMS. Twilio Verify как альтернатива, за флагом TWILIO_VERIFY_ENABLED. SMS на offline-девайсах падают через 10 минут, не зависают.
    • Live-трекинг на /track теперь работает: сокет переподписывается при переподключении, статусы приходят в реал-тайм, не ждут poll-тика.
    • Координаты склада не уходят клиентам. Shared-юзер видит только заказы своего бренда в кабинете, не чужие.
  16. XXIV неделя

    · 8—14 июня 2026
    Atlas
    • Gift variant ID validation в freeze. Бэкенд требует giftVariantId для вариантных товаров, фронт теперь проверяет перед отправкой.
    • Wallet debit-gate: добавил store_id в scope-guard для legacy-данных. 52 клиента с несогласованным балансом теперь не падают.
    • Driver Report: shift-based cash view (3AM→3AM). Zebra striping, табличные цифры, три колонки платежей вместо одной.
  17. XXIII неделя

    · 1—7 июня 2026
    Atlas
    • Express checkout без регистрации. Per-store флаг (по умолчанию OFF), E.164 phone input с валидацией по странам.
    • Sign in with Apple. RS256 верификация id_token против Apple JWKS, зеркало Google flow.
    • Ночной минимум заказа по зонам. effectiveMinOrder теперь учитывает deliveryType и scheduledDate, не применяется к next-day ордерам.
  18. XXII неделя

    · 25—31 мая 2026
    Atlas
    • Blog и product pages на ISR вместо no-store. Cache-control теперь работает на динамических сегментах.
    • Auth pages исключены из индекса Google, delivery-areas/[area] возвращает 404 вместо 500 на неизвестных slug.
    • Storefront конфиг перенесён на типизированный слой: 50+ файлов теперь читают getStoreConfig() вместо raw env.
    • /llms.txt для AI-агентов, sitemap на ISR (revalidate=300), FAQ/blog/legal переведены на ru/es.
    • Inactive products доступны на detail endpoint (как out-of-stock), sitemap консолидирует ранжирование по canonical.
  19. XXI неделя

    · 18—24 мая 2026
    Atlas
    • Унифицировал контакт поддержки WhatsApp в уведомлениях. Единый источник номера для SMS, Telegram, WhatsApp, Email.
    • Закрыл Stage 2A: store_id на checkout_logs, otp_logs, session_recordings + JWT верификация на /events, tenant hardening на 7 админ-маршрутах.
    • Добавил contactPhone с маркером (unverified) в checkout auto-save и админ-панель для email-only клиентов.
  20. XX неделя

    · 11—17 мая 2026
    Atlas
    • Fulfillment duration в Daily Orders с красной подсветкой при >60 мин для видимости SLA breaches.
    • Unified Places autocomplete + zone-check на 5 формах с Redis кешем и 6 структурированными колонками доставки в заказах.
    • WhatsApp sticky routing перенесён в Postgres, Redis теперь только read-through cache.
  21. XIX неделя

    · 4—10 мая 2026
    Atlas
    • При редактировании товаров в заказе сохраняется order_id. TypeORM перезагружал связанные товары и терял новые.
    • Featured Products на homepage подтягивает бестселлеры, если слотов не хватает. Было 4/8, теперь всегда 8/8.
    • OG-image переделан под 1200×630. Десатурированный крой hero-slide вместо статичной картинки.
  22. XVIII неделя

    · 27 апреля — 3 мая 2026
    Atlas
    • SEO recovery: канибализация ключевиков убрана, 10 категорий потеряли "Miami" в title, homepage теперь money-keyword pillar.
    • Per-store risk scoring вместо single-IP detector. Новая таблица user_store_risk, multi-signal threshold=50, флаг не протекает между стором.
    • Delivery zone tracking на заказах. Добавлена delivery_zone_id FK, backfill исторических, новые отчёты в админ-панели.
  23. XVII неделя

    · 20—26 апреля 2026
    Atlas
    • Homepage: SEO-блоки переделаны на editorial trust stream с Google Reviews, CountUp рейтинга и TestimonialsSection.
    • Referral links теперь приземляются на homepage /?ref=X вместо /register, код сохраняется в localStorage на 30 дней.
    • 12 geo-landing pages для Miami neighborhoods с LocalBusiness schema, GeoCoordinates и BreadcrumbList для каждого района.
  24. XVI неделя

    · 13—19 апреля 2026
    Atlas
    • Психоделики перенесены под Edibles с сохранением SEO-слага. Убрали из топ-навбара, оставили в гридах с фильтром по parent_id.
    • COG Report переделан: таблица по продуктам, поиск, инвентарь по себестоимости. Фикс dateFilter (показывал вчера).
    • Крипто-платежи: допуск увеличен с 2% до 5% для покрытия комиссий обменников.
    • Снимок себестоимости сохраняется в order_items.cost_price при создании заказа для COGS-отчётов.
    • Аудит-логи продуктов: все изменения из админки (create/update/delete) с JSONB-диффами в product_audit_logs.
    • Dispatch-карта: realtime-трекинг водителей с фоллбеком на driver_locations таблицу при потере Redis-сессии.
    • OOS-товары скрыты из каталога по умолчанию. inStock-фильтр на уровне БД с EXISTS-сабквери.
  25. XV неделя

    · 6—12 апреля 2026
    Atlas
    • Адреса заказов можно редактировать до назначения водителя. Добавлена геокодирование, синхронизация в админке и диспетчерском приложении.
    • Мобильная геолокация для заполнения адреса. GPS + Nominatim обратное геокодирование, автозаполнение улицы, города, ZIP.
    • Google OAuth вход/регистрация с верификацией через userinfo API. Авто-линковка существующих аккаунтов по авторитетным email.
  26. XIV неделя

    · 30 марта — 5 апреля 2026
    Atlas
    • Водители теперь выбирают машину при первом пикапе, не при go-online. Авто-релиз при доставке последнего заказа.
    • Админ может назначать водителей на машины через AssignDriverModal. В уведомлениях клиентам — только марка/цвет авто, без имени водителя.
    • Планы теперь ограничивают express-доставку по времени и зонам. Black Diamond и VIP Platinum могут обходить ограничения через bypass-флаги.
Хроника — лог разработки · hiregora.com