Files
Mini-ERP-app/PROJECT_STRUCTURE.md
2025-08-27 12:47:23 +04:00

227 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 📁 Структура проекта 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