2026-05-18 16:34:43 +03:00
2026-05-14 19:45:33 +03:00
2026-05-15 13:59:46 +03:00

Оконный агрегатор «Окнардия»

Окнардия — веб-сервис для сравнения цен на установку оконных конструкций в типовых многоквартирных домах России.

  • Пользователь, желающий заменить окна, вводит адрес дома → система распознаёт серию строения → выдаёт типовые размеры оконных проёмов → показывает предложения от поставщиков на установку (замену) окон, с ценами, характеристиками компонентов и условиями. Алгоритмические рейтинги защищают потенциального покупателя от возможных накруток отзывов и позволяют сравнивать предложения по объективным характеристикам.

  • Для производителей и поставщиков окон платформа — это канал прямого доступа к целевой аудитории в конкретном районе города. Они размещают свои предложения (компоненты, наборы, цены) и конкурируют на равных условиях. Масштабируемый каталог позволяет охватить множество адресов типовой застройки, а система алгоритмического рейтинга (нет отзывов клиентов, а значит накрутка отзывов невозможна) ранжирует предложения исключительно по характеристикам и условиям предложений.

Стек: 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-командам и batch-операциям, сниппеты.
  • AGENTS.md контекст проекта для AI-ассистентов (архитектура, конвенции, рабочие сценарии).
  • SETUP.md пошаговая настройка окружения, запуск проекта и базовые команды разработки.

Легаси-материалы старого README, которые могут быть полезны для понимания устройства проекта и его администрирования, а также для будущей реорганизации документации.

Немного о механике кеширования:

Кеширование картинок со схемами открывания окон

Картинки со схемами открывания создаются в папках:

  • public/static/img/_flap.cfg -- большие картинки
  • public/static/img/_miniflap.cfg -- маленькие картинки (для таблиц с ценами)

Эти картинки создаются автоматически. Можно не удалять. Даже если какая-то схема открывания или размер проёма станет неактуальным, лишняя картинка просто будет лежать в папке (вдруг такой проём появится снова).

Кеширование pre-render шаблонов серий домов

В папке oknardia/templates/seria_info/prepared/ создаются пре-рендер HTML-шаблоны с информацией о сериях домов.

Эти шаблоны создаются при первом обращении к странице серии и хранятся для ускорения последующих запросов. Важно: их надо периодически удалять, особенно если меняются:

  • данные по сериям и размерам окон
  • коммерческие предложения и цены
  • рейтинги компонентов

Рекомендация: настроить cronjob на ежедневное или еженедельное удаление этих файлов. При обращении к соответствующим страницам эти шаблоны будут пересозданы автоматически. На быстрых серверах можно вообще отключить кеширование, если оно не критично для производительности.

Description
Окнардия – агрегатор цен на пластиковые окна
https://oknardia.ru/
Readme 33 MiB
Languages
Python 49.4%
HTML 38.1%
JavaScript 10.3%
CSS 1.8%
Dockerfile 0.4%