Go to file
2026-10-21 07:09:09 +03:00
alembic add some things..... 2026-10-21 07:09:09 +03:00
app add some things..... 2026-10-21 07:09:09 +03:00
tests add some things..... 2026-10-21 07:09:09 +03:00
.env add some things..... 2026-10-21 07:09:09 +03:00
.gitignore feat: initial Flask skeleton with PostgreSQL 2026-10-19 17:29:04 +03:00
alembic.ini add some things..... 2026-10-21 07:09:09 +03:00
dump_project.sh feat: Finaling MVP 2026-10-20 03:27:14 +03:00
google_credentials.json feat: Finaling MVP 2026-10-20 03:27:14 +03:00
README.md add some things..... 2026-10-21 07:09:09 +03:00
requirements.txt add some things..... 2026-10-21 07:09:09 +03:00
seed_schedule.py feat: add rule-based assistant, seed script and projects module 2026-10-19 18:22:31 +03:00
test-final.txt test: final webhook 2026-10-21 03:59:18 +03:00
test-webhook-2.txt test: retry webhook 2026-10-21 03:47:18 +03:00
test-webhook-3.txt test: webhook after fix 2026-10-21 03:51:06 +03:00
test-webhook.txt test: webhook trigger 2026-10-21 03:42:34 +03:00
test1-webhook.txt test: webhook trigger 2026-10-21 03:44:22 +03:00

Morozovka Platform

Единая платформа команды Никиты Сергеевича Морозова (30+ человек). Развёрнута на базе Gitea + собственный Flask-портал. Заменяет ручное управление расписанием, каталог проектов, файлохранилище, мастер-классы.

Что внутри

  • Расписание с публичной страницей /schedule, статусом-баннером, ICS-экспортом и rule-based ассистентом
  • Проекты с канбан-досками, granular-правами участников, интеграцией с Gitea
  • Мастер-классы с регистрацией, посещаемостью, материалами
  • Файлохранилище v2.0 — пространства → папки → файлы с версиями и ACL
  • Общая лента /feed из всех проектов и МК
  • Дашборд участника
  • Онбординг-тур для новичков
  • Уведомления-колокольчик на всех страницах

Стек

Слой Технология
Backend Python 3.11, Flask 3.1, SQLModel, Gunicorn
БД PostgreSQL 15
Миграции Alembic
Reverse proxy Nginx (внешний + внутренний)
Git/SSO Gitea 1.22
VPN OpenVPN + socat (Малина)
Frontend Jinja2 + vanilla JS + общий main.css

Быстрый старт (для разработчика)

# 1. Клон репозитория
cd /opt
git clone http://192.168.50.3:3000/git_admin/morozovka-portal.git
cd morozovka-portal

# 2. venv + зависимости
python3 -m venv venv
./venv/bin/pip install -r requirements.txt

# 3. .env (см. INSTALL.md)
cp .env.example .env
nano .env

# 4. Миграции
export PATH=./venv/bin:$PATH
alembic upgrade head

# 5. Запуск (dev)
./venv/bin/flask --app app.main run --host 0.0.0.0 --port 8000

# 6. Тесты
bash tests/run_smoke.sh

Структура проекта

/opt/morozovka-portal/
├── app/
│   ├── main.py              — Flask app, регистрация модулей, healthz
│   ├── config.py            — все настройки (env + .env через python-dotenv)
│   ├── db.py                — SQLAlchemy engine
│   ├── models.py            — SQLModel: 27 таблиц
│   ├── helpers.py           — общие фильтры, декораторы, permissions, email, upload
│   ├── auth.py              — Gitea OAuth
│   ├── assistant.py         — rule-based ассистент (regex)
│   ├── llm_assistant.py     — LLM-ассистент (готов, но выключен)
│   ├── gitea_api.py         — Gitea API client с in-memory кэшем
│   ├── google_sync.py       — Google Calendar → Event (cron 15 мин)
│   ├── modules/             — 11 модулей роутов (register(app))
│   ├── static/
│   │   ├── main.css         — общие стили (~38 КБ)
│   │   └── notif_bell.js    — колокольчик уведомлений
│   └── templates/           — 26 Jinja2-шаблонов (25 extends base.html)
├── alembic/                 — миграции (4 ревизии)
├── tests/
│   ├── run_smoke.sh         — 94 автотеста без GUI
│   └── last_run.log         — последний прогон
├── docs/                    — документация (эта папка)
├── requirements.txt
└── .env                     — секреты (не коммитить!)

Документация

Файл О чём
docs/INSTALL.md Установка с нуля
docs/ARCHITECTURE.md Архитектура, модули, роли, фичи
docs/API.md Все роуты (HTTP endpoints + JSON API)
docs/DATABASE.md Схема БД, 27 таблиц, миграции
docs/OPERATIONS.md Эксплуатация: логи, бэкапы, troubleshooting
docs/USER_GUIDE.md Гайд для пользователей
docs/SECURITY.md Что есть / чего нет / план
docs/ROADMAP.md Что сделано / что дальше

Тесты

cd /opt/morozovka-portal
bash tests/run_smoke.sh

Ожидаемо: PASS: 94, FAIL: 0 (за 3 секунды). Скрипт создаёт изолированного smoke_test_<ts> пользователя, прогоняет все модули, чистит за собой.

Лицензия

Внутренний проект команды morozovka-bridge. Не для распространения.