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