3.9 KiB
3.9 KiB
План задач (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добавить двухэтапный поиск:- Поиск по
TbArticle.s_article_slug-> если найден, рендерим (или 301 на канонический URL). - Если не найден, поиск по
TbArticleAlias.s_old_slug-> если найден, рендеримHTTP 301 Permanent Redirectна актуальный URL статьи. - Если не найден нигде ->
HTTP 404(с блоком-подсказкой дляrequest.user.is_staff).
- Поиск по
- Создать модель
- Приоритет: Полезная архитектурная фича на будущее (низкий / плановый приоритет).
- Описание: Для SQLite вариант с отдельной моделью и B-Tree индексом (
2. DSL-парсер Страниц-Хабов и Динамических Модулей
-
Замена списочных вьюх/шаблонов на универсальные DSL-хабы
- Описание: Отказаться от создания специализированных views и templates под каждый раздел с карточками/списками (например,
/info/,/blog/). Любой список разделов или статей становится частным случаем хаба со статьейl_article_type == 'HUB'. - Детали:
- Отдельные списочные вьюхи (например,
txt_articles_list) упраздняются в пользу единого диспетчера хабовHubView. - Все сущности и статьи генерируют свои канонические URL через
get_absolute_url()моделиTbArticle, исключая путаницу префиксов в ссылках внутри блоков хаба.
- Отдельные списочные вьюхи (например,
- Приоритет: Средний (по мере реализации DSL-парсера).
- Описание: Отказаться от создания специализированных views и templates под каждый раздел с карточками/списками (например,
-
Реализовать 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-переписку).
- Реализация модуля