# Опросник (Quiz for Mont) Веб‑приложение на Flask + Peewee для проведения опросов и сравнения платформ. ## Запуск Есть два основных способа запуска: локально с SQLite или через Docker Compose с Postgres. ### 1) Локально (SQLite) По умолчанию приложение пытается подключиться к Postgres. Если он недоступен, код автоматически переключится на SQLite. Чтобы явно форсировать SQLite: - PowerShell (Windows): ``` $env:USE_SQLITE = '1' $env:SQLITE_PATH = 'survey.db' # необязательно, по умолчанию survey.db python main.py # или flask --app main run ``` ### 2) Docker Compose (Postgres) В проекте есть `docker-compose.yml` c сервисами `db` (Postgres) и `flask-app`. ``` docker-compose up -d ``` После поднятия контейнеров приложение доступно на `http://localhost:3333`. Переменные окружения для подключения к Postgres уже прописаны в `docker-compose.yml`: - `POSTGRES_HOST=db` - `POSTGRES_DB=survey` - `POSTGRES_USER=servey` - `POSTGRES_PASSWORD=utOgbZ09servey` ## База данных и фолбэк В `models.py` используется следующая логика инициализации БД: - Если установлено `USE_SQLITE=1`, используется SQLite (файл `survey.db`). - Иначе выполняется попытка подключения к Postgres. Если соединение не удалось (например, приложение запущено вне Docker и хост `db` недоступен), приложение автоматически переключается на SQLite. При первом запуске таблицы создаются автоматически. ## Миграция данных из SQLite в Postgres В проекте есть скрипт `migrate_sqlite_to_postgres.py` (используйте его при необходимости переноса данных). Перед миграцией убедитесь, что Postgres доступен и параметры подключения верны. ## Полезные команды - Установка зависимостей: ``` pip install -r requirements.txt ``` - Запуск Flask локально: ``` flask --app main run --debug ``` ## Переменные окружения - `USE_SQLITE` — если `1`, принудительно использовать SQLite. - `SQLITE_PATH` — путь к файлу базы SQLite (по умолчанию `survey.db`). - `POSTGRES_HOST` — хост Postgres (по умолчанию `db`). - `POSTGRES_PORT` — порт Postgres (по умолчанию `5432`). - `POSTGRES_DB` — имя БД (по умолчанию `survey`). - `POSTGRES_USER` — пользователь Postgres (по умолчанию `servey`). - `POSTGRES_PASSWORD` — пароль Postgres. ## Замечания по безопасности Текущие значения по умолчанию для доступа к Postgres предназначены для локальной разработки и Docker. Для продакшена обязательно замените пароли и настройте защищённые секреты.