Files
2018-lpon-site/_prj_blueprint/TODO.md
T
2026-08-07 17:14:38 +03:00

3.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-хабы

    • Описание: Отказаться от создания специализированных views и templates под каждый раздел с карточками/списками (например, /info/, /blog/). Любой список разделов или статей становится частным случаем хаба со статьей l_article_type == 'HUB'.
    • Детали:
      • Отдельные списочные вьюхи (например, txt_articles_list) упраздняются в пользу единого диспетчера хабов HubView.
      • Все сущности и статьи генерируют свои канонические URL через get_absolute_url() модели TbArticle, исключая путаницу префиксов в ссылках внутри блоков хаба.
    • Приоритет: Средний (по мере реализации 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-переписку).