2023-01-14 04:22:25 +03:00
2026-04-26 15:05:17 +03:00

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

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

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 "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "/private/var/folders/jh/gbhf3vk11svg9w4mvhntlb7c0000gn/T/pip-install-nu5ar2g2/mysqlclient_a07e3d9dbe514c7793dc71f1183dda19/setup.py", line 15, in <module>
          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):

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