update documentation
This commit is contained in:
@@ -40,10 +40,10 @@
|
||||
|
||||
## 🛠️ Технологический стек
|
||||
|
||||
**Backend:** Go + PostgreSQL + JWT auth
|
||||
**Frontend:** React PWA (мобильный)
|
||||
**Печать:** PDF генерация
|
||||
**Инфраструктура:** Docker + HTTPS
|
||||
**Core Service:** Go (Gin) + PostgreSQL + JWT auth + gRPC
|
||||
**Document Service:** Python (FastAPI) + Redis + Document libraries
|
||||
**Frontend:** Angular PWA (мобильный) + Material UI
|
||||
**Инфраструктура:** Docker + gRPC + Redis + HTTPS
|
||||
|
||||
---
|
||||
|
||||
@@ -53,12 +53,44 @@
|
||||
**Команда:** 2 разработчика + 1 дизайнер
|
||||
**Бюджет:** $30,000-50,000
|
||||
|
||||
### Этапы:
|
||||
1. **Фундамент** (2 недели) - инфраструктура, аутентификация
|
||||
2. **Шаблоны + QR** (3 недели) - генерация мест и кодов
|
||||
3. **Мобильное приложение** (2 недели) - PWA и сканирование
|
||||
4. **Базовые операции** (2 недели) - управление товарами
|
||||
5. **Тестирование** (1 неделя) - пилот с реальными пользователями
|
||||
### Этапы разработки
|
||||
|
||||
```mermaid
|
||||
gantt
|
||||
title MVP План разработки
|
||||
dateFormat YYYY-MM-DD
|
||||
section Фундамент
|
||||
Инфраструктура :fund, 2024-01-01, 7d
|
||||
Аутентификация :auth, after fund, 7d
|
||||
gRPC настройка :grpc, after auth, 7d
|
||||
|
||||
section Document Service
|
||||
Python сервис :python, after grpc, 7d
|
||||
PDF генерация :pdf, after python, 7d
|
||||
|
||||
section Шаблоны + QR
|
||||
Шаблоны помещений :templates, after pdf, 7d
|
||||
QR генерация :qr, after templates, 7d
|
||||
|
||||
section Angular PWA
|
||||
Фронтенд :frontend, after qr, 7d
|
||||
QR сканер :scanner, after frontend, 7d
|
||||
|
||||
section Операции
|
||||
Управление товарами :items, after scanner, 7d
|
||||
Поиск и размещение :operations, after items, 7d
|
||||
|
||||
section Тестирование
|
||||
Пилот :pilot, after operations, 7d
|
||||
```
|
||||
|
||||
### Детализация этапов:
|
||||
1. **Фундамент** (2 недели) - инфраструктура, аутентификация, gRPC
|
||||
2. **Document Service** (2 недели) - Python сервис, PDF генерация
|
||||
3. **Шаблоны + QR** (2 недели) - генерация мест и кодов
|
||||
4. **Angular PWA** (2 недели) - фронтенд и сканирование
|
||||
5. **Базовые операции** (2 недели) - управление товарами
|
||||
6. **Тестирование** (1 неделя) - пилот с реальными пользователями
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -62,17 +62,39 @@ Computer Vision функции будут добавлены после успе
|
||||
|
||||
## 🎯 Приоритеты реализации
|
||||
|
||||
### Этап 1: Распознавание чеков
|
||||
```mermaid
|
||||
gantt
|
||||
title Computer Vision Roadmap
|
||||
dateFormat YYYY-MM-DD
|
||||
section Распознавание чеков
|
||||
OCR интеграция :ocr, 2024-03-01, 14d
|
||||
ML модели :ml1, after ocr, 14d
|
||||
API интеграция :api1, after ml1, 14d
|
||||
|
||||
section Распознавание товаров
|
||||
Computer Vision API :cv, after api1, 21d
|
||||
Обучение моделей :train, after cv, 21d
|
||||
Классификация :classify, after train, 14d
|
||||
|
||||
section Анализ пространства
|
||||
Object Detection :detect, after classify, 28d
|
||||
3D reconstruction :3d, after detect, 21d
|
||||
Интеграция с UI :ui, after 3d, 14d
|
||||
```
|
||||
|
||||
### Детализация этапов:
|
||||
|
||||
#### Этап 1: Распознавание чеков
|
||||
- **Время:** 4-6 недель
|
||||
- **Команда:** 1 ML инженер + 1 разработчик
|
||||
- **Сложность:** Средняя
|
||||
|
||||
### Этап 2: Распознавание товаров
|
||||
#### Этап 2: Распознавание товаров
|
||||
- **Время:** 6-8 недель
|
||||
- **Команда:** 1 ML инженер + 1 разработчик
|
||||
- **Сложность:** Высокая
|
||||
|
||||
### Этап 3: Анализ пространства
|
||||
#### Этап 3: Анализ пространства
|
||||
- **Время:** 8-10 недель
|
||||
- **Команда:** 1 ML инженер + 1 разработчик + 1 дизайнер
|
||||
- **Сложность:** Очень высокая
|
||||
|
||||
@@ -8,19 +8,66 @@
|
||||
|
||||
## 📊 Основные аналитические модули
|
||||
|
||||
### 1. Анализ движения товаров
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph "Аналитические модули"
|
||||
A[Анализ движения товаров]
|
||||
B[Анализ складского пространства]
|
||||
C[Финансовая аналитика]
|
||||
end
|
||||
|
||||
subgraph "Компоненты"
|
||||
A1[Оборот товаров]
|
||||
A2[Популярные товары]
|
||||
A3[Сезонность спроса]
|
||||
A4[Прогнозирование]
|
||||
|
||||
B1[Загруженность мест]
|
||||
B2[Эффективность использования]
|
||||
B3[Горячие зоны]
|
||||
B4[Рекомендации]
|
||||
|
||||
C1[Стоимость запасов]
|
||||
C2[Оборачиваемость]
|
||||
C3[Прибыльность]
|
||||
C4[Анализ поставщиков]
|
||||
end
|
||||
|
||||
A --> A1
|
||||
A --> A2
|
||||
A --> A3
|
||||
A --> A4
|
||||
|
||||
B --> B1
|
||||
B --> B2
|
||||
B --> B3
|
||||
B --> B4
|
||||
|
||||
C --> C1
|
||||
C --> C2
|
||||
C --> C3
|
||||
C --> C4
|
||||
|
||||
style A fill:#e3f2fd
|
||||
style B fill:#f3e5f5
|
||||
style C fill:#e8f5e8
|
||||
```
|
||||
|
||||
### Детализация модулей:
|
||||
|
||||
#### 1. Анализ движения товаров
|
||||
- **Оборот товаров** по периодам
|
||||
- **Популярные товары** и категории
|
||||
- **Сезонность** спроса
|
||||
- **Прогнозирование** потребности
|
||||
|
||||
### 2. Анализ складского пространства
|
||||
#### 2. Анализ складского пространства
|
||||
- **Загруженность** мест хранения
|
||||
- **Эффективность** использования пространства
|
||||
- **Горячие зоны** и узкие места
|
||||
- **Рекомендации** по оптимизации
|
||||
|
||||
### 3. Финансовая аналитика
|
||||
#### 3. Финансовая аналитика
|
||||
- **Стоимость** товарных запасов
|
||||
- **Оборачиваемость** товаров
|
||||
- **Прибыльность** по категориям
|
||||
|
||||
@@ -140,22 +140,49 @@
|
||||
|
||||
## 📅 План реализации
|
||||
|
||||
### Этап 1: Интеграции (6-8 недель)
|
||||
```mermaid
|
||||
gantt
|
||||
title Расширенные функции - Roadmap
|
||||
dateFormat YYYY-MM-DD
|
||||
section Интеграции
|
||||
API поставщиков :suppliers, 2024-06-01, 21d
|
||||
Бухгалтерия :accounting, after suppliers, 21d
|
||||
Маркетплейсы :marketplaces, after accounting, 14d
|
||||
|
||||
section Офлайн режим
|
||||
Офлайн функциональность :offline, after marketplaces, 21d
|
||||
Синхронизация :sync, after offline, 14d
|
||||
Конфликт-менеджмент :conflict, after sync, 7d
|
||||
|
||||
section AI функции
|
||||
Умные подсказки :ai1, after conflict, 28d
|
||||
Автоматизация :ai2, after ai1, 28d
|
||||
Чат-бот :ai3, after ai2, 14d
|
||||
|
||||
section Аналитика
|
||||
Предиктивная :analytics1, after ai3, 21d
|
||||
Бизнес-аналитика :analytics2, after analytics1, 21d
|
||||
Операционная :analytics3, after analytics2, 14d
|
||||
```
|
||||
|
||||
### Детализация этапов:
|
||||
|
||||
#### Этап 1: Интеграции (6-8 недель)
|
||||
- API интеграции с поставщиками
|
||||
- Экспорт в бухгалтерские системы
|
||||
- Базовые интеграции с маркетплейсами
|
||||
|
||||
### Этап 2: Офлайн режим (4-6 недель)
|
||||
#### Этап 2: Офлайн режим (4-6 недель)
|
||||
- Полная офлайн функциональность
|
||||
- Синхронизация данных
|
||||
- Конфликт-менеджмент
|
||||
|
||||
### Этап 3: AI функции (8-12 недель)
|
||||
#### Этап 3: AI функции (8-12 недель)
|
||||
- Умные подсказки
|
||||
- Автоматизация процессов
|
||||
- Чат-бот поддержка
|
||||
|
||||
### Этап 4: Расширенная аналитика (6-8 недель)
|
||||
#### Этап 4: Расширенная аналитика (6-8 недель)
|
||||
- Предиктивная аналитика
|
||||
- Бизнес-аналитика
|
||||
- Операционная аналитика
|
||||
|
||||
@@ -62,15 +62,29 @@
|
||||
- **Кэширование:** Redis
|
||||
- **Аутентификация:** JWT
|
||||
|
||||
### Core Service
|
||||
- **Язык:** Go (Gin)
|
||||
- **База данных:** PostgreSQL
|
||||
- **Аутентификация:** JWT
|
||||
- **Межсервисная коммуникация:** gRPC
|
||||
|
||||
### Document Service
|
||||
- **Язык:** Python (FastAPI)
|
||||
- **Кэширование:** Redis
|
||||
- **Документы:** PDF, Excel, Word
|
||||
- **Шаблоны:** Jinja2
|
||||
|
||||
### Frontend
|
||||
- **Фреймворк:** React PWA
|
||||
- **Дизайн:** Мобильно-ориентированный
|
||||
- **Печать:** PDF генерация
|
||||
- **Фреймворк:** Angular PWA
|
||||
- **Дизайн:** Material UI + Tailwind CSS
|
||||
- **QR Scanner:** @zxing/ngx-scanner
|
||||
- **State Management:** NgRx
|
||||
|
||||
### Инфраструктура
|
||||
- **Контейнеризация:** Docker
|
||||
- **Безопасность:** HTTPS, шифрование данных
|
||||
- **Мониторинг:** Структурированное логирование
|
||||
- **Контейнеризация:** Docker + Docker Compose
|
||||
- **Межсервисная коммуникация:** gRPC + Protocol Buffers
|
||||
- **Безопасность:** HTTPS, CORS, JWT
|
||||
- **Мониторинг:** Prometheus + Grafana
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -2,18 +2,34 @@
|
||||
|
||||
## 🏗️ Общая архитектура
|
||||
|
||||
```
|
||||
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
||||
│ React PWA │ │ Go Backend │ │ PostgreSQL │
|
||||
│ (Frontend) │◄──►│ (API) │◄──►│ (Database) │
|
||||
└─────────────────┘ └─────────────────┘ └─────────────────┘
|
||||
│ │
|
||||
│ │
|
||||
▼ ▼
|
||||
┌─────────────────┐ ┌─────────────────┐
|
||||
│ QR Scanner │ │ PDF Generator │
|
||||
│ (Camera) │ │ (Labels) │
|
||||
└─────────────────┘ └─────────────────┘
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph "Frontend"
|
||||
A[Angular PWA]
|
||||
B[QR Scanner]
|
||||
end
|
||||
|
||||
subgraph "Backend Services"
|
||||
C[Go Core Service]
|
||||
D[Python Document Service]
|
||||
end
|
||||
|
||||
subgraph "Infrastructure"
|
||||
E[PostgreSQL]
|
||||
F[Redis Cache]
|
||||
end
|
||||
|
||||
A <--> C
|
||||
B --> A
|
||||
C <--> E
|
||||
C <--> D
|
||||
D <--> F
|
||||
|
||||
style A fill:#ff9999
|
||||
style C fill:#99ccff
|
||||
style D fill:#99ff99
|
||||
style E fill:#ffcc99
|
||||
style F fill:#cc99ff
|
||||
```
|
||||
|
||||
---
|
||||
@@ -21,29 +37,102 @@
|
||||
## 🛠️ Технологический стек
|
||||
|
||||
### Backend (Go)
|
||||
- **Framework:** Gin или Echo
|
||||
- **Framework:** Gin (легкий и быстрый)
|
||||
- **Database:** PostgreSQL
|
||||
- **Authentication:** JWT
|
||||
- **Validation:** validator
|
||||
- **PDF Generation:** wkhtmltopdf или gofpdf
|
||||
- **Inter-service Communication:** gRPC + Protocol Buffers
|
||||
- **API Documentation:** Swagger/OpenAPI
|
||||
|
||||
### Frontend (React PWA)
|
||||
- **Framework:** React 18
|
||||
- **Build Tool:** Vite
|
||||
- **PWA:** Workbox
|
||||
- **QR Scanner:** react-qr-reader
|
||||
- **UI:** Tailwind CSS или Material-UI
|
||||
### Frontend (Angular PWA)
|
||||
- **Framework:** Angular 17+
|
||||
- **Build Tool:** Angular CLI
|
||||
- **PWA:** @angular/service-worker
|
||||
- **QR Scanner:** @zxing/ngx-scanner
|
||||
- **UI:** Angular Material + Tailwind CSS
|
||||
- **State Management:** NgRx (для сложной логики)
|
||||
|
||||
### Document Service (Python)
|
||||
- **Framework:** FastAPI (быстрый, автоматическая документация)
|
||||
- **PDF Generation:** reportlab + weasyprint
|
||||
- **Office Documents:** python-docx, openpyxl
|
||||
- **Templates:** Jinja2
|
||||
- **Caching:** Redis
|
||||
- **Inter-service Communication:** gRPC
|
||||
|
||||
### Infrastructure
|
||||
- **Containerization:** Docker
|
||||
- **Deployment:** Docker Compose
|
||||
- **Security:** HTTPS, CORS
|
||||
- **Monitoring:** Structured logging
|
||||
- **Orchestration:** Docker Compose
|
||||
- **Inter-service Communication:** gRPC + Protocol Buffers
|
||||
- **API Gateway:** Traefik (опционально)
|
||||
- **Security:** HTTPS, CORS, JWT
|
||||
- **Monitoring:** Structured logging + Prometheus
|
||||
|
||||
---
|
||||
|
||||
## 📊 Структура базы данных
|
||||
|
||||
### ER-диаграмма
|
||||
|
||||
```mermaid
|
||||
erDiagram
|
||||
organizations {
|
||||
uuid id PK
|
||||
varchar name
|
||||
varchar type
|
||||
jsonb settings
|
||||
timestamp created_at
|
||||
}
|
||||
|
||||
users {
|
||||
uuid id PK
|
||||
uuid organization_id FK
|
||||
varchar email
|
||||
varchar role
|
||||
timestamp created_at
|
||||
}
|
||||
|
||||
storage_locations {
|
||||
uuid id PK
|
||||
uuid organization_id FK
|
||||
uuid parent_id FK
|
||||
varchar name
|
||||
varchar address
|
||||
varchar type
|
||||
jsonb coordinates
|
||||
varchar qr_code
|
||||
timestamp created_at
|
||||
}
|
||||
|
||||
items {
|
||||
uuid id PK
|
||||
uuid organization_id FK
|
||||
varchar name
|
||||
text description
|
||||
varchar category
|
||||
timestamp created_at
|
||||
}
|
||||
|
||||
item_placements {
|
||||
uuid id PK
|
||||
uuid organization_id FK
|
||||
uuid item_id FK
|
||||
uuid location_id FK
|
||||
integer quantity
|
||||
timestamp created_at
|
||||
}
|
||||
|
||||
organizations ||--o{ users : "has"
|
||||
organizations ||--o{ storage_locations : "has"
|
||||
organizations ||--o{ items : "has"
|
||||
organizations ||--o{ item_placements : "has"
|
||||
|
||||
storage_locations ||--o{ storage_locations : "parent-child"
|
||||
storage_locations ||--o{ item_placements : "contains"
|
||||
|
||||
items ||--o{ item_placements : "placed_in"
|
||||
```
|
||||
|
||||
### Основные таблицы
|
||||
|
||||
```sql
|
||||
@@ -103,51 +192,156 @@ CREATE TABLE item_placements (
|
||||
|
||||
## 🔌 API Endpoints
|
||||
|
||||
### Аутентификация
|
||||
### Core Service (Go) - REST API
|
||||
```
|
||||
# Аутентификация
|
||||
POST /api/auth/login
|
||||
POST /api/auth/register
|
||||
POST /api/auth/refresh
|
||||
```
|
||||
|
||||
### Организации
|
||||
```
|
||||
# Организации
|
||||
GET /api/organizations/:id
|
||||
PUT /api/organizations/:id
|
||||
```
|
||||
|
||||
### Места хранения
|
||||
```
|
||||
# Места хранения
|
||||
GET /api/locations
|
||||
POST /api/locations
|
||||
GET /api/locations/:id
|
||||
PUT /api/locations/:id
|
||||
DELETE /api/locations/:id
|
||||
POST /api/locations/:id/qr-code
|
||||
```
|
||||
|
||||
### Товары
|
||||
```
|
||||
# Товары
|
||||
GET /api/items
|
||||
POST /api/items
|
||||
GET /api/items/:id
|
||||
PUT /api/items/:id
|
||||
DELETE /api/items/:id
|
||||
```
|
||||
|
||||
### Операции
|
||||
```
|
||||
# Операции
|
||||
POST /api/operations/place-item
|
||||
POST /api/operations/move-item
|
||||
GET /api/operations/search
|
||||
```
|
||||
|
||||
### Шаблоны
|
||||
```
|
||||
# Шаблоны
|
||||
GET /api/templates
|
||||
POST /api/templates/:id/apply
|
||||
```
|
||||
|
||||
### Document Service (Python) - REST API
|
||||
```
|
||||
# Документы
|
||||
POST /api/documents/generate-pdf
|
||||
POST /api/documents/generate-excel
|
||||
GET /api/documents/:id/status
|
||||
GET /api/documents/:id/download
|
||||
|
||||
# Шаблоны документов
|
||||
GET /api/templates
|
||||
POST /api/templates
|
||||
PUT /api/templates/:id
|
||||
DELETE /api/templates/:id
|
||||
```
|
||||
|
||||
## 🔄 Межсервисная коммуникация
|
||||
|
||||
### gRPC Services
|
||||
|
||||
#### Core Service → Document Service
|
||||
```protobuf
|
||||
service DocumentService {
|
||||
rpc GenerateQRCode(QRCodeRequest) returns (QRCodeResponse);
|
||||
rpc GenerateReport(ReportRequest) returns (ReportResponse);
|
||||
rpc GetDocumentStatus(StatusRequest) returns (StatusResponse);
|
||||
}
|
||||
```
|
||||
|
||||
#### Document Service → Core Service
|
||||
```protobuf
|
||||
service CoreService {
|
||||
rpc GetLocationData(LocationRequest) returns (LocationResponse);
|
||||
rpc GetItemData(ItemRequest) returns (ItemResponse);
|
||||
rpc ValidateTemplate(TemplateRequest) returns (TemplateResponse);
|
||||
}
|
||||
```
|
||||
|
||||
### События (Event-Driven)
|
||||
```protobuf
|
||||
message DocumentEvent {
|
||||
string event_type; // "qr_generated", "report_ready"
|
||||
string document_id;
|
||||
string organization_id;
|
||||
google.protobuf.Timestamp timestamp;
|
||||
}
|
||||
```
|
||||
|
||||
## 🔄 Диаграммы последовательности
|
||||
|
||||
### Генерация QR-кода
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant F as Frontend
|
||||
participant C as Core Service
|
||||
participant D as Document Service
|
||||
participant R as Redis
|
||||
|
||||
F->>C: POST /api/locations/:id/qr-code
|
||||
C->>D: gRPC GenerateQRCode()
|
||||
D->>D: Generate QR code
|
||||
D->>R: Cache document
|
||||
D->>C: Return document URL
|
||||
C->>F: Return QR code data
|
||||
```
|
||||
|
||||
### Размещение товара
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant U as User
|
||||
participant F as Frontend
|
||||
participant C as Core Service
|
||||
participant DB as Database
|
||||
|
||||
U->>F: Scan QR code
|
||||
F->>F: Decode location ID
|
||||
F->>C: GET /api/locations/:id
|
||||
C->>DB: Query location
|
||||
DB->>C: Return location data
|
||||
C->>F: Return location info
|
||||
F->>U: Show location details
|
||||
|
||||
U->>F: Select item & quantity
|
||||
F->>C: POST /api/operations/place-item
|
||||
C->>DB: Create placement
|
||||
DB->>C: Confirm placement
|
||||
C->>F: Return success
|
||||
F->>U: Show confirmation
|
||||
```
|
||||
|
||||
### Поиск товара
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant U as User
|
||||
participant F as Frontend
|
||||
participant C as Core Service
|
||||
participant R as Redis
|
||||
participant DB as Database
|
||||
|
||||
U->>F: Search query
|
||||
F->>C: GET /api/operations/search?q=query
|
||||
C->>R: Check cache
|
||||
alt Cache hit
|
||||
R->>C: Return cached results
|
||||
else Cache miss
|
||||
C->>DB: Search items & locations
|
||||
DB->>C: Return results
|
||||
C->>R: Cache results
|
||||
end
|
||||
C->>F: Return search results
|
||||
F->>U: Display results
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔐 Безопасность
|
||||
@@ -194,23 +388,39 @@ POST /api/templates/:id/apply
|
||||
```yaml
|
||||
version: '3.8'
|
||||
services:
|
||||
backend:
|
||||
build: ./backend
|
||||
# Core Service (Go)
|
||||
core-service:
|
||||
build: ./core-service
|
||||
ports:
|
||||
- "8080:8080"
|
||||
environment:
|
||||
- DB_HOST=postgres
|
||||
- JWT_SECRET=your-secret
|
||||
- DOC_SERVICE_URL=http://doc-service:8000
|
||||
depends_on:
|
||||
- postgres
|
||||
- redis
|
||||
|
||||
# Document Service (Python)
|
||||
doc-service:
|
||||
build: ./doc-service
|
||||
ports:
|
||||
- "8000:8000"
|
||||
environment:
|
||||
- REDIS_URL=redis://redis:6379
|
||||
- CORE_SERVICE_URL=http://core-service:8080
|
||||
depends_on:
|
||||
- redis
|
||||
|
||||
# Frontend (Angular)
|
||||
frontend:
|
||||
build: ./frontend
|
||||
ports:
|
||||
- "3000:80"
|
||||
depends_on:
|
||||
- backend
|
||||
- core-service
|
||||
|
||||
# Database
|
||||
postgres:
|
||||
image: postgres:15
|
||||
environment:
|
||||
@@ -220,26 +430,134 @@ services:
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
|
||||
# Cache
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
ports:
|
||||
- "6379:6379"
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
|
||||
# API Gateway (опционально)
|
||||
traefik:
|
||||
image: traefik:v2.10
|
||||
command:
|
||||
- --api.insecure=true
|
||||
- --providers.docker=true
|
||||
ports:
|
||||
- "80:80"
|
||||
- "8081:8080"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
|
||||
volumes:
|
||||
postgres_data:
|
||||
redis_data:
|
||||
```
|
||||
|
||||
### Структура проекта
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[erp-mvp/] --> B[core-service/]
|
||||
A --> C[doc-service/]
|
||||
A --> D[frontend/]
|
||||
A --> E[proto/]
|
||||
A --> F[docker-compose.yml]
|
||||
|
||||
B --> B1[cmd/]
|
||||
B --> B2[internal/]
|
||||
B --> B3[pkg/]
|
||||
B --> B4[proto/]
|
||||
B --> B5[Dockerfile]
|
||||
|
||||
C --> C1[app/]
|
||||
C --> C2[templates/]
|
||||
C --> C3[proto/]
|
||||
C --> C4[Dockerfile]
|
||||
|
||||
D --> D1[src/]
|
||||
D --> D2[angular.json]
|
||||
D --> D3[Dockerfile]
|
||||
|
||||
E --> E1[core.proto]
|
||||
E --> E2[document.proto]
|
||||
E --> E3[events.proto]
|
||||
|
||||
style A fill:#e1f5fe
|
||||
style B fill:#f3e5f5
|
||||
style C fill:#e8f5e8
|
||||
style D fill:#fff3e0
|
||||
style E fill:#fce4ec
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📚 Конкретные библиотеки и фреймворки
|
||||
|
||||
### Core Service (Go)
|
||||
```go
|
||||
// Основные зависимости
|
||||
go.mod:
|
||||
- github.com/gin-gonic/gin v1.9.1 // HTTP framework
|
||||
- github.com/golang-jwt/jwt/v5 v5.0.0 // JWT authentication
|
||||
- github.com/lib/pq v1.10.9 // PostgreSQL driver
|
||||
- github.com/go-playground/validator/v10 // Validation
|
||||
- google.golang.org/grpc v1.58.0 // gRPC client/server
|
||||
- github.com/swaggo/gin-swagger v1.6.0 // API documentation
|
||||
- github.com/redis/go-redis/v9 v9.2.1 // Redis client
|
||||
```
|
||||
|
||||
### Document Service (Python)
|
||||
```python
|
||||
# requirements.txt
|
||||
fastapi==0.104.1 # Web framework
|
||||
uvicorn==0.24.0 # ASGI server
|
||||
reportlab==4.0.4 # PDF generation
|
||||
weasyprint==60.1 # HTML to PDF
|
||||
python-docx==1.1.0 # Word documents
|
||||
openpyxl==3.1.2 # Excel files
|
||||
jinja2==3.1.2 # Templates
|
||||
redis==5.0.1 # Redis client
|
||||
grpcio==1.59.0 # gRPC
|
||||
protobuf==4.24.4 # Protocol Buffers
|
||||
pydantic==2.4.2 # Data validation
|
||||
```
|
||||
|
||||
### Frontend (Angular)
|
||||
```json
|
||||
// package.json
|
||||
{
|
||||
"dependencies": {
|
||||
"@angular/core": "^17.0.0",
|
||||
"@angular/material": "^17.0.0",
|
||||
"@angular/service-worker": "^17.0.0",
|
||||
"@zxing/ngx-scanner": "^3.0.0",
|
||||
"@ngrx/store": "^17.0.0",
|
||||
"@ngrx/effects": "^17.0.0",
|
||||
"tailwindcss": "^3.3.0",
|
||||
"rxjs": "^7.8.0"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 📊 Мониторинг
|
||||
|
||||
### Логирование
|
||||
- Structured JSON логи
|
||||
- Уровни: DEBUG, INFO, WARN, ERROR
|
||||
- Correlation ID для отслеживания запросов
|
||||
- **Go:** logrus или zerolog для structured logging
|
||||
- **Python:** structlog для structured logging
|
||||
- **Frontend:** Angular logging service
|
||||
- Correlation ID для отслеживания запросов через все сервисы
|
||||
|
||||
### Метрики
|
||||
- Время отклика API
|
||||
- Количество ошибок
|
||||
- Активные пользователи
|
||||
- Операции в день
|
||||
- **Prometheus** для сбора метрик
|
||||
- **Grafana** для визуализации
|
||||
- Время отклика API по сервисам
|
||||
- Количество ошибок и их типы
|
||||
- Активные пользователи и операции
|
||||
|
||||
### Алерты
|
||||
- Высокое время отклика (>500ms)
|
||||
- Высокий процент ошибок (>5%)
|
||||
- Недоступность сервиса
|
||||
- Недоступность сервисов
|
||||
- Проблемы с генерацией документов
|
||||
|
||||
@@ -15,6 +15,24 @@
|
||||
- Кондитерские/пекарни
|
||||
- Мастерские по ремонту
|
||||
|
||||
### 1.3 Пользовательские сценарии
|
||||
|
||||
```mermaid
|
||||
journey
|
||||
title Пользовательский сценарий: Организация склада
|
||||
section Настройка
|
||||
Создание организации: 5: Мастер
|
||||
Выбор шаблона помещения: 4: Мастер
|
||||
Настройка размеров: 3: Мастер
|
||||
Генерация QR-кодов: 5: Система
|
||||
Печать этикеток: 4: Мастер
|
||||
section Использование
|
||||
Сканирование QR-кода: 5: Мастер
|
||||
Размещение товара: 4: Мастер
|
||||
Поиск товара: 5: Мастер
|
||||
Перемещение товара: 3: Мастер
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. Функциональные требования MVP
|
||||
@@ -37,8 +55,9 @@
|
||||
**Требования:**
|
||||
- Генерация уникальных QR-кодов для каждого места
|
||||
- Кодирование в QR: ID места, адрес, координаты
|
||||
- Печать этикеток на обычном принтере (A4)
|
||||
- Печать этикеток на обычном принтере (A4) через Document Service
|
||||
- Сетка этикеток на лист с предварительным просмотром
|
||||
- Кэширование сгенерированных QR-кодов в Redis
|
||||
|
||||
#### 2.1.3 Виртуальная карта
|
||||
**Требования:**
|
||||
@@ -49,20 +68,22 @@
|
||||
- Красный: переполнено
|
||||
- Интерактивность: клик на место → список товаров
|
||||
|
||||
### 2.2 Мобильное приложение (PWA)
|
||||
### 2.2 Мобильное приложение (Angular PWA)
|
||||
|
||||
#### 2.2.1 Сканирование QR-кодов
|
||||
**Требования:**
|
||||
- Сканирование камерой телефона
|
||||
- Сканирование камерой телефона через @zxing/ngx-scanner
|
||||
- Распознавание QR-кодов в реальном времени
|
||||
- Автоматический переход к операции с местом
|
||||
- Обработка ошибок сканирования
|
||||
- Offline поддержка через Service Worker
|
||||
|
||||
#### 2.2.2 Быстрые операции
|
||||
**Требования:**
|
||||
- Размещение товара: сканирование места → выбор товара → подтверждение
|
||||
- Поиск товара: сканирование места → показ списка товаров
|
||||
- Перемещение: сканирование места откуда → сканирование места куда → выбор товара
|
||||
- State management через NgRx для сложных операций
|
||||
|
||||
### 2.3 Справочники
|
||||
|
||||
@@ -87,6 +108,7 @@
|
||||
- Выбор места размещения
|
||||
- Указание количества
|
||||
- Автоматическое обновление статуса места
|
||||
- Валидация через gRPC между сервисами
|
||||
|
||||
#### 2.4.2 Поиск товаров
|
||||
**Требования:**
|
||||
@@ -94,6 +116,24 @@
|
||||
- Поиск по адресу места
|
||||
- Поиск по категории
|
||||
- Результат: список мест с товарами
|
||||
- Кэширование результатов поиска в Redis
|
||||
|
||||
### 2.5 Document Service
|
||||
|
||||
#### 2.5.1 Генерация документов
|
||||
**Требования:**
|
||||
- Генерация PDF этикеток с QR-кодами
|
||||
- Создание Excel отчетов по товарам
|
||||
- Экспорт данных в Word документы
|
||||
- Шаблонизация через Jinja2
|
||||
- Асинхронная обработка через Redis
|
||||
|
||||
#### 2.5.2 Кэширование
|
||||
**Требования:**
|
||||
- Кэширование сгенерированных документов
|
||||
- TTL для документов: 24 часа
|
||||
- Автоматическая очистка старых документов
|
||||
- Статистика использования кэша
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user