add: планы (ближние и дальние (1)
This commit is contained in:
@@ -0,0 +1,36 @@
|
|||||||
|
# План задач (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-переписку).
|
||||||
Reference in New Issue
Block a user