Files
2022_oknardia/README.md
2026-05-15 13:59:46 +03:00

79 lines
7.8 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.
# Оконный агрегатор «Окнардия»
**Окнардия** — веб-сервис для сравнения цен на установку оконных конструкций в типовых многоквартирных домах России.
* **Пользователь, желающий заменить окна**, вводит адрес дома → система распознаёт серию строения → выдаёт типовые размеры оконных проёмов → показывает предложения от поставщиков на установку (замену) окон, с ценами, характеристиками компонентов и условиями.
Алгоритмические рейтинги защищают потенциального покупателя от возможных накруток отзывов и позволяют сравнивать предложения по объективным характеристикам.
* Для **производителей и поставщиков окон** платформа — это канал прямого доступа к целевой аудитории в конкретном районе города.
Они размещают свои предложения (компоненты, наборы, цены) и конкурируют на равных условиях. Масштабируемый каталог позволяет охватить
множество адресов типовой застройки, а система алгоритмического рейтинга (нет отзывов клиентов, а значит накрутка отзывов невозможна) ранжирует предложения исключительно по характеристикам и условиям предложений.
**Стек**: 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 на ежедневное или еженедельное удаление этих файлов. При обращении к соответствующим
страницам эти шаблоны будут пересозданы автоматически. На быстрых серверах можно вообще отключить кеширование, если оно
не критично для производительности.