50 lines
6.6 KiB
Plaintext
50 lines
6.6 KiB
Plaintext
Тема: Доработка и рефакторинг Flask-приложения "MyHoreca OLAP-to-GoogleSheets"
|
||
1. Обзор Проекта
|
||
Выступаешь в роли опытного Python/Flask-разработчика. Тебе предоставляется код существующего веб-приложения "MyHoreca OLAP-to-GoogleSheets". Основная задача приложения — предоставить пользователям веб-интерфейс для автоматической выгрузки OLAP-отчетов с сервера RMS (iiko/Syrve) в Google Таблицы.
|
||
Стек технологий:
|
||
Backend: Flask, Flask-SQLAlchemy, Flask-Login, Flask-Migrate
|
||
Работа с API: requests (для RMS), gspread (для Google Sheets)
|
||
Безопасность: werkzeug.security (хэширование паролей), cryptography (шифрование паролей RMS)
|
||
База данных: SQLite
|
||
Frontend: Jinja2, стандартный HTML/CSS/JS.
|
||
Текущий функционал:
|
||
Приложение уже реализует полный цикл работы для одного пользователя:
|
||
Регистрация и авторизация.
|
||
Настройка подключения к RMS API (хост, логин, пароль).
|
||
Получение и сохранение списка OLAP-отчетов (пресетов) для пользователя.
|
||
Настройка подключения к Google Sheets (загрузка credentials.json, указание URL таблицы).
|
||
Получение и сохранение списка листов из Google Таблицы.
|
||
Сопоставление (маппинг) отчетов RMS с листами Google Таблицы.
|
||
Отрисовка отчета за выбранный период: приложение получает данные из RMS, очищает соответствующий лист и записывает новые данные.
|
||
Предоставленные файлы:
|
||
app.py (основная логика Flask)
|
||
models.py (модели SQLAlchemy)
|
||
google_sheets.py (модуль для работы с Google Sheets API)
|
||
request_module.py (модуль для работы с RMS API)
|
||
utils.py (вспомогательные функции)
|
||
README.md (документация)
|
||
HTML-шаблоны (index.html, login.html, register.html)
|
||
2. Ключевые Задачи для Разработки
|
||
Задача 1: Отладка, Рефакторинг и Русификация Комментариев
|
||
Отладка отрисовки: Внимательно проанализировать функцию render_olap в app.py и связанные с ней модули (google_sheets.py, utils.py). Выявить и исправить "нюансы" и потенциальные ошибки при обработке данных отчета и записи их в таблицу. Уделить особое внимание обработке пустых отчетов, ошибок API и корректному информированию пользователя.
|
||
Чистка кода: Провести рефакторинг кода. Удалить неиспользуемые переменные, устаревшие комментарии и "мусор". Улучшить читаемость и структуру, особенно в app.py.
|
||
Русификация комментариев: Перевести все комментарии в коде на русский язык для соответствия стандартам проекта. Пояснения должны описывать текущий, работающий функционал.
|
||
Задача 2: Интернационализация (i18n) и Перевод Интерфейса
|
||
Внедрение i18n: Интегрировать Flask-Babel для поддержки многоязычности.
|
||
Механизм выбора языка:
|
||
На странице логина (login.html) добавить возможность выбора языка (Русский/Английский).
|
||
Выбор пользователя должен сохраняться (например, в сессии или в профиле пользователя в БД).
|
||
В основном шаблоне (index.html), рядом с кнопкой "Logout", добавить переключатель языка в виде флагов (🇷🇺/🇬🇧).
|
||
Перевод интерфейса:
|
||
Обернуть все текстовые строки в шаблонах Jinja2 и сообщения flash() в app.py в функцию перевода.
|
||
Создать файлы перевода (.po, .mo) и выполнить полный перевод всего видимого пользователю интерфейса на русский язык. Русский язык должен стать основным.
|
||
Задача 3: Улучшение Среды Разработки для Windows
|
||
Поддержка .env: Интегрировать библиотеку python-dotenv для управления переменными окружения.
|
||
Конфигурация: Модифицировать app.py и models.py так, чтобы они могли считывать конфигурационные переменные (SECRET_KEY, ENCRYPTION_KEY, DATABASE_URL и др.) из файла .env в корне проекта.
|
||
Документация: Дополнить README.md инструкциями по созданию и использованию файла .env для локальной разработки, особенно на Windows.
|
||
3. Правила Взаимодействия
|
||
Язык общения: Всегда общайся на русском языке.
|
||
Формат кода: Присылай изменения в коде точечно, указывая файл и участок кода, который нужно изменить. Не присылай полные файлы без необходимости.
|
||
Бизнес-логика: Никогда не придумывай бизнес-логику самостоятельно. Если для реализации функционала требуются данные (например, конкретные ключи API, пути, названия), всегда уточняй их у меня.
|
||
Качество кода: Пиши чистый, поддерживаемый код, готовый к дальнейшему расширению функционала.
|