Init project

This commit is contained in:
2025-08-27 12:47:23 +04:00
commit 9ee249de29
24 changed files with 2449 additions and 0 deletions

226
PROJECT_STRUCTURE.md Normal file
View File

@@ -0,0 +1,226 @@
# 📁 Структура проекта ERP MVP
```
erp-mvp/
├── 📁 core-service/ # Go Backend (Core API)
│ ├── 📁 cmd/
│ │ └── main.go # Точка входа приложения
│ ├── 📁 internal/
│ │ ├── 📁 api/ # HTTP API handlers
│ │ ├── 📁 config/ # Конфигурация
│ │ ├── 📁 database/ # Работа с БД
│ │ ├── 📁 grpc/ # gRPC клиенты/серверы
│ │ ├── 📁 logger/ # Логирование
│ │ ├── 📁 models/ # Модели данных
│ │ ├── 📁 redis/ # Redis клиент
│ │ └── 📁 services/ # Бизнес-логика
│ ├── 📁 pkg/ # Публичные пакеты
│ ├── 📁 proto/ # Сгенерированные Protocol Buffers
│ ├── go.mod # Go зависимости
│ ├── go.sum # Go checksums
│ └── Dockerfile # Docker образ
├── 📁 doc-service/ # Python Document Service
│ ├── 📁 app/
│ │ ├── 📁 api/ # FastAPI роуты
│ │ │ ├── routes/
│ │ │ └── middleware/
│ │ ├── 📁 core/ # Основная логика
│ │ │ ├── redis_client.py
│ │ │ └── logging.py
│ │ ├── 📁 models/ # Pydantic модели
│ │ │ └── document.py
│ │ ├── 📁 services/ # Сервисы генерации документов
│ │ │ ├── pdf_service.py
│ │ │ ├── excel_service.py
│ │ │ └── qr_service.py
│ │ ├── 📁 templates/ # Jinja2 шаблоны
│ │ ├── config.py # Конфигурация
│ │ └── main.py # Точка входа
│ ├── 📁 output/ # Генерируемые документы
│ ├── requirements.txt # Python зависимости
│ └── Dockerfile # Docker образ
├── 📁 frontend/ # Angular PWA Frontend
│ ├── 📁 src/
│ │ ├── 📁 app/
│ │ │ ├── 📁 components/ # Angular компоненты
│ │ │ │ ├── header/
│ │ │ │ ├── qr-scanner/
│ │ │ │ ├── location-details/
│ │ │ │ ├── item-list/
│ │ │ │ └── search/
│ │ │ ├── 📁 services/ # Angular сервисы
│ │ │ │ ├── api.service.ts
│ │ │ │ ├── auth.service.ts
│ │ │ │ └── auth.interceptor.ts
│ │ │ ├── 📁 store/ # NgRx store
│ │ │ │ ├── app.reducers.ts
│ │ │ │ ├── app.effects.ts
│ │ │ │ └── app.actions.ts
│ │ │ ├── 📁 models/ # TypeScript модели
│ │ │ ├── app.component.ts
│ │ │ ├── app.module.ts
│ │ │ └── app-routing.module.ts
│ │ ├── 📁 assets/ # Статические ресурсы
│ │ ├── 📁 environments/ # Конфигурация окружений
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── styles.scss
│ │ └── manifest.webmanifest # PWA манифест
│ ├── package.json # Node.js зависимости
│ ├── angular.json # Angular конфигурация
│ ├── nginx.conf # Nginx конфигурация
│ └── Dockerfile # Docker образ
├── 📁 proto/ # Protocol Buffers
│ ├── core.proto # Core Service API
│ ├── document.proto # Document Service API
│ └── events.proto # Event-driven сообщения
├── 📁 docker/ # Docker конфигурации
│ ├── 📁 postgres/
│ │ └── init.sql # Инициализация БД
│ ├── 📁 prometheus/
│ │ └── prometheus.yml # Prometheus конфигурация
│ └── 📁 grafana/
│ └── provisioning/ # Grafana дашборды
├── docker-compose.yml # Основной compose файл
├── README.md # Основная документация
├── STARTUP.md # Инструкции по запуску
└── PROJECT_STRUCTURE.md # Этот файл
```
## 🔧 Технологический стек
### Core Service (Go)
- **Framework:** Gin (HTTP сервер)
- **Database:** PostgreSQL (основная БД)
- **Cache:** Redis (кэширование)
- **Auth:** JWT (аутентификация)
- **gRPC:** Protocol Buffers (межсервисная коммуникация)
- **Logging:** logrus/zerolog (структурированное логирование)
- **Monitoring:** Prometheus (метрики)
### Document Service (Python)
- **Framework:** FastAPI (веб-фреймворк)
- **PDF:** reportlab, weasyprint (генерация PDF)
- **Excel:** openpyxl (работа с Excel)
- **Word:** python-docx (работа с Word)
- **QR:** qrcode (генерация QR-кодов)
- **Templates:** Jinja2 (шаблонизация)
- **Cache:** Redis (кэширование документов)
- **gRPC:** grpcio (межсервисная коммуникация)
### Frontend (Angular)
- **Framework:** Angular 17+ (SPA фреймворк)
- **PWA:** @angular/service-worker (Progressive Web App)
- **UI:** Angular Material (компоненты UI)
- **Styling:** Tailwind CSS (утилитарные стили)
- **QR Scanner:** @zxing/ngx-scanner (сканирование QR)
- **State:** NgRx (управление состоянием)
- **HTTP:** HttpClient (API запросы)
### Infrastructure
- **Containerization:** Docker + Docker Compose
- **Database:** PostgreSQL 15 (основная БД)
- **Cache:** Redis 7 (кэширование)
- **Gateway:** Traefik (опционально)
- **Monitoring:** Prometheus + Grafana (опционально)
- **Web Server:** Nginx (для frontend)
## 🚀 Архитектура
### Микросервисная архитектура
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Angular PWA │ │ Go Core │ │ PostgreSQL │
│ (Frontend) │◄──►│ Service │◄──►│ (Database) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ QR Scanner │ │ Python Doc │
│ (Camera) │ │ Service │
└─────────────────┘ └─────────────────┘
┌─────────────────┐
│ Redis Cache │
│ (Documents) │
└─────────────────┘
```
### Коммуникация между сервисами
- **Frontend ↔ Core Service:** REST API (HTTP/JSON)
- **Frontend ↔ Document Service:** REST API (HTTP/JSON)
- **Core Service ↔ Document Service:** gRPC (Protocol Buffers)
- **Все сервисы ↔ Redis:** Redis Protocol (кэширование)
## 📊 База данных
### Основные таблицы
- **organizations** - Организации/компании
- **users** - Пользователи системы
- **storage_locations** - Места хранения
- **items** - Товары/материалы
- **item_placements** - Размещение товаров
- **operations** - Операции с товарами
### Индексы
- Организация-scope индексы для всех таблиц
- Индексы по типам и категориям
- Временные индексы для аналитики
## 🔐 Безопасность
### Аутентификация
- JWT токены с refresh механизмом
- Organization-scope на всех данных
- Middleware для проверки прав доступа
### Валидация
- Входная валидация всех параметров
- SQL injection protection
- XSS protection в frontend
### HTTPS
- Обязательное использование HTTPS в продакшене
- Secure cookies для JWT
- CORS настройки для PWA
## 📱 PWA Особенности
### Service Worker
- Кэширование статических ресурсов
- Offline fallback для базовых функций
- Background sync для операций
### QR Scanner
- WebRTC для доступа к камере
- Real-time распознавание QR-кодов
- Fallback на ручной ввод
### Установка
- Manifest для установки как нативное приложение
- Splash screen и иконки
- Автоматические обновления
## 🚀 Развертывание
### Docker Compose
- Все сервисы в отдельных контейнерах
- Автоматическая инициализация БД
- Готовые образы для быстрого старта
### Мониторинг
- Prometheus для сбора метрик
- Grafana для визуализации
- Structured logging для всех сервисов
### Масштабирование
- Горизонтальное масштабирование сервисов
- Load balancing через Traefik
- Кэширование через Redis