- Поисковики ищут sitemap.xml в корне сайта - Nginx теперь проксирует /sitemap.xml на /media/_serv_sitemap/sitemap.xml - Установлен кеш на 1 день (чаще обновляется, чем картинки)
Оконный агрегатор «Окнардия»
Окнардия — веб-сервис для сравнения цен на установку оконных конструкций в типовых многоквартирных домах России.
-
Пользователь, желающий заменить окна, вводит адрес дома → система распознаёт серию строения → выдаёт типовые размеры оконных проёмов → показывает предложения от поставщиков на установку (замену) окон, с ценами, характеристиками компонентов и условиями. Алгоритмические рейтинги защищают потенциального покупателя от возможных накруток отзывов и позволяют сравнивать предложения по объективным характеристикам.
-
Для производителей и поставщиков окон платформа — это канал прямого доступа к целевой аудитории в конкретном районе города. Они размещают свои предложения (компоненты, наборы, цены) и конкурируют на равных условиях. Масштабируемый каталог позволяет охватить множество адресов типовой застройки, а система алгоритмического рейтинга (нет отзывов клиентов, а значит накрутка отзывов невозможна) ранжирует предложения исключительно по характеристикам и условиям предложений.
Стек: 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– единый runbook по management-командам и кастом-операциям (регенерация кеша, рейтингов, sitemap и т.д.).CACHE_PRERENDER_SYSTEM.md– двухуровневая система кеширования страниц серий, структура статик-шаблонов, управление кешем.AGENTS.md– контекст проекта для AI-ассистентов (архитектура, конвенции, рабочие сценарии).SETUP.md– пошаговая настройка окружения, запуск проекта и базовые команды разработки.
Легаси-материалы старого README, которые могут быть полезны для понимания устройства проекта и его администрирования, а также для будущей реорганизации документации.
Немного о механике кеширования:
Кеширование картинок со схемами открывания окон
Картинки со схемами открывания создаются в папках:
public/static/img/_flap.cfg-- большие картинкиpublic/static/img/_miniflap.cfg-- маленькие картинки (для таблиц с ценами)
Эти картинки создаются автоматически. Можно не удалять. Даже если какая-то схема открывания или размер проёма станет неактуальным, лишняя картинка просто будет лежать в папке (вдруг такой проём появится снова).
Кеширование pre-render шаблонов серий домов
В папке oknardia/templates/seria_info/prepared/ создаются пре-рендер HTML-шаблоны с информацией о сериях домов.
Архитектура (май 2026): Для каждой серии создаются 3 отдельных кешируемых файла (верхняя статья НЕ кешируется):
{seria_id}_id_static_flaps.html— схемы открывания окон{seria_id}_id_static_graph.html— график ввода в эксплуатацию{seria_id}_id_static_map_stats.html— карта Яндекса и статистика
Верхняя статья рендерится динамически из БД, поэтому изменения через админку видны без перезагрузки контейнера.
Таблица оконных проёмов не кешируется — пересчитывается при каждом запросе, поэтому новые предложения видны пользователям сразу.
Регенерация кеша:
python manage.py regenerate_seria_prerender # все сер<D0B5><D180>и
python manage.py regenerate_seria_prerender --seria-id 210 # конкретная серия
⏱️ Когда регенерировать: Изменены координаты зданий, добавлены новые здания, обновлены годы ввода в эксплуатацию.
❌ Когда НЕ нужна регенерация: Добавлены новые предложения/цены (таблица обновляется автоматически), изменены статьи через админку (рендерятся динамически).
Подробности: см. CACHE_PRERENDER_SYSTEM.md