update documentation

This commit is contained in:
2025-08-26 20:50:21 +04:00
parent 1882f82596
commit f663ff286d
7 changed files with 580 additions and 80 deletions

View File

@@ -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 неделя) - пилот с реальными пользователями
---

View File

@@ -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 дизайнер
- **Сложность:** Очень высокая

View File

@@ -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. Финансовая аналитика
- **Стоимость** товарных запасов
- **Оборачиваемость** товаров
- **Прибыльность** по категориям

View File

@@ -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 недель)
- Предиктивная аналитика
- Бизнес-аналитика
- Операционная аналитика

View File

@@ -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
---

View File

@@ -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%)
- Недоступность сервиса
- Недоступность сервисов
- Проблемы с генерацией документов

View File

@@ -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 часа
- Автоматическая очистка старых документов
- Статистика использования кэша
---