4.8 KiB
4.8 KiB
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
Возвращает:
vendorscategoriesproductsproduct_links(product_id -> category_id)links(агрегированныеvendor_id -> category_id, для совместимости)
scope:
infra- инфраструктурный контур.ib(илиsec/security) - контур ИБ.
Админ-доступ
- Логин:
batman - Пароль:
batmannotmont
Админка: что умеет
- Переключение режима
Инфраструктура / ИБчерез?scope=.... - Добавление/удаление вендоров.
- Добавление/удаление категорий.
- Добавление/удаление продуктов (продукт принадлежит вендору).
- Редактирование матрицы
продукт × категориячекбоксами. - При сохранении автоматически пересобираются агрегированные связи
вендор × категория.
Структура БД (SQLite)
Infra
vendorscategoriesvendor_categoriesproductsproduct_categories
IB
ib_vendorsib_categoriesib_vendor_categoriesib_productsib_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
Порт:
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, не пушится).
Заметки
- Приложение хранит данные в
matrix.db. - Для продакшена рекомендуется задать переменную
SECRET_KEY. - В режиме
ИБинтерфейс получает более красный фон (отдельная визуальная тема). - На главной:
- логотип MONT слева без овального контейнера;
- hero-блок с горным фоном;
- подпись внизу справа:
Made by Galyaviev,ruslan@ipcom.su.