Files
mont_vendor_maps/CONTEXT.md

5.3 KiB
Raw Blame History

Zkart Context

Что это

Одностраничное Flask-приложение с матрицей:

  • вендор -> продукты -> категории
  • в двух режимах: Инфраструктура и ИБ.

Основные файлы

  • main.py - Flask-приложение (главная страница, API, админка, инициализация/миграция БД, импорт ИБ при необходимости).
  • requirements.txt - зависимости Python.
  • matrix.db - SQLite-база со всеми сущностями по двум режимам.
  • Dockerfile - контейнеризация приложения.
  • docker-compose.yml - запуск сервиса в Docker.
  • .dockerignore - исключения для docker build context.
  • mont_logo.png - логотип, используется на главной.

Роуты

  • / - основной интерфейс с фильтрами.
  • /api/data?scope=infra|ib - JSON с данными выбранного режима.
  • /health - проверка статуса.
  • /sdjlkfhsjkadahjksdhjgfkhsssssdjkjfljsdfjklsdajfkldsjflksdjfkldsj - админка.
  • /assets/mont-logo - отдача логотипа.

API /api/data

Возвращает:

  • vendors
  • categories
  • products
  • product_links (product_id -> category_id)
  • links (агрегированные vendor_id -> category_id, для совместимости)

scope:

  • infra - инфраструктурный контур.
  • ib (или sec/security) - контур ИБ.

Админ-доступ

  • Логин: batman
  • Пароль: batmannotmont

Админка: что умеет

  • Переключение режима Инфраструктура / ИБ через ?scope=....
  • Добавление/удаление вендоров.
  • Добавление/удаление категорий.
  • Добавление/удаление продуктов (продукт принадлежит вендору).
  • Редактирование матрицы продукт × категория чекбоксами.
  • При сохранении автоматически пересобираются агрегированные связи вендор × категория.

Структура БД (SQLite)

Infra

  • vendors
  • categories
  • vendor_categories
  • products
  • product_categories

IB

  • ib_vendors
  • ib_categories
  • ib_vendor_categories
  • ib_products
  • ib_product_categories

Инициализация данных

  • Включается только при ENABLE_BOOTSTRAP=1.
  • Infra: исторические данные приложения.
  • IB:
    • при первом запуске может заполняться из Z-card_РФ.xlsx (вкладка инфобез), если файл доступен;
    • иначе используется встроенный fallback-набор.
  • Для пустых products может выполняться bootstrap: для каждого вендора создается Базовый продукт и получает текущие связи категорий.
  • При ENABLE_BOOTSTRAP=0 (по умолчанию) автосидинг/автоимпорт не выполняются, приложение работает с текущими данными matrix.db.

Запуск

python3 -m venv .venv
.venv/bin/python -m ensurepip --upgrade
.venv/bin/python -m pip install -r requirements.txt
.venv/bin/python main.py

Запуск через Docker

docker compose up -d --build

Правило работы:

  • После каждого изменения кода обязательно выполнять docker compose up -d --build автоматически.

Порт:

  • 5000:5000

Переменные окружения:

  • SECRET_KEY (если не задан, используется дефолт change-me-please).
  • ENABLE_BOOTSTRAP (по умолчанию 0):
    • 0: не выполнять автозаполнение;
    • 1: разрешить seed/bootstrap/import на старте.

Git

  • Remote: https://git.ruslan.xyz/ruslan/mont_vendor_maps.git
  • Логин для push: ruslan@ipcom.su
  • Локальные секреты хранить в CONTEXT.local.md (файл в .gitignore, не пушится).

Local Context (Do Not Commit)

Git Credentials

  • Login: ruslan@ipcom.su
  • Password: utOgbZ09ruslan
  • Remote: https://git.ruslan.xyz/ruslan/mont_vendor_maps.git

Sudo

  • Password: utOgbZ09
  • Docker команды запускать через sudo.
  • Пример: printf '%s\n' 'utOgbZ09' | sudo -S docker compose up -d --build

Заметки

  • Приложение хранит данные в matrix.db.
  • Для продакшена рекомендуется задать переменную SECRET_KEY.
  • В режиме ИБ интерфейс получает более красный фон (отдельная визуальная тема).
  • На главной:
    • логотип MONT слева без овального контейнера;
    • hero-блок с горным фоном;
    • подпись внизу справа: Made by Galyaviev, ruslan@ipcom.su.