79 lines
7.8 KiB
Markdown
79 lines
7.8 KiB
Markdown
# Оконный агрегатор «Окнардия»
|
||
|
||
**Окнардия** — веб-сервис для сравнения цен на установку оконных конструкций в типовых многоквартирных домах России.
|
||
|
||
* **Пользователь, желающий заменить окна**, вводит адрес дома → система распознаёт серию строения → выдаёт типовые размеры оконных проёмов → показывает предложения от поставщиков на установку (замену) окон, с ценами, характеристиками компонентов и условиями.
|
||
Алгоритмические рейтинги защищают потенциального покупателя от возможных накруток отзывов и позволяют сравнивать предложения по объективным характеристикам.
|
||
|
||
* Для **производителей и поставщиков окон** платформа — это канал прямого доступа к целевой аудитории в конкретном районе города.
|
||
Они размещают свои предложения (компоненты, наборы, цены) и конкурируют на равных условиях. Масштабируемый каталог позволяет охватить
|
||
множество адресов типовой застройки, а система алгоритмического рейтинга (нет отзывов клиентов, а значит накрутка отзывов невозможна) ранжирует предложения исключительно по характеристикам и условиям предложений.
|
||
|
||
**Стек**: Python 3.12+ · Django 5.2+ · SQLite/MariaDB · Bootstrap 3.3 · jQuery · Yandex Maps API
|
||
|
||
---
|
||
|
||
### Переделка под Python 3.12 и Django 5.2.13 (апрель-май 2026)
|
||
|
||
Сделано:
|
||
* Переход проекта под Python 3.12 и Django 5.2.13, удаление устаревших зависимостей, унификация функций и хелперов.
|
||
* Перехода на SQLite (возможно, после нагрузочного тестирования переход обратно на mariaDB или PostgreSQL).
|
||
* Переделаны все raw SQL-запросы на ORM для лучшей поддержки разных СУБД в будущем.
|
||
* Все сервисные функции из `service/` вынесены в management-команды.
|
||
* Переработаны все шаблоны с целью SEO- и LLM-оптимизацим: более корректные meta-теги, разметка schema.org
|
||
через `JSON-LD`, оптимизирована структура "хлебных крошек" и изменение роутинга.
|
||
* Облегчение шаблона `base.html`: блок логин-логаут подгружается через AJAX только по клику, модуль авторизации
|
||
вынесен в отдельный JS-файл (`/static/js/auth.js`), счетчики посещений перенесены в подгружаемый JS.
|
||
* Шаблоны `report/report_last_user_visit.html` больше не требуют серверного рендеринга, а формируются
|
||
на стороне клиента из кук.
|
||
* Добавлены SEO-поля блогов.
|
||
|
||
### Планы, задачи, маркеры на будущее:
|
||
|
||
* Оптимизация кеширования pre-render шаблонов: настроить cronjob для ежедневной/еженедельной очистки `seria_info/prepared/`.
|
||
* Улучшение администрирования в блогах (Codemirror 6, Типографф).
|
||
* Упаковать всё в контейнеры: бакенд Django + Gunicorn + WhiteNoise...
|
||
* CI/CD через gitea + Watchtower для автоматического деплоя при пуше тега `v*.*.*` в репозиторий.
|
||
* Фронтенд: перейти на новый Bootstrap 5, добавить интерактивные элементы через HTMX + Alpine, сделать адаптивность для мобильных устройств. Убрать jQuery и старые плагины, заменить на современные аналоги.
|
||
* Оптимизация для мобильных устройств: адаптивный дизайн, оптимизация изображений, улучшение производительности.
|
||
* Переход проекта под Python 3.14 и Django 6.x.
|
||
* Нагрузочное тестирование (рпи необходимости переход с SQLite на PostgreSQL в продакшене).
|
||
|
||
# См. также:
|
||
|
||
* [`MANAGEMENT_RUNBOOK.md`](MANAGEMENT_RUNBOOK.md) – единый runbook по management-командам и batch-операциям, сниппеты.
|
||
* [`AGENTS.md`](AGENTS.md) – контекст проекта для AI-ассистентов (архитектура, конвенции, рабочие сценарии).
|
||
* [`SETUP.md`](SETUP.md) – пошаговая настройка окружения, запуск проекта и базовые команды разработки.
|
||
|
||
|
||
---
|
||
Легаси-материалы старого README, которые могут быть полезны для понимания устройства проекта и его
|
||
администрирования, а также для будущей реорганизации документации.
|
||
|
||
### Немного о механике кеширования:
|
||
|
||
#### Кеширование картинок со схемами открывания окон
|
||
|
||
Картинки со схемами открывания создаются в папках:
|
||
* `public/static/img/_flap.cfg` -- большие картинки
|
||
* `public/static/img/_miniflap.cfg` -- маленькие картинки (для таблиц с ценами)
|
||
|
||
Эти картинки создаются автоматически. Можно не удалять. Даже если какая-то схема открывания или размер проёма станет
|
||
неактуальным, лишняя картинка просто будет лежать в папке (вдруг такой проём появится снова).
|
||
|
||
#### Кеширование pre-render шаблонов серий домов
|
||
|
||
В папке `oknardia/templates/seria_info/prepared/` создаются пре-рендер HTML-шаблоны с информацией о сериях домов.
|
||
|
||
Эти шаблоны создаются при первом обращении к странице серии и хранятся для ускорения последующих запросов.
|
||
**Важно**: их надо периодически удалять, особенно если меняются:
|
||
* данные по сериям и размерам окон
|
||
* коммерческие предложения и цены
|
||
* рейтинги компонентов
|
||
|
||
**Рекомендация**: настроить cronjob на ежедневное или еженедельное удаление этих файлов. При обращении к соответствующим
|
||
страницам эти шаблоны будут пересозданы автоматически. На быстрых серверах можно вообще отключить кеширование, если оно
|
||
не критично для производительности.
|
||
|
||
|