Znymkari · Лабораторія
←

Документация

Архитектура Статус Контекст История Продакшн Ноут Олега VPS COM Oleg COM Pavel Коммиты VPS Коммиты Цеха

ad287bf — 2026-10-18 20:40 — Alazar

docs: sync documentation with Lab progress


2b67011 — 2026-10-17 21:09 — Alazar

Docs: обновление статуса, архитектуры и грабель после деплоя цеха (сессия 2026-10-17-б)


e0368f1 — 2026-10-17 02:26 — Alazar

Команда receive_event — мягкий merge JSON через ORM.

Команда assign_media_authors.

Миграция 0012 применена.

Папка /srv/previews/ создана.

Старые команды почищены.


bcba4ce — 2026-10-16 23:03 — Alazar

refactor: отказ от HOT/COLD, удаление старого мира, чистка import_service


7442a0a — 2026-10-16 02:29 — Alazar

docs: ARCHITECTURE §7.3, CONTEXT — znymkari-data каркас создан


0c521a2 — 2026-10-16 02:24 — Alazar

docs: CHANGES/STATE — сессия 2026-10-15-б (реструктуризация, znymkari-data, 0011)


713a083 — 2026-10-16 01:55 — Alazar

feat(catalog): external_id, storage_root, slug для синхронизации с znymkari-data


3ea4b48 — 2026-10-15 23:20 — Alazar

docs: реструктуризация .git → web/, обновление доков


006ceda — 2026-10-15 22:58 — Alazar

chore: перенос .gitignore в корень проекта


243d43b — 2026-10-15 21:38 — Alazar

chore: чистка проекта, webhook guard, фикс логотипа


d5d7ea7 — 2026-10-12 21:27 — Alazar

Инструкция для Олега


c912c9b — 2026-10-12 15:10 — Alazar

feat(session-20,21): telegram webhook + вход + доки

Session 20: - Telegram webhook (/telegram/webhook//), long polling выключен - _send_surprise -> фоновый поток - Security hardening: HSTS, secure cookies, SSL redirect - deploy.bat со стоп-кранами (защита settings_local.py)

Session 21: - Доки -> web/docs/, DOCS_ROOT = BASE_DIR / 'docs' - home.html: убит ранний return на пустой БД -> 'Войти' работает - Telegram: fallback-поиск по username при потерянном telegram_id - Soft-delete: реактивация is_active=False при Telegram-входе - Олег вошёл как tg_276794894 (client) - Превью q=85 (импорт-сервис) - Белый IP Олега: 193.176.249.24, план Схемы B обновлён

Доки: - STATE, ARCHITECTURE, CONTEXT, PRODUCTION, CHANGES — синхронизированы - SETUP_HOME — ждёт переписывания под ноут (С22)

План импорта: C -> C+ -> A -> B (см. ARCHITECTURE.md 5.1)

Техдолг: soft-delete email, /media/znymkari_logo.jpg 404, \${html(pickhref)}


d0a787c — 2026-10-12 13:26 — Alazar

feat(session-20,21): telegram webhook + вход + доки

Session 20: - Telegram webhook (/telegram/webhook//), long polling выключен - _send_surprise → фоновый поток - Security hardening: HSTS, secure cookies, SSL redirect - deploy.bat со стоп-кранами (защита settings_local.py)

Session 21: - Доки → web/docs/, DOCS_ROOT = BASE_DIR / 'docs' - home.html: убит ранний return на пустой БД → 'Войти' работает - Telegram: fallback-поиск по username при потерянном telegram_id - Soft-delete: реактивация is_active=False при Telegram-входе - Олег вошёл как tg_276794894 (client)

Техдолг: soft-delete email, /media/znymkari_logo.jpg, баг \${html(pickhref)}


a46ba74 — 2026-10-11 22:46 — Alazar

docs: закрытие Сессии 18 — деплой на VPS Hetzner + SSL


84b6d7d — 2026-10-11 19:28 — Alazar

rebrand: BRAVO -> Znymkari (code + docs)


e24b67f — 2026-10-11 15:48 — Alazar

Сессия 16: Закріваем сессию. Документі, правки, Подготовка ребрендинга


cb1ea2d — 2026-10-11 03:24 — Alazar

docs: рефакторинг документации под Схему B


745c759 — 2026-10-11 01:41 — Alazar

Сессия 15: постеры и 10-сек превью со звуком для видео, команда generate_video_posters, дефолт-имена и стрелки next/prev (закрытие #6, #25), закрытие трекера


dcfacd9 — 2026-10-11 00:57 — Alazar

Сессия 15: дефолт-имена в модалках разметки (#25), стрелки next/prev в галерее (#6), fix URL-фильтра, закрытие трекера


b39fbe2 — 2026-10-10 23:57 — Alazar

Сессия 14: стикер Caveat, три типа офферов с applied, привязка награды, единый стиль кнопок, Cloudflare Tunnel, fix фильтра галереи


be90ea5 — 2026-10-10 16:49 — Alazar

Session 13: smart cart, media counters, cart/favorites polish

Backend: - UserEventDiscount (per-user, per-event, percent). - cart/smart/ — stateless-расчёт: правила 1-6. - Fix: убрать двойное объявление totalVideos в renderPage (клиент).

UI cart.html: - Убран чекбокс 'Умная корзина' — работает всегда. - Воздух под заголовком (26px margin-bottom .head). - Фото и видео — двумя рядами + пунктирный разделитель. - Шеврон раскрытия — в шапке группы, справа, стиль стрелки крошек. - Блок 'всего N' — кликабельная кнопка раскрытия. - Тайлы заполняют всю ширину (gapSlots=1, gap-блок = 1 слот тайла). - Итог по ивенту/корзине: 'N фото · M видео' слева серым. - Удельная цена — 'за медиа', не 'за фото'. - Offer-ссылка → стрелка в стиле крошек.

UI favorites.html: - Те же изменения: два ряда, разделитель, шеврон в шапке, блок-счётчик-кнопка, стрелка в крошках.

Fix lightbox: - collectPreviewItems теперь включает видео (тип из data-type). - Видео в лайтбоксе показывает плашку, не постороннее фото.


ce72073 — 2026-10-10 01:32 — Alazar

Session 13: BuyModal, lang (ru/uk/en/pl/crh), bot UX, app-shell


49ebc4d — 2026-10-09 22:09 — Alazar

Сессия 12: Telegram-флоу (bot, эндпоинты, UI, доки)


cd0a512 — 2026-10-08 23:53 — Alazar

12: UserProfile + TelegramLinkToken, статус в шапке, личный кабинет /accounts/profile/ с редактированием, логин по username, чистка модалки


9ec5e61 — 2026-10-08 21:44 — Alazar

11: merge-prompt (текст + «Оставить как есть» + per-user флаг), автологин после активации, кнопка «Вверх»


0e2c2ae — 2026-10-07 21:06 — Alazar

Сессия 10: app-shell, cart, cart/to-favorites, кнопки лайтбокса


fe7a3a2 — 2026-10-07 17:59 — Alazar

session 9: page-top слой, event → FavoritesModule, светлая/синяя сетка, переносы в избранное, 6 страниц на header_actions


34a41b4 — 2026-10-07 00:11 — Alazar

Сессия 8: header_actions, модуль Lightbox, favorites по стандарту, footer+sitemap


68fd8b5 — 2026-10-06 17:39 — Alazar

доки по телеграму и хвосты от вчера


e9d4415 — 2026-10-05 23:45 — Alazar

7e/7d/e1-e4/e2: избранное, серверная корзина, merge-промпт

Клиентские модули: - cart.js: корзина (аноним → localStorage, залогинен → CartItem). У анонима делегирует в FavoritesModule — у гостя корзины нет. - favorites.js: избранное (аноним → localStorage, залогинен → Favorite). - merge-prompt.js: модалка «У вас есть история до входа», флаг bravo:merge-prompt-done в sessionStorage.

Страницы: - /catalog/favorites/ + API favorites/details/ и cart/to-favorites/. - /catalog/cart/ доступна только залогиненным (редирект анонима на /catalog/favorites/). - Кнопки «В избранное» / «В избранном» в лайтбоксе event.html. - «↩ в избранное» на тайлах cart.html (рядом с «×»). - Закладка-ленточка = «в избранном» (красная — аноним, зелёная — залогинен). В корзине закладки нет.

Взаимоисключение «корзина ↔ избранное»: - Медиа не может быть одновременно в обоих списках. - Переходы — перенос, не копирование: favorites/to-cart и cart/to-favorites, оба в transaction.atomic().

Шаблоны и статика: - Все 9 шаблонов переведены на static/common.css + static/common.js. - home.html — data-spotlights-animated="1": common.js не трогает софиты и боке главной. - common.css: .bokeh через color-mix, без filter: blur (GPU-композитинг при движении).

Тесты: - test_smoke: удалён устаревший test_cart_ok (аноним теперь видит редирект). Добавлены 4 теста: cart→favorites для анонима, доступ favorites анониму, доступ cart/favorites залогиненному. - 77 тестов, все зелёные.

Доки: ARCHITECTURE / STATE / CONTEXT / CHANGES синхронизированы.


caa8bd8 — 2026-10-05 21:52 — Alazar

common: перевести все шаблоны на static (dev_links, markup, event, home) + skip buildBokeh на главной


17b4b00 — 2026-10-05 20:39 — Alazar

static/common: вынос фона, футера, карты сайта + API избранного/корзины


b92a86c — 2026-10-05 19:06 — Alazar

7b: API избранного и серверной корзины + 24 теста


6b49878 — 2026-10-05 19:00 — Alazar

7a: модели Favorite и CartItem + 16 тестов


2f00052 — 2026-10-05 18:35 — Alazar

Читалка доков для staff: ARCHITECTURE / STATE / CHANGES / git log


6f6245f — 2026-10-04 22:25 — Alazar

fix #18: поиск не учитывал регистр кириллицы (SQLite icontains)


1a4898f — 2026-10-04 21:41 — Alazar

rename: timeline → markup (страница разметки)

CSS-классы .timeline-* и #timeline оставлены — отдельный рефакторинг. PAGE_TIMELINE="timeline" в Issue оставлен (значение в БД, миграция ради красоты не нужна).


2f34335 — 2026-10-04 20:01 — Alazar

tests: Django-тесты (smoke + api + issues) + удаление старого tests/


e9af734 — 2026-10-04 19:10 — Alazar

Замечания включены в карту сайта для stuff


23142d1 — 2026-10-04 19:05 — Alazar

трекер замечаний (модель Issue + админка)


e862cf8 — 2026-10-04 17:49 — Alazar

templates: единый каркас для остальных страниц + app-shell на ивенте


900f832 — 2026-10-04 14:04 — Alazar

footer: {% include %} + унифицированный sitemap на клиентских страницах


c7eaaeb — 2026-10-04 00:29 — Alazar

footer: версия проекта через context_processor + футер на всех клиентских страницах


99b9506 — 2026-10-03 21:37 — Alazar

Initial commit: текущее состояние проекта