Files
2018-lpon-site/_prj_blueprint/TODO.md
T

2.9 KiB
Raw Blame History

План задач (TODO)

Дата и время обновления: 03.08.2026 22:24
Проект: LPON.RU (Django 6.0+, Python 3.12)


1. Архитектура и База данных (Бэкенд)

  • Реализовать модель алиасов слагов TbArticleAlias (для HTTP 301 редиректов при переименовании слагов)
    • Описание: Для SQLite вариант с отдельной моделью и B-Tree индексом (s_old_slug -> ForeignKey(TbArticle)) работает значительно быстрее поиска по JSON-полю (O(1) вместо сканирования таблицы).
    • Детали:
      • Создать модель TbArticleAlias (s_old_slug = SlugField(unique=True, db_index=True), k_article = ForeignKey(TbArticle)).
      • При изменении s_article_slug в админке автоматически сохранять предыдущий слаг в TbArticleAlias.
      • В UniversalSlugView добавить двухэтапный поиск:
        1. Поиск по TbArticle.s_article_slug -> если найден, рендерим (или 301 на канонический URL).
        2. Если не найден, поиск по TbArticleAlias.s_old_slug -> если найден, рендерим HTTP 301 Permanent Redirect на актуальный URL статьи.
        3. Если не найден нигде -> HTTP 404 (с блоком-подсказкой для request.user.is_staff).
    • Приоритет: Полезная архитектурная фича на будущее (низкий / плановый приоритет).

2. DSL-парсер Страниц-Хабов и Динамических Модулей

  • Реализовать DSL-парсер Страниц-Хабов (j_article_metadata['hub'])
    • Поддержка позиционных кортежей ["slug", "view_mode", limit, "sort", extra].
    • Поддержка динамических модулей по префиксу ! (["!cart-app"], ["!promo-mandarin"]).
    • Защита от рекурсии (visited_slugs, MAX_RECURSION_DEPTH = 2).
    • Приоритет: Высокий

3. Анонимные Заказы и Бесконтактная Корзина (Stateless Orders)

  • Бесконтактная Корзина и Заказы (Stateless Orders)
    • Реализация модуля !cart-app на клиенте (Cookies/LocalStorage) без записи ПДн клиентов в БД сайта.
    • Интеграция с виджетом СДЭК и сохранение только трек-номеров.
    • Приоритет: Средний (для MVP можно временно использовать email-переписку).