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

44 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# План задач (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-переписку).