# Оконный агрегатор «Окнардия» ### Переделка под Python 3.12 и Django 5.2 #### Планы, задачи, маркеры и идеи на будущее: * Перехода на SQLite (возможно, после нагрузочного тестирования переход обратно на mariaDB или PostgreSQL). * Переделать все raw SQL-запросы на ORM для лучшей поддержки разных СУБД в будущем. * Актуальная SEO- и LLM-оптимизация: добавить разметку schema.org, улучшить мета-теги, оптимизировать URL-структуру и канонические ссылки. * Длялегаси-страниц (шаблоны и вьюхи) поэтапно проверять (если нужно убирать) старые SEO-хвосты вроде `last_update` / `PUB_DAT` / `Date4Meta` / `Last4Meta`: если дата не несёт смысловой нагрузки, лучше оставлять базовые `{% now %}` из `base.html`, а не тащить лишний контекст во вьюху. * Шаблоны `report/report_last_user_visit.html` и `report/report_log_user_visit.html` сделать подгружаемыми через AJAX или (использовать HTMX, напрмемер) и убрать вызовы `get_last_user_visit_list` (переделать чтобьы формировалось на стороне клиента из куки. * Все действия из сервисной `/service/` вынести в management-команды. * Перейти на `poetry` для управления зависимостями и виртуальным окружением. * Перейти на Django 6.* * Улучшение в блогах (добавить SEO-поля, Codemirror 6, Типограф etpgrfо, слаги через BS4 и pytils). * Упаковать всё в контейнеры: бакенд Django + Gunicorn + WhiteNoise... * CI/CD через gitea + Watchtower для автоматического деплоя при пуше тега `v*.*.*` в репозиторий. * Фронтенд: перейти на новый Bootstrap 5, добавить интерактивные элементы через HTMX + Alpine, сделать адаптивность для мобильных устройств.Убрать jQuery и старые плагины, заменить на современные аналоги. # См. также: * [`MANAGEMENT_RUNBOOK.md`](MANAGEMENT_RUNBOOK.md) – единый runbook по management-командам и batch-операциям, сниппеты. * [`ROADMAP.md`](ROADMAP.md) – дорожная карта переделки (весна 2026) с описанием выполненных шагов (ключевые коммиты). * [`AGENTS.md`](AGENTS.md) – контекст проекта для AI-ассистентов (архитектура, конвенции, рабочие сценарии). * [`SETUP.md`](SETUP.md) – пошаговая настройка окружения, запуск проекта и базовые команды разработки. --- Легаси-материалы старого README, которые могут быть полезны для понимания устройства проекта и его администрирования, а также для будущей реорганизации документации. ### Немного о механике кеширования: #### Кеширование картинок со схемами открывания окон Картинки со схемами открывания создаются в папках: * `public/static/img/_flap.cfg` -- большие картинки * `public/static/img/_miniflap.cfg` -- маленькие картинки (для таблиц с ценами) Эти картинки создаются автоматически. Можно не удалять. Даже если какая-то схема открывания или размер проёма станет неактуальным, лишняя картинка просто будет лежать в папке (вдруг такой проём появится снова). #### Кеширование шаблонов В папке `oknardia/oknardia/templates/seria_info/prepared` создаются пре-рендер шаблоны с информацией о сериях домов. Эти шаблоны надо периодически удалять. Они нужны для скорости. Но если меняются данные по серии, размерам окон, появляются новые коммерческие предложения -- их надо удалять и тогда построятся новые. Вообще на быстрых серверах скорость может не быть проблемой, так что возможно стоит просто настроить через crone ежедневное или еженедельное удаление этих пре-рендер шаблонов. При обращении к соответсвующий страницам эти шаблоны будут пересозданы автоматически. ### Некоторые заметки относительно разработки (DEV) на macOS: Т.к. MariaDB "сидит" в контейнере Dockers могут возникнуть трудности при установке коннектора к базам данных MySQL/MariaDB. Примерно такие: ```txt Collecting mysqlclient Using cached mysqlclient-2.1.1.tar.gz (88 kB) Preparing metadata (setup.py) ... error error: subprocess-exited-with-error × python setup.py egg_info did not run successfully. │ exit code: 1 ╰─> [16 lines of output] /bin/sh: mysql_config: command not found /bin/sh: mariadb_config: command not found /bin/sh: mysql_config: command not found Traceback (most recent call last): File "", line 2, in File "", line 34, in File "/private/var/folders/jh/gbhf3vk11svg9w4mvhntlb7c0000gn/T/pip-install-nu5ar2g2/mysqlclient_a07e3d9dbe514c7793dc71f1183dda19/setup.py", line 15, in metadata, options = get_config() File "/private/var/folders/jh/gbhf3vk11svg9w4mvhntlb7c0000gn/T/pip-install-nu5ar2g2/mysqlclient_a07e3d9dbe514c7793dc71f1183dda19/setup_posix.py", line 70, in get_config libs = mysql_config("libs") File "/private/var/folders/jh/gbhf3vk11svg9w4mvhntlb7c0000gn/T/pip-install-nu5ar2g2/mysqlclient_a07e3d9dbe514c7793dc71f1183dda19/setup_posix.py", line 31, in mysql_config raise OSError("{} not found".format(_mysql_config_path)) OSError: mysql_config not found mysql_config --version mariadb_config --version mysql_config --libs [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. error: metadata-generation-failed × Encountered error while generating package metadata. ╰─> See above for output. note: This is an issue with the package mentioned above, not pip. hint: See above for details. ``` Починить проблему можно воспользовавшись ([рецептом со StackOverflow](https://stackoverflow.com/a/44268445/1504067)): ```shell brew install mariadb-connector-c # sudo ln -s /usr/local/opt/mariadb-connector-c/bin/mariadb_config /usr/local/bin/mysql_config pip install mysqlclient # rm /usr/local/bin/mysql_config brew unlink mariadb-connector-c ```