add erp plan

This commit is contained in:
2025-08-26 20:03:36 +04:00
parent d8bc50fe76
commit 76dd059647
6 changed files with 2222 additions and 0 deletions

View File

@@ -0,0 +1,116 @@
# 📚 ERP для мастеров - Документация проекта
## 🎯 Обзор проекта
**Название:** ERP для мастеров
**Позиционирование:** "Умный учет для мастеров — от хаоса к порядку без лишних затрат"
**Целевая аудитория:** Микропроизводства и мастерские 1-15 человек
### Ключевая ценность
Превращение хаотичного "гаражного" производства в организованную систему с минимальными затратами на оборудование и максимальной простотой использования.
---
## 📋 Структура документации
### 🏗️ Архитектура и техническое планирование
- [[План-разработки-Core-Service-Go-Архитектура-и-API|Архитектура Core Service (Go)]] - Детальный план разработки backend
- [[Техническое-задание-ERP-для-мастеров-Финальная-версия|Техническое задание]] - Полное ТЗ продукта с функциональными требованиями
### 📈 Планы разработки
- [[Фич-план-Этап-1-Организация-складского-пространства|План функций - Этап 1]] - Детальный план первого этапа разработки
- [[MVP-План-разработки-ERP-для-мастеров|MVP план разработки]] - Минимально жизнеспособный продукт
---
## 🚀 Быстрый старт
### Для разработчиков
1. Начните с [[MVP-План-разработки-ERP-для-мастеров|MVP плана]] для понимания приоритетов
2. Изучите [[План-разработки-Core-Service-Go-Архитектура-и-API|архитектуру]] для технических деталей
3. Ознакомьтесь с [[Техническое-задание-ERP-для-мастеров-Финальная-версия|ТЗ]] для полного понимания продукта
### Для менеджеров
1. [[MVP-План-разработки-ERP-для-мастеров|MVP план]] - временные рамки и ресурсы
2. [[Техническое-задание-ERP-для-мастеров-Финальная-версия|ТЗ]] - функциональные требования и метрики
3. [[Фич-план-Этап-1-Организация-складского-пространства|План функций]] - детализация первого этапа
---
## 📊 Ключевые метрики
### MVP метрики
- **Время размещения товара:** ≤ 30 секунд
- **Время поиска места:** ≤ 20 секунд
- **7-дневная ретенция:** ≥ 50%
- **Активация:** создание схемы + печать QR в первую сессию
### Технические метрики
- **Время отклика API:** ≤ 200мс
- **Доступность:** ≥ 99.5%
- **Ошибки сканирования:** ≤ 1%
---
## 🛠️ Технологический стек
### Backend
- **Язык:** Go
- **База данных:** PostgreSQL
- **Кэширование:** Redis
- **Аутентификация:** JWT
### Frontend
- **Фреймворк:** React PWA
- **Дизайн:** Мобильно-ориентированный
- **Печать:** PDF генерация
### Инфраструктура
- **Контейнеризация:** Docker
- **Безопасность:** HTTPS, шифрование данных
- **Мониторинг:** Структурированное логирование
---
## 📅 Временные рамки
### MVP разработка
- **Общее время:** 10-12 недель
- **Команда:** 2-3 разработчика + 1 дизайнер
- **Бюджет:** $50,000-80,000
### Этапы
1. **Фундамент** (2 недели) - инфраструктура и базовые сущности
2. **Организация пространства** (3 недели) - шаблоны и QR-коды
3. **Мобильные операции** (2 недели) - PWA и сканирование
4. **Базовые операции** (2 недели) - управление местами
5. **Аналитика** (1 неделя) - отчеты и метрики
6. **Стабильность и пилот** (2 недели) - тестирование и запуск
---
## 🎯 Целевые вертикали
- Мебельные/столярные мастерские
- Ювелирные производства
- Кондитерские/пекарни
- Мастерские по ремонту
- 3D-печать и прототипирование
- Рекламные агентства (POS-материалы)
- Художественные мастерские
- Производство моделей и сувениров
---
## 🔗 Связанные теги
#erp #master-workshop #inventory-management #qr-codes #mobile-app #saas #micro-production #warehouse-management #pwa #go #postgresql #react
---
## 📝 Примечания
- Все документы обновляются по мере развития проекта
- MVP фокусируется на организации складского пространства
- Post-MVP включает графический редактор и Computer Vision
- Безопасность реализуется поэтапно с подготовкой с самого начала

View File

@@ -0,0 +1,287 @@
---
title: "MVP план разработки"
description: "Минимально жизнеспособный продукт с фокусом на быструю валидацию спроса"
tags: [mvp, development, planning, validation, priorities]
date: 2024-08-26
---
# MVP План разработки: ERP для мастеров
## Концепция MVP
**Цель:** Создать минимально жизнеспособный продукт для валидации спроса на рынке микропроизводств (1-15 человек).
**Ключевая ценность MVP:** Превращение хаотичного складского пространства в организованную систему с QR-адресацией и мобильным сканированием.
**Целевые метрики успеха:**
- Время размещения товара: ≤ 30 секунд
- Время поиска места: ≤ 20 секунд
- Точность адресации: ≥ 95%
- 7-дневная ретенция: ≥ 50%
- Активация: создание схемы + печать QR в первую сессию
---
## Архитектура MVP
### Технологический стек
- **Backend:** Go (основная логика) + PostgreSQL + Redis
- **Frontend:** React PWA (мобильно-ориентированный)
- **Инфраструктура:** Docker, HTTPS, JWT auth
- **Печать:** PDF генерация для обычных принтеров
### Упрощения для MVP
- **Вместо графического редактора:** шаблоны планировок + пресеты
- **Вместо CV чеков:** ручной ввод с автодополнением
- **Вместо умных подсказок:** базовые правила размещения
- **Вместо сложного offline:** кэш + простая очередь синхронизации
---
## Этап 1: Фундамент (2 недели)
### 1.1 Инфраструктура и безопасность
- [ ] Настройка проекта Go + Docker
- [ ] PostgreSQL схема с миграциями
- [ ] JWT аутентификация + RBAC
- [ ] Organization-scope на всех уровнях
- [ ] HTTPS + базовое логирование
- [ ] Redis для кэширования
### 1.2 Базовые сущности
- [ ] Organizations (название, тип производства, настройки)
- [ ] Users (email, роль, organization_id)
- [ ] StorageLocations (иерархия, адресация, характеристики)
- [ ] LocationReservations (временные резервы)
### 1.3 API и интерфейсы
- [ ] REST API для CRUD операций
- [ ] Middleware для auth и org-scope
- [ ] Базовые DTO и валидация
- [ ] Error handling и коды ответов
---
## Этап 2: Организация пространства (3 недели)
### 2.1 Шаблоны планировок
- [ ] 5-7 готовых шаблонов для типовых помещений:
- Гараж (2-3 варианта размеров)
- Мастерская (столярная, ювелирная, кондитерская)
- Складское помещение
- [ ] Пресеты мебели (шкафы, стеллажи, столы)
- [ ] Автоматическая генерация мест из шаблона
- [ ] Простая настройка размеров и количества
### 2.2 Адресация и QR-коды
- [ ] Система адресации (Ш1-П2-Я3, З1-У2, С1-Я1)
- [ ] Генерация уникальных QR-кодов
- [ ] Кодирование метаданных в QR (ID, адрес, координаты)
- [ ] Валидация уникальности адресов
### 2.3 Печать этикеток
- [ ] Шаблоны этикеток (разные размеры)
- [ ] PDF генерация для A4 принтеров
- [ ] Сетка этикеток на лист
- [ ] Предварительный просмотр
### 2.4 Простая визуализация
- [ ] Список мест с иерархией (дерево)
- [ ] Плиточный вид с цветовыми индикаторами
- [ ] Фильтры по типу, статусу, загруженности
- [ ] Поиск по адресу с автодополнением
---
## Этап 3: Мобильные операции (2 недели)
### 3.1 PWA приложение
- [ ] React PWA с мобильным дизайном
- [ ] Установка как нативное приложение
- [ ] Адаптивный интерфейс (портретная ориентация)
- [ ] Кэширование данных для offline работы
### 3.2 Сканирование QR-кодов
- [ ] Доступ к камере через Web API
- [ ] Автофокус и распознавание в реальном времени
- [ ] Вибрация/звук при успешном сканировании
- [ ] История сканирований
### 3.3 Быстрые операции
- [ ] Информация о месте после сканирования
- [ ] Быстрые действия (резерв, статус, поиск)
- [ ] Размещение товара (сканирование товара + места)
- [ ] Перемещение между местами
---
## Этап 4: Базовые операции (2 недели)
### 4.1 Управление местами
- [ ] Создание/редактирование мест хранения
- [ ] Настройка характеристик (размеры, грузоподъемность)
- [ ] Условия хранения (температура, влажность)
- [ ] Правила размещения (базовые)
### 4.2 Резервирование и статусы
- [ ] Временное резервирование мест
- [ ] Статусы (активно, резерв, обслуживание)
- [ ] Автоматическое снятие резерва по времени
- [ ] Уведомления об истечении резерва
### 4.3 Поиск и навигация
- [ ] Поиск по адресу с fuzzy matching
- [ ] Фильтры по характеристикам
- [ ] Сортировка по различным критериям
- [ ] Сохранение часто используемых фильтров
---
## Этап 5: Аналитика и отчеты (1 неделя)
### 5.1 Базовая аналитика
- [ ] Загруженность склада (общая и по зонам)
- [ ] Статистика использования мест
- [ ] Места без адресации
- [ ] Нарушения правил размещения
### 5.2 Простые отчеты
- [ ] Остатки по местам хранения
- [ ] История операций с местами
- [ ] Экспорт в Excel/CSV
- [ ] Печать отчетов
---
## Этап 6: Стабильность и пилот (2 недели)
### 6.1 Тестирование и стабильность
- [ ] Unit тесты для критических функций
- [ ] Integration тесты API
- [ ] Тестирование PWA на разных устройствах
- [ ] Нагрузочное тестирование
### 6.2 Onboarding и документация
- [ ] Пошаговый мастер настройки
- [ ] Демо-данные для тестирования
- [ ] Видео-инструкции
- [ ] FAQ и поддержка
### 6.3 Пилотное тестирование
- [ ] 2-3 пилотные мастерские
- [ ] Сбор обратной связи
- [ ] Итерации по фидбеку
- [ ] Подготовка к публичному запуску
---
## Функциональные ограничения MVP
### Что НЕ включаем в MVP
- Графический редактор планировок
- Computer Vision для чеков
- Умные подсказки размещения
- 3D визуализация и маршрутизация
- Сложная аналитика и оптимизация
- Offline конфликт-резолюшн
- Шифрование данных (только интерфейсы)
### Технические лимиты
- Максимум 1,000 мест хранения на организацию
- Максимум 5 пользователей на организацию
- Размер фото до 5 МБ
- Offline кэш до 50 МБ
---
## Тарифная модель MVP
### Starter (бесплатно)
- 1 пользователь
- 100 мест хранения
- Базовые шаблоны
- Мобильное приложение
### Pro (платно)
- 3 пользователя
- 1,000 мест хранения
- Все шаблоны
- Экспорт отчетов
- Приоритетная поддержка
---
## Метрики и KPI
### Продуктовые метрики
- **Активация:** создание схемы + печать QR в первую сессию
- **Время размещения:** ≤ 30 секунд
- **Время поиска:** ≤ 20 секунд
- **Точность адресации:** ≥ 95%
### Бизнес метрики
- **7-дневная ретенция:** ≥ 50%
- **30-дневная ретенция:** ≥ 30%
- **Конверсия в Pro:** ≥ 10%
- **NPS:** ≥ 40
### Технические метрики
- **Время отклика API:** ≤ 200мс
- **Доступность:** ≥ 99.5%
- **Ошибки сканирования:** ≤ 1%
---
## Риски и митигация
### Высокие риски
1. **Сложность QR-сканирования на мобильных**
- Митигация: тестирование на разных устройствах, fallback на ручной ввод
2. **Недостаточная ценность без графического редактора**
- Митигация: качественные шаблоны + простота настройки
3. **Сложность onboarding для технически неподготовленных**
- Митигация: пошаговый мастер + демо-данные
### Средние риски
1. **Производительность при большом количестве мест**
- Митигация: пагинация + кэширование
2. **Совместимость с разными принтерами**
- Митигация: стандартные PDF форматы
---
## Следующие итерации (post-MVP)
### Релиз 1.1 (1-2 месяца после MVP)
- Графический редактор планировок
- Computer Vision для чеков
- Расширенная аналитика
### Релиз 1.2 (2-3 месяца после MVP)
- Умные подсказки размещения
- 3D визуализация
- API для интеграций
### Релиз 2.0 (4-6 месяцев после MVP)
- Модуль производства
- Учет отходов и себестоимости
- Мультивалютность
---
## Заключение
Данный MVP план фокусируется на ключевой ценности продукта — организации складского пространства с минимальными затратами. Упрощения позволяют быстро выйти на рынок и валидировать спрос, а затем итеративно добавлять более сложные функции.
**Общая оценка разработки: 10-12 недель**
**Команда: 2-3 разработчика + 1 дизайнер**
**Бюджет: $50,000-80,000**
Ключевой успех MVP будет зависеть от:
1. Качества шаблонов планировок
2. Простоты onboarding процесса
3. Надежности мобильного сканирования
4. Быстрого получения ценности пользователями

View File

@@ -0,0 +1,116 @@
# 📚 ERP для мастеров - Документация проекта
## 🎯 Обзор проекта
**Название:** ERP для мастеров
**Позиционирование:** "Умный учет для мастеров — от хаоса к порядку без лишних затрат"
**Целевая аудитория:** Микропроизводства и мастерские 1-15 человек
### Ключевая ценность
Превращение хаотичного "гаражного" производства в организованную систему с минимальными затратами на оборудование и максимальной простотой использования.
---
## 📋 Структура документации
### 🏗️ Архитектура и техническое планирование
- [[План-разработки-Core-Service-Go-Архитектура-и-API|Архитектура Core Service (Go)]] - Детальный план разработки backend
- [[Техническое-задание-ERP-для-мастеров-Финальная-версия|Техническое задание]] - Полное ТЗ продукта с функциональными требованиями
### 📈 Планы разработки
- [[Фич-план-Этап-1-Организация-складского-пространства|План функций - Этап 1]] - Детальный план первого этапа разработки
- [[MVP-План-разработки-ERP-для-мастеров|MVP план разработки]] - Минимально жизнеспособный продукт
---
## 🚀 Быстрый старт
### Для разработчиков
1. Начните с [[MVP-План-разработки-ERP-для-мастеров|MVP плана]] для понимания приоритетов
2. Изучите [[План-разработки-Core-Service-Go-Архитектура-и-API|архитектуру]] для технических деталей
3. Ознакомьтесь с [[Техническое-задание-ERP-для-мастеров-Финальная-версия|ТЗ]] для полного понимания продукта
### Для менеджеров
1. [[MVP-План-разработки-ERP-для-мастеров|MVP план]] - временные рамки и ресурсы
2. [[Техническое-задание-ERP-для-мастеров-Финальная-версия|ТЗ]] - функциональные требования и метрики
3. [[Фич-план-Этап-1-Организация-складского-пространства|План функций]] - детализация первого этапа
---
## 📊 Ключевые метрики
### MVP метрики
- **Время размещения товара:** ≤ 30 секунд
- **Время поиска места:** ≤ 20 секунд
- **7-дневная ретенция:** ≥ 50%
- **Активация:** создание схемы + печать QR в первую сессию
### Технические метрики
- **Время отклика API:** ≤ 200мс
- **Доступность:** ≥ 99.5%
- **Ошибки сканирования:** ≤ 1%
---
## 🛠️ Технологический стек
### Backend
- **Язык:** Go
- **База данных:** PostgreSQL
- **Кэширование:** Redis
- **Аутентификация:** JWT
### Frontend
- **Фреймворк:** React PWA
- **Дизайн:** Мобильно-ориентированный
- **Печать:** PDF генерация
### Инфраструктура
- **Контейнеризация:** Docker
- **Безопасность:** HTTPS, шифрование данных
- **Мониторинг:** Структурированное логирование
---
## 📅 Временные рамки
### MVP разработка
- **Общее время:** 10-12 недель
- **Команда:** 2-3 разработчика + 1 дизайнер
- **Бюджет:** $50,000-80,000
### Этапы
1. **Фундамент** (2 недели) - инфраструктура и базовые сущности
2. **Организация пространства** (3 недели) - шаблоны и QR-коды
3. **Мобильные операции** (2 недели) - PWA и сканирование
4. **Базовые операции** (2 недели) - управление местами
5. **Аналитика** (1 неделя) - отчеты и метрики
6. **Стабильность и пилот** (2 недели) - тестирование и запуск
---
## 🎯 Целевые вертикали
- Мебельные/столярные мастерские
- Ювелирные производства
- Кондитерские/пекарни
- Мастерские по ремонту
- 3D-печать и прототипирование
- Рекламные агентства (POS-материалы)
- Художественные мастерские
- Производство моделей и сувениров
---
## 🔗 Связанные теги
#erp #master-workshop #inventory-management #qr-codes #mobile-app #saas #micro-production #warehouse-management #pwa #go #postgresql #react
---
## 📝 Примечания
- Все документы обновляются по мере развития проекта
- MVP фокусируется на организации складского пространства
- Post-MVP включает графический редактор и Computer Vision
- Безопасность реализуется поэтапно с подготовкой с самого начала

View File

@@ -0,0 +1,781 @@
### 10.1 Этапы с учетом Security подготовки
**Этап 1: Инфраструктура + Security foundation (1-2 недели)**
- Настройка проекта, зависимостей, Docker
- База данных с полями для будущего шифрования
- Security интерфейсы (DataProtection, PasswordHasher, AuditLogger)
- NoOp реализации для MVP
- Базовая конфигурация и логирование
- Middleware для аутентификации
**Этап 2: Базовые сущности с Security готовностью (2-3 недели)**
- Organizations и Users (CRUD + auth)
- Использование Security интерфейсов в репозиториях
- Хеширование паролей (Argon2)
- Генерация хешей для поиска (уже сейчас)
- StorageLocations базовый CRUD
- Простая иерархия мест
- Генерация адресов
**Этап 3: Схемы и QR-коды (2-3 недели)**
- StorageSchemas CRUD
- Генерация QR-кодов и этикеток
- Связывание схем с местами хранения
- Валидация схем
- Аудит-логирование операций
**Этап 4: Поиск и аналитика (1-2 недели)**
- Поиск и фильтрация мест
- Поиск через хеши (готовность к шифрованию)
- Умные подсказки размещения
- Базовая аналитика использования
- Резервирование мест
**Этап 5: Мобильные операции (1 неделя)**
- Сканирование QR-кодов
- Offline синхронизация
- Быстрые действия
**Этап 6: Оптимизация и тестирование (1-2 недели)**
- Полное покрытие тестами (включая security моки)
- Оптимизация производительности
- Документация API
- Подготовка к деплою
**Этап 7: Включение шифрования (будущий, 1-2 недели)**
- Реализация AES шифрования
- Управление ключами
- Миграция существующих данных
- Полный аудит безопасности
### 10.2 Дополнительные задачи по Security
**В рамках MVP (этапы 1-6):**
- ✅ Хеширование паролей (Argon2id)
- ✅ JWT аутентификация
- ✅ HTTPS везде
- ✅ Аудит-логирование доступа
- ✅ Валидация входных данных
- ✅ Подготовка схемы БД к шифрованию
- ✅ Security интерфейсы
**При включении шифрования (этап 7):**
- 🔄 AES-256-GCM шифрование PII
- 🔄 Иерархия ключей по организациям
- 🔄 Ротация ключей
- 🔄 Миграция данных
- 🔄 GDPR соответствие
### 10.3 Тестирование Security
**Unit тесты для Security:**
```go
func TestNoOpDataProtection(t *testing.T) {
protection := security.NewNoOpDataProtection()
original := "test@example.com"
encrypted, err := protection.Encrypt(original)
assert.NoError(t, err)
assert.Equal(t, original, encrypted) // NoOp возвращает как есть
decrypted, err := protection.Decrypt(encrypted)
assert.NoError(t, err)
assert.Equal(t, original, decrypted)
}
func TestUserRepositoryWithSecurity(t *testing.T) {
// Тест с моком security
mockProtection := &mocks.DataProtection{}
mockProtection.On("Hash", "test@example.com").Return("hashed_email")
repo := NewUserRepository(db, mockProtection, auditLogger)
user := &User{Email: "test@example.com"}
err := repo.Create(ctx, user)
assert.NoError(t, err)
mockProtection.AssertExpectations(t)
}
```
**Integration тесты переходов:**
```go
func TestEncryptionMigration(t *testing.T) {
// Тест миграции с NoOp на AES
// Создаем данные с NoOp
// Мигрируем на AES
// Проверяем корректность данных
}
```
---
## 11. Мониторинг и безопасность---
title: "Архитектура Core Service (Go)"
description: "Детальный план разработки backend с Clean Architecture, API и безопасностью"
tags: [architecture, backend, go, api, security, database]
date: 2024-08-26
---
# План разработки Core Service (Go): Архитектура и API
## 1. Архитектура проекта
### 1.1 Clean Architecture принципы
- **Domain Layer** - бизнес-логика, независимая от внешних зависимостей
- **Infrastructure Layer** - работа с базой данных, внешними API
- **Interface Layer** - REST API, middleware, DTO
- **Application Layer** - координация между слоями
### 1.2 Структура директорий
```
core-service/
├── cmd/server/ # Точка входа приложения
├── internal/
│ ├── domain/ # Бизнес-логика
│ │ ├── entities/ # Доменные сущности
│ │ ├── services/ # Бизнес-сервисы
│ │ └── repositories/ # Интерфейсы репозиториев
│ ├── infrastructure/ # Инфраструктурный слой
│ │ ├── database/ # PostgreSQL репозитории
│ │ ├── cache/ # Redis кэш
│ │ └── external/ # HTTP клиенты к Python сервису
│ ├── interfaces/ # Слой представления
│ │ ├── api/ # REST API handlers
│ │ ├── middleware/ # Аутентификация, логирование
│ │ └── dto/ # Data Transfer Objects
│ └── config/ # Конфигурация приложения
├── migrations/ # SQL миграции
└── docs/ # OpenAPI документация
```
---
## 2. Доменные сущности
### 2.1 Основные entities
**Organization** - организация/компания
```go
type Organization struct {
ID uuid.UUID `json:"id"`
Name string `json:"name"`
Type string `json:"type"` // Тип производства
Settings JSONB `json:"settings"` // Настройки адресации, QR и др.
// Подготовка к будущему шифрованию
NameEncrypted *string `db:"name_encrypted" json:"-"`
ContactEncrypted *string `db:"contact_encrypted" json:"-"`
// timestamps, audit fields
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
```
**User** - пользователь системы
```go
type User struct {
ID uuid.UUID `json:"id"`
OrganizationID uuid.UUID `json:"organization_id"`
Email string `json:"email"`
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
Role UserRole `json:"role"` // owner, employee, observer
IsActive bool `json:"is_active"`
// Подготовка к будущему шифрованию (nullable поля)
EmailEncrypted *string `db:"email_encrypted" json:"-"`
FirstNameEncrypted *string `db:"first_name_encrypted" json:"-"`
LastNameEncrypted *string `db:"last_name_encrypted" json:"-"`
EmailHash *string `db:"email_hash" json:"-"`
// auth fields, timestamps
PasswordHash string `json:"-"`
LastLoginAt *time.Time `json:"last_login_at"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
```
**StorageLocation** - место хранения
```go
type StorageLocation struct {
ID uuid.UUID `json:"id"`
OrganizationID uuid.UUID `json:"organization_id"`
ParentID *uuid.UUID `json:"parent_id"`
Address string `json:"address"` // Ш1-П2-Я3
Name string `json:"name"`
Type LocationType `json:"type"` // shelf, zone, table
Level int `json:"level"` // Уровень в иерархии
// Физические характеристики
Dimensions Dimensions `json:"dimensions"` // Д×Ш×В в см
MaxWeight float64 `json:"max_weight"` // кг
MaxVolume float64 `json:"max_volume"` // литры
// Условия хранения
StorageConditions StorageConditions `json:"storage_conditions"`
// QR и схема
QRCode string `json:"qr_code"`
QRCodeData JSONB `json:"qr_code_data"`
SchemaCoordinates *Coordinates `json:"schema_coordinates"`
// Статус и правила
Status LocationStatus `json:"status"` // active, reserved, maintenance
PlacementRules []PlacementRule `json:"placement_rules"`
}
```
**StorageSchema** - схема помещения из редактора
```go
type StorageSchema struct {
ID uuid.UUID `json:"id"`
OrganizationID uuid.UUID `json:"organization_id"`
Name string `json:"name"`
Version int `json:"version"`
SchemaData SchemaData `json:"schema_data"` // JSON из редактора
IsActive bool `json:"is_active"`
}
```
**LocationReservation** - резервирование мест
```go
type LocationReservation struct {
ID uuid.UUID `json:"id"`
LocationID uuid.UUID `json:"location_id"`
UserID uuid.UUID `json:"user_id"`
Type ReservationType `json:"type"` // temporary, permanent, seasonal
ReservedFrom time.Time `json:"reserved_from"`
ReservedTo *time.Time `json:"reserved_to"`
Status ReservationStatus `json:"status"` // active, expired, canceled
}
```
### 2.2 Вспомогательные типы
**Dimensions** - размеры в сантиметрах
```go
type Dimensions struct {
Length float64 `json:"length"`
Width float64 `json:"width"`
Height float64 `json:"height"`
}
```
**StorageConditions** - условия хранения
```go
type StorageConditions struct {
Temperature *TemperatureRange `json:"temperature,omitempty"`
Humidity *HumidityRange `json:"humidity,omitempty"`
Accessibility string `json:"accessibility"` // easy, medium, hard
Special []string `json:"special"` // chemical, food_safe
}
```
**PlacementRule** - правила размещения товаров
```go
type PlacementRule struct {
Type string `json:"type"` // weight_limit, item_type, frequency
Condition string `json:"condition"` // max, only, preferred
Value interface{} `json:"value"`
Priority int `json:"priority"`
}
```
---
## 3. Бизнес-сервисы
### 3.1 LocationService - основной сервис мест хранения
**Интерфейс:**
```go
type LocationService interface {
// CRUD операции
CreateLocation(ctx context.Context, req CreateLocationRequest) (*StorageLocation, error)
GetLocation(ctx context.Context, id uuid.UUID) (*StorageLocation, error)
UpdateLocation(ctx context.Context, id uuid.UUID, req UpdateLocationRequest) error
DeleteLocation(ctx context.Context, id uuid.UUID) error
// Иерархические операции
GetLocationHierarchy(ctx context.Context, organizationID uuid.UUID) ([]*LocationNode, error)
MoveLocation(ctx context.Context, locationID uuid.UUID, newParentID *uuid.UUID) error
// Генерация адресов и QR
GenerateAddress(ctx context.Context, location *StorageLocation) (string, error)
GenerateQRCode(ctx context.Context, locationID uuid.UUID) (*QRCodeResult, error)
// Поиск и подсказки
SearchLocations(ctx context.Context, req SearchLocationRequest) (*SearchLocationResponse, error)
SuggestOptimalLocation(ctx context.Context, req OptimalLocationRequest) ([]*LocationSuggestion, error)
}
```
**Основная логика:**
- Валидация данных при создании/обновлении
- Автоматическая генерация адресов по настройкам организации
- Проверка правил размещения
- Расчет оптимальных мест для размещения товаров
### 3.2 SchemaService - работа со схемами помещений
**Интерфейс:**
```go
type SchemaService interface {
// CRUD схем
CreateSchema(ctx context.Context, req CreateSchemaRequest) (*StorageSchema, error)
UpdateSchema(ctx context.Context, id uuid.UUID, req UpdateSchemaRequest) error
GetActiveSchema(ctx context.Context, organizationID uuid.UUID) (*StorageSchema, error)
// Операции с объектами схемы
AddSchemaObject(ctx context.Context, schemaID uuid.UUID, object SchemaObject) error
UpdateSchemaObject(ctx context.Context, schemaID uuid.UUID, objectID string, updates interface{}) error
// Валидация и генерация
ValidateSchema(ctx context.Context, schema *StorageSchema) (*ValidationResult, error)
GenerateLocationsFromSchema(ctx context.Context, schemaID uuid.UUID) ([]*StorageLocation, error)
SyncSchemaWithLocations(ctx context.Context, schemaID uuid.UUID) error
}
```
**Основная логика:**
- Валидация корректности схемы (доступность, эргономика)
- Автоматическая генерация мест хранения из объектов схемы
- Синхронизация изменений схемы с местами хранения
- Проверка правил безопасности и эргономики
### 3.3 QRCodeService - генерация QR-кодов
**Интерфейс:**
```go
type QRCodeService interface {
GenerateQRCode(ctx context.Context, location *StorageLocation) (*QRCodeResult, error)
GenerateQRCodeBatch(ctx context.Context, locationIDs []uuid.UUID) ([]*QRCodeResult, error)
ValidateQRCode(ctx context.Context, qrData string) (*QRValidationResult, error)
DecodeQRCode(ctx context.Context, qrData string) (*QRDecodedData, error)
GenerateLabels(ctx context.Context, req GenerateLabelsRequest) (*LabelSheet, error)
}
```
**Основная логика:**
- Кодирование метаданных места в QR (ID, адрес, координаты, чексумма)
- Генерация изображений QR-кодов в разных форматах
- Создание шаблонов этикеток для печати
- Валидация и декодирование сканированных QR
---
## 4. REST API структура
### 4.1 Основные группы endpoints
**Authentication & Users**
```
POST /api/v1/auth/login
POST /api/v1/auth/register
POST /api/v1/auth/refresh
POST /api/v1/users/invite
PUT /api/v1/users/:id/role
```
**Organizations**
```
GET /api/v1/organizations/:id
PUT /api/v1/organizations/:id
GET /api/v1/organizations/:id/settings
PUT /api/v1/organizations/:id/settings
```
**Storage Locations**
```
GET /api/v1/locations # Список с фильтрами
POST /api/v1/locations # Создание
GET /api/v1/locations/:id # Детали места
PUT /api/v1/locations/:id # Обновление
DELETE /api/v1/locations/:id # Удаление
GET /api/v1/locations/hierarchy # Дерево мест
POST /api/v1/locations/:id/move # Перемещение в иерархии
GET /api/v1/locations/:id/qr-code # Генерация QR
POST /api/v1/locations/qr-codes/batch # Массовая генерация QR
GET /api/v1/locations/search # Поиск мест
POST /api/v1/locations/suggest # Подсказки размещения
POST /api/v1/locations/:id/reserve # Резервирование
GET /api/v1/locations/:id/reservations # Список резерваций
```
**Storage Schemas**
```
GET /api/v1/schemas # Список схем
POST /api/v1/schemas # Создание схемы
GET /api/v1/schemas/:id # Детали схемы
PUT /api/v1/schemas/:id # Обновление схемы
POST /api/v1/schemas/:id/objects # Добавление объекта
PUT /api/v1/schemas/:id/objects/:objId # Обновление объекта
DELETE /api/v1/schemas/:id/objects/:objId # Удаление объекта
POST /api/v1/schemas/:id/validate # Валидация схемы
POST /api/v1/schemas/:id/generate-locations # Генерация мест из схемы
POST /api/v1/schemas/:id/sync # Синхронизация с местами
GET /api/v1/schemas/:id/export/:format # Экспорт схемы
```
**Labels & Templates**
```
GET /api/v1/templates/labels # Шаблоны этикеток
POST /api/v1/templates/labels/generate # Генерация этикеток
```
**Analytics & Reports**
```
GET /api/v1/analytics/space-usage # Использование пространства
GET /api/v1/analytics/location-activity # Активность мест
GET /api/v1/analytics/optimization-suggestions # Предложения по оптимизации
```
**Mobile Operations**
```
POST /api/v1/mobile/scan # Сканирование QR
GET /api/v1/mobile/quick-actions # Быстрые действия
POST /api/v1/mobile/sync # Синхронизация offline операций
```
### 4.2 Примеры DTO структур
**CreateLocationRequest**
```go
type CreateLocationRequest struct {
ParentID *string `json:"parent_id"`
Name string `json:"name" binding:"required,max=255"`
Type LocationType `json:"type" binding:"required"`
Dimensions *Dimensions `json:"dimensions"`
MaxWeight float64 `json:"max_weight"`
MaxVolume float64 `json:"max_volume"`
StorageConditions *StorageConditions `json:"storage_conditions"`
PlacementRules []PlacementRule `json:"placement_rules"`
SchemaCoordinates *Coordinates `json:"schema_coordinates"`
}
```
**LocationResponse**
```go
type LocationResponse struct {
ID uuid.UUID `json:"id"`
Address string `json:"address"`
Name string `json:"name"`
Type LocationType `json:"type"`
Level int `json:"level"`
Parent *LocationBrief `json:"parent,omitempty"`
Children []*LocationBrief `json:"children,omitempty"`
Dimensions *Dimensions `json:"dimensions"`
Status LocationStatus `json:"status"`
QRCode string `json:"qr_code,omitempty"`
SchemaCoordinates *Coordinates `json:"schema_coordinates"`
Stats *LocationStats `json:"stats,omitempty"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
```
---
## 5. База данных
### 5.1 Основные таблицы
**organizations** - организации
- Основные поля: id, name, type, settings (JSONB)
- Настройки адресации, QR-кодов, правил размещения
**users** - пользователи
- Связь с organizations, роли, аутентификация
**storage_locations** - места хранения
- Иерархическая структура через parent_id
- JSONB поля для dimensions, storage_conditions, placement_rules
- Индексы по organization_id, parent_id, address, qr_code
**storage_schemas** - схемы помещений
- JSONB поле schema_data с данными из редактора
- Версионирование схем
**location_reservations** - резервирования мест
- Временные рамки, типы резервирования, статусы
**activity_logs** - логи всех операций
- Аудит изменений, безопасность, аналитика
### 5.2 Ключевые индексы для производительности
```sql
-- Основные индексы
CREATE INDEX idx_storage_locations_organization_id ON storage_locations(organization_id);
CREATE INDEX idx_storage_locations_parent_id ON storage_locations(parent_id);
CREATE INDEX idx_storage_locations_address ON storage_locations(organization_id, address);
CREATE INDEX idx_storage_locations_qr_code ON storage_locations(qr_code);
-- Составные индексы для фильтрации
CREATE INDEX idx_locations_org_type_status ON storage_locations(organization_id, type, status);
CREATE INDEX idx_reservations_location_dates ON location_reservations(location_id, reserved_from, reserved_to);
```
### 5.3 Триггеры и функции
- **update_updated_at_column()** - автообновление timestamps
- Валидация иерархии мест хранения
- Автоматическое логирование изменений
---
## 6. Middleware и безопасность
### 6.1 Authentication Middleware
**JWT Authentication**
- Валидация JWT токенов
- Извлечение user_id, organization_id, role из токена
- Добавление контекста в запрос
**Role-based Access Control**
- Проверка прав доступа по ролям
- Owner - полный доступ
- Employee - операции + просмотр
- Observer - только просмотр
**Organization Scope**
- Автоматическая фильтрация по организации
- Предотвращение доступа к чужим данным
### 6.2 Дополнительные middleware
**Request Logging**
- Структурированное логирование всех запросов
- Включение user_id, organization_id в логи
**Error Handling**
- Централизованная обработка ошибок
- Panic recovery
- Стандартизированные коды ошибок
**Rate Limiting**
- Защита от злоупотреблений API
- Разные лимиты для разных endpoint'ов
---
## 7. Конфигурация и окружение
### 7.1 Конфигурация приложения
**Config структура:**
- Server (порт, таймауты)
- Database (подключение, пулы соединений)
- Redis (кэширование, сессии)
- JWT (секретные ключи, время жизни)
- Storage (локальное/S3 хранилище файлов)
- External Services (URL Python сервиса)
- Logging (уровень, формат)
**Загрузка конфигурации:**
- Приоритет: переменные окружения > config.yml > дефолты
- Валидация обязательных параметров
- Поддержка разных окружений (dev, staging, prod)
### 7.2 Переменные окружения
```bash
# Database
DB_HOST=localhost
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=password
DB_NAME=erp_masters
# Redis
REDIS_HOST=localhost
REDIS_PORT=6379
# JWT
JWT_SECRET_KEY=your-secret-key
JWT_EXPIRATION_HOURS=24
# External Services
DOCUMENT_SERVICE_URL=http://localhost:8081
```
---
## 8. Dependency Injection
### 8.1 Dependencies структура
**Основные компоненты:**
- Repositories (database layer)
- Services (business logic)
- Infrastructure (DB, Redis, Logger)
- Configuration
**Инициализация:**
1. Загрузка конфигурации
2. Подключение к базе данных и Redis
3. Создание репозиториев
4. Инициализация сервисов с зависимостями
5. Настройка роутеров с handlers
### 8.2 Жизненный цикл приложения
**Startup:**
- Проверка подключений к внешним сервисам
- Выполнение миграций базы данных
- Warmup кэшей и пулов соединений
**Graceful Shutdown:**
- Завершение активных запросов
- Закрытие соединений с базой данных
- Flush логов
---
## 9. Тестирование
### 9.1 Стратегия тестирования
**Unit Tests**
- Тестирование бизнес-логики сервисов
- Мокирование зависимостей
- Покрытие edge cases и error handling
**Integration Tests**
- Тестирование API endpoints
- Работа с тестовой базой данных
- Проверка полных сценариев использования
**Repository Tests**
- Тестирование SQL запросов
- Проверка миграций и схемы БД
- Тестирование транзакций
### 9.2 Test Infrastructure
**Test Database**
- Автоматическое создание/очистка тестовых данных
- Изоляция тестов друг от друга
- Использование фикстур для стандартных данных
**Mocks & Stubs**
- Мокирование внешних сервисов
- Симуляция различных ответов от Python сервиса
- Тестирование fallback сценариев
---
## 10. Мониторинг и логирование
### 10.1 Структурированное логирование
**Уровни логирования:**
- ERROR - критические ошибки
- WARN - предупреждения и неоптимальные ситуации
- INFO - основные операции и бизнес-события
- DEBUG - детальная информация для отладки
**Контекст в логах:**
- request_id для трассировки запросов
- user_id и organization_id для аудита
- Время выполнения операций
- Метаданные запросов и ответов
### 10.2 Метрики и мониторинг
**Application Metrics**
- Количество запросов по endpoint'ам
- Время ответа API
- Количество ошибок по типам
- Использование ресурсов (CPU, память, соединения БД)
**Business Metrics**
- Количество активных организаций
- Количество созданных мест хранения
- Частота использования различных функций
- Конверсия новых пользователей
---
## 11. Производительность и масштабирование
### 11.1 Оптимизация базы данных
**Индексирование**
- Композитные индексы для частых запросов
- Частичные индексы для фильтрации по статусам
- Индексы на JSONB поля для поиска по метаданным
**Query Optimization**
- Использование prepared statements
- Батчинг операций создания/обновления
- Пагинация для больших списков
### 11.2 Кэширование
**Redis Cache**
- Кэширование схем организаций
- Кэширование иерархии мест хранения
- Кэширование результатов поиска
- TTL стратегии для разных типов данных
**Application Cache**
- In-memory кэш для справочников
- Кэширование сгенерированных QR-кодов
- Кэш результатов валидации
---
## 12. План разработки по этапам
### Этап 1: Инфраструктура (1-2 недели)
- Настройка проекта, зависимостей, Docker
- База данных, миграции, подключения
- Базовая конфигурация и логирование
- Middleware для аутентификации
### Этап 2: Базовые сущности (2-3 недели)
- Organizations и Users (CRUD + auth)
- StorageLocations базовый CRUD
- Простая иерархия мест
- Генерация адресов
### Этап 3: Схемы и QR-коды (2-3 недели)
- StorageSchemas CRUD
- Генерация QR-кодов и этикеток
- Связывание схем с местами хранения
- Валидация схем
### Этап 4: Поиск и аналитика (1-2 недели)
- Поиск и фильтрация мест
- Умные подсказки размещения
- Базовая аналитика использования
- Резервирование мест
### Этап 5: Мобильные операции (1 неделя)
- Сканирование QR-кодов
- Offline синхронизация
- Быстрые действия
### Этап 6: Оптимизация и тестирование (1-2 недели)
- Полное покрытие тестами
- Оптимизация производительности
- Документация API
- Подготовка к деплою
**Общая оценка: 8-13 недель разработки**
---
Этот план обеспечивает создание масштабируемого, тестируемого и производительного core service для управления складскими помещениями с современной архитектурой и лучшими практиками разработки на Go.

View File

@@ -0,0 +1,452 @@
---
title: "Техническое задание - ERP для мастеров"
description: "Полное ТЗ продукта с функциональными требованиями и пользовательскими сценариями"
tags: [requirements, functional, user-stories, business-logic]
date: 2024-08-26
---
# Техническое задание: "ERP для мастеров" (Финальная версия)
## 1. Концепция продукта
**Название:** ERP для мастеров
**Позиционирование:** "Умный учет для мастеров — от хаоса к порядку без лишних затрат"
**Целевая аудитория:** Микропроизводства и мастерские 1-15 человек
### 1.1 Ключевая ценность
Превращение хаотичного "гаражного" производства в организованную систему с минимальными затратами на оборудование и максимальной простотой использования.
### 1.2 Целевые вертикали
- Мебельные/столярные мастерские
- Ювелирные производства
- Кондитерские/пекарни
- Мастерские по ремонту
- 3D-печать и прототипирование
- Рекламные агентства (POS-материалы)
- Художественные мастерские
- Производство моделей и сувениров
---
## 2. Инновационные особенности
### 2.1 Организация хранения без затрат
- **Превращение хаоса в систему** с использованием имеющегося оборудования
- **Умное зонирование** пространства (шкафы, пол, столы)
- **QR-маркировка мест хранения** вместо дорогого складского оборудования
### 2.2 Штрихкоды без специального оборудования
- **Печать на обычном принтере** (этикетки A4)
- **Телефон как сканер** (камера)
- **Быстрые операции** по ШК
### 2.3 Computer Vision для автоматизации
- **Распознавание чеков** фотографией
- **Автоматическое заполнение** документов поступления
- **Умное сопоставление** товаров
### 2.4 Гибкие производственные сценарии
- **Учет отходов и потерь** в производстве
- **Кастомные коэффициенты** использования материалов
- **Вспомогательные расходы** (поддержки, клей и т.д.)
---
## 3. Функциональные требования
### 3.1 Модуль организации складского пространства
#### 3.1.1 Типы мест хранения
**Шкафы и стеллажи:**
- Разделение на ячейки (полки, перегородки, коробки)
- Адресация: Шкаф-Полка-Ячейка (Ш1-П2-Я3)
- QR-коды на каждую ячейку
**Напольное хранение:**
- Зонирование цветной лентой
- Зоны: крупные заготовки, ГП, упаковка, брак
- Адресация: Зона-Участок (З1-У2)
**Столы и рабочие поверхности:**
- Ящики, плоскость стола, подстольные коробки
- Адресация: Стол-Элемент (С1-Я1, С1-Пов)
#### 3.1.2 Мастер настройки пространства
1. **Выбор типа помещения** (мастерская, гараж, цех)
2. **Инвентаризация мебели** и оборудования
3. **Предложения по организации** от системы
4. **Генерация схемы** размещения
5. **Печать QR-кодов** для маркировки мест
#### 3.1.3 Виртуальная карта склада
- **Схематичный или 3D-вид** расположения
- **Цветовое кодирование загруженности:**
- Зеленый: свободно
- Желтый: частично заполнено
- Красный: переполнено
- Синий: зарезервировано
- **Интерактивность:** клик на место → список товаров
#### 3.1.4 Умное размещение
- **Правила автоматического размещения:**
- Тяжелое вниз, легкое вверх
- Часто используемое в зоне доступности
- Химия отдельно от пищевых товаров
- ГП отдельно от сырья
- **Подсказки системы:** оптимальные места для размещения
### 3.2 Справочники
#### 3.2.1 Материалы
- Название, артикул, штрихкод (автогенерируемый)
- Единица измерения, средняя цена
- Фото, описание
- Синонимы (для распознавания чеков)
- История поставщиков
- Текущие места хранения
#### 3.2.2 Готовая продукция
- Название, артикул, штрихкод
- Описание, фото, цена
- Рецепт производства
- Время изготовления
- Места хранения
#### 3.2.3 Места хранения
- Тип места (шкаф, зона, стол)
- Адрес (уникальный код)
- QR-код для сканирования
- Характеристики (размер, грузоподъемность)
- Правила размещения
- Текущая загруженность
#### 3.2.4 Контрагенты
- Поставщики и покупатели
- Контактные данные
- История чеков (для автораспознавания)
- Рейтинг и заметки
#### 3.2.5 Производственные сценарии
- Название сценария
- Основные материалы + количество
- Коэффициенты использования (%)
- Вспомогательные расходы
- Планируемые отходы (%)
- Время производства
### 3.3 Документооборот
#### 3.3.1 Поступление материалов
**Через фото чека:**
1. Фотографируем чек
2. OCR распознает товары и цены
3. Система сопоставляет с базой материалов
4. Предлагает новые позиции для неизвестных
5. Автозаполняет документ поступления
6. Предлагает места для размещения
**Через штрихкод:**
1. Сканируем ШК материала
2. Указываем количество и цену
3. Выбираем поставщика
4. Размещаем в предложенное место
**Ручное создание:**
- Традиционное заполнение формы
- С возможностью добавления фото
#### 3.3.2 Размещение на склад
1. Сканируем товар (ШК)
2. Сканируем место размещения (QR-код)
3. Указываем количество
4. Система фиксирует местоположение
#### 3.3.3 Списание материалов
**По штрихкоду:**
1. Сканируем ШК материала
2. Указываем количество
3. Выбираем причину (производство/брак/списание)
4. Система списывает с конкретных мест хранения
**По производственному заданию:**
1. Создаем задание на производство
2. Система рассчитывает потребность в материалах
3. Показывает маршрут сбора по складу
4. Сканируем материалы при сборе
5. Автоматическое списание
#### 3.3.4 Производственное задание
- Выбор изделия и количества
- Автоматический расчет материалов по рецепту
- Учет коэффициентов использования и отходов
- Маршрут сбора материалов по складу
- Контроль фактического списания
- Оприходование готовой продукции и отходов
#### 3.3.5 Заказ покупателя
- Быстрое создание заказа
- Резервирование товара на складе
- Контроль остатков
- Формирование документов отгрузки
#### 3.3.6 Отгрузка
- Сканирование ГП при отгрузке
- Списание с мест хранения
- Простая печать документов
- Уведомление о выполнении заказа
### 3.4 Система штрихкодов и QR-кодов
#### 3.4.1 Генерация кодов
- **Штрихкоды** для товаров (Code 128)
- **QR-коды** для мест хранения
- **QR-коды** для производственных заданий
- Автоматическая генерация при создании позиций
#### 3.4.2 Печать этикеток
- **Шаблоны для обычного принтера:**
- A4 сетка этикеток
- Отдельные этикетки
- Мелкие стикеры
- **Разные размеры** под разные нужды
- **Водостойкие варианты** (рекомендации по бумаге)
#### 3.4.3 Мобильное сканирование
- **Камера телефона** как сканер
- **Быстрые действия** после сканирования
- **Пакетное сканирование** для массовых операций
- **Офлайн-режим** с последующей синхронизацией
### 3.5 Computer Vision модуль
#### 3.5.1 Распознавание чеков
- **OCR товаров, количества, цен**
- **Распознавание дат и поставщиков**
- **Сопоставление с базой материалов**
- **Обучение на каждом новом чеке**
#### 3.5.2 Умные подсказки
- **База синонимов** материалов
- **Предложения для неизвестных товаров**
- **Автоопределение поставщиков** по чекам
- **Валидация распознанных данных**
### 3.6 Отчеты и аналитика
#### 3.6.1 Складские отчеты
- **Остатки материалов** с указанием мест хранения
- **Остатки готовой продукции**
- **Загруженность мест хранения**
- **Товары без места** (требуют размещения)
- **История перемещений** по складу
#### 3.6.2 Производственные отчеты
- **Себестоимость изделий** с учетом отходов
- **Эффективность использования** материалов
- **Планируемые vs фактические потери**
- **Анализ отходов** по типам и стоимости
#### 3.6.3 Финансовые отчеты
- **Продажи за период**
- **Эффективность поставщиков** (цена, качество)
- **Оборачиваемость материалов**
- **План закупок** (что заканчивается)
#### 3.6.4 Аналитика пространства
- **Частота обращения** к зонам склада
- **Товары-путешественники** (часто перемещаемые)
- **Мертвые зоны** (неиспользуемые места)
- **Предложения по оптимизации** размещения
---
## 4. Технические требования
### 4.1 Платформа и архитектура
- **Progressive Web App (PWA)**
- **Responsive design** для всех устройств
- **Offline-first** архитектура
- **Синхронизация** при появлении интернета
### 4.2 Клиентская часть
- **Современный веб-интерфейс** (React/Vue)
- **Камера API** для сканирования и фото
- **Локальное хранение** для оффлайн-режима
- **Push-уведомления** для важных событий
### 4.3 Серверная часть
- **RESTful API** для всех операций
- **Реляционная БД** (PostgreSQL) для основных данных
- **Файловое хранилище** для фото и документов
- **Очереди задач** для обработки фото чеков
### 4.4 Интеграции и API
- **OCR сервисы** (Google Vision API / Yandex OCR)
- **Генерация штрихкодов** (встроенные библиотеки)
- **Экспорт в Excel/CSV**
- **API для интеграции** с внешними системами
### 4.5 Безопасность
- **HTTPS** для всех подключений
- **JWT токены** для аутентификации
- **Резервное копирование** данных
- **Разграничение прав** пользователей
---
## 5. Пользовательские роли и права
### 5.1 Роли пользователей
**Владелец/Мастер:**
- Полный доступ ко всем функциям
- Настройка системы и пространства
- Управление пользователями
**Сотрудник производства:**
- Операции с материалами и ГП
- Выполнение производственных заданий
- Просмотр остатков и мест хранения
**Кладовщик:**
- Поступление и размещение товаров
- Инвентаризация
- Отчеты по складу
**Наблюдатель:**
- Только просмотр отчетов
- Мониторинг процессов
### 5.2 Ограничения по тарифам
**Starter:** 1 пользователь, 100 материалов, 50 изделий
**Pro:** 3 пользователя, безлимит материалов/изделий
**Team:** 10 пользователей + расширенный API
---
## 6. UX/UI принципы
### 6.1 Философия интерфейса
- **"Максимум 3 клика"** до любой операции
- **"Сканирование → 1 клик → готово"** для частых действий
- **Крупные элементы** для мобильных устройств
- **Интуитивная навигация** без обучения
### 6.2 Мобильные особенности
- **Портретная ориентация** как основная
- **Большие области** для сканирования
- **Тактильная обратная связь** при сканировании
- **Голосовые подсказки** для навигации по складу
### 6.3 Визуальный дизайн
- **Минималистичный стиль** без отвлекающих элементов
- **Цветовые индикаторы** состояний (свободно/занято/переполнено)
- **Иконки вместо текста** где возможно
- **Темная тема** для работы в условиях плохого освещения
---
## 7. Этапы разработки и внедрения
### 7.1 Фаза 1: Организация пространства (2-3 месяца)
**Приоритет 1:**
- Мастер настройки складского пространства
- Справочник мест хранения
- Генерация и печать QR-кодов
- Размещение и поиск товаров по местам
- Виртуальная карта склада
**Результат:** Превращение хаоса в организованную систему хранения
### 7.2 Фаза 2: Базовая автоматизация (2-3 месяца)
**Приоритет 2:**
- Справочники материалов и ГП
- Генерация штрихкодов
- Мобильное сканирование
- Базовые операции (поступление, списание, перемещение)
- Простые отчеты по остаткам
**Результат:** Цифровой учет с быстрыми операциями
### 7.3 Фаза 3: Умная автоматизация (2-3 месяца)
**Приоритет 3:**
- Computer Vision для чеков
- Автоматическое сопоставление товаров
- Умные подсказки по размещению
- Расширенная аналитика
**Результат:** Минимизация ручного ввода данных
### 7.4 Фаза 4: Производственные процессы (2-3 месяца)
**Приоритет 4:**
- Кастомные производственные сценарии
- Учет отходов и коэффициентов
- Производственные задания
- Расчет себестоимости
**Результат:** Полный цикл от материала до готового изделия
### 7.5 Фаза 5: Оптимизация и масштабирование
**Приоритет 5:**
- API для интеграций
- Расширенная аналитика эффективности
- Мультитенантность
- Дополнительные модули по запросам
---
## 8. Метрики успеха
### 8.1 Внедрение
- **Время настройки пространства:** до 4 часов
- **Время обучения сотрудника:** до 1 часа
- **Время размещения товара:** до 30 секунд
- **Время поиска товара:** до 20 секунд
### 8.2 Операционные метрики
- **Точность инвентаризации:** 95%+
- **Скорость поступления по чеку:** до 2 минут
- **Использование пространства:** +30% эффективности
- **Retention клиентов:** 70%+ через 3 месяца
### 8.3 Бизнес-метрики
- **Сокращение времени поиска:** в 5-10 раз
- **Уменьшение потерь:** на 20-30%
- **Ускорение инвентаризации:** в 3-5 раз
- **Точность себестоимости:** 90%+
---
## 9. Технические ограничения MVP
### 9.1 Что НЕ включаем в первую версию
- Многовалютность
- Интеграция с банками и 1С
- Серийные номера и партии
- Сложная логистика и маршрутизация
- CRM и управление клиентами
- Планирование производства
### 9.2 Технические лимиты
- Максимум 10,000 материалов в базе
- Максимум 1,000 мест хранения
- Размер фото до 10 МБ
- Offline-хранение до 100 МБ
### 9.3 Требования к окружению
- **Браузер:** Chrome 90+, Safari 14+, Firefox 88+
- **Мобильные:** iOS 14+, Android 10+
- **Интернет:** минимум 1 Мбит/с для синхронизации
- **Камера:** разрешение от 5 Мп для сканирования
---
## 10. Заключение
Данное ТЗ описывает инновационный подход к автоматизации микропроизводств, который решает реальные проблемы малого бизнеса:
1. **Организация хаоса** без больших затрат
2. **Простота использования** без специального обучения
3. **Современные технологии** (CV, мобильность) в доступной форме
4. **Гибкость настройки** под специфику конкретного производства
Продукт должен стать мостом между "Excel-ным" учетом и сложными ERP-системами, предоставляя оптимальное соотношение функциональности и простоты для своей целевой аудитории.

View File

@@ -0,0 +1,470 @@
---
title: "План функций - Этап 1"
description: "Детальный план первого этапа разработки с организацией складского пространства"
tags: [features, phase1, warehouse, qr-codes, templates]
date: 2024-08-26
---
# Фич-план: Этап 1 - Организация складского пространства
## Обзор этапа
**Цель:** Превращение хаотичного складского пространства в организованную систему хранения с цифровой картой и адресацией мест
**Ключевая ценность:** Пользователь получает инструмент для организации существующего пространства без покупки дополнительного оборудования
**Результат:** Полностью структурированный склад с QR-кодированными местами хранения и цифровой навигацией
---
## 1. Базовая настройка системы
### 1.1 Регистрация и создание организации
- **RF-001** Регистрация пользователя (email + пароль)
- **RF-002** Создание профиля организации (название, тип производства, контакты)
- **RF-003** Выбор часового пояса и валюты
- **RF-004** Загрузка логотипа организации
- **RF-005** Email подтверждение регистрации
### 1.2 Управление пользователями
- **RF-006** Приглашение сотрудников по email
- **RF-007** Назначение ролей (Владелец, Сотрудник, Наблюдатель)
- **RF-008** Управление правами доступа по ролям
- **RF-009** Деактивация/активация пользователей
- **RF-010** Смена ролей пользователей
---
## 2. Визуальный редактор планировки складских помещений
### 2.1 Рабочая область редактора
#### 2.1.1 Холст и координатная система
- **RF-011** Масштабируемый холст с сеткой (1 клетка = 50 см)
- **RF-012** Координатная система в метрах/сантиметрах
- **RF-013** Привязка к сетке для точного позиционирования
- **RF-014** Линейки по краям для измерений
- **RF-015** Zoom от 10% до 500% с колесиком мыши
- **RF-016** Панорамирование по drag холста
#### 2.1.2 Режимы работы
- **RF-017** Режим "Помещения" (создание контуров, стены, двери, окна)
- **RF-018** Режим "Мебель" (размещение шкафов, стеллажей, столов)
- **RF-019** Режим "Зоны" (создание напольных зон, проходы)
- **RF-020** Переключение между режимами с сохранением контекста
### 2.2 Библиотека элементов
#### 2.2.1 Элементы помещений
- **RF-021** Стены и перегородки (прямые, угловые, изогнутые)
- **RF-022** Проемы (двери одно/двустворчатые, раздвижные, окна, ворота)
- **RF-023** Инженерные элементы (колонны, лестницы, коммуникации)
- **RF-024** Настройка толщины стен (10-50 см)
#### 2.2.2 Мебель и оборудование
- **RF-025** Шкафы и стеллажи (стандартные размеры + кастомные)
- **RF-026** Столы и верстаки (различные конфигурации)
- **RF-027** Напольные контейнеры (паллеты, ящики, бочки)
- **RF-028** Оборудование (станки, 3D-принтеры, печи)
- **RF-029** Библиотека стандартных размеров мебели
#### 2.2.3 Зоны и разметка
- **RF-030** Типы зон (сырье, ГП, рабочая, упаковка, отходы, офис)
- **RF-031** Разметка пола (цветная лента, линии, указатели)
- **RF-032** Цветовое кодирование зон
- **RF-033** Автоматическая нумерация зон
### 2.3 Инструменты редактирования
#### 2.3.1 Основные инструменты
- **RF-034** Выделение и перемещение объектов (одиночное/множественное)
- **RF-035** Создание объектов (прямоугольник, линия, многоугольник, круг)
- **RF-036** Поворот объектов (с шагом 15°/90°)
- **RF-037** Изменение размеров с сохранением пропорций
- **RF-038** Точное позиционирование по координатам
#### 2.3.2 Продвинутые инструменты
- **RF-039** Копирование/вставка объектов (Ctrl+C/V)
- **RF-040** Дублирование с смещением
- **RF-041** Массовое дублирование (создание ряда шкафов)
- **RF-042** Отражение по горизонтали/вертикали
- **RF-043** Выравнивание объектов (по краям, центрам)
- **RF-044** Распределение объектов равномерно
#### 2.3.3 Группировка и слои
- **RF-045** Группировка связанных объектов
- **RF-046** Разгруппировка объектов
- **RF-047** Блокировка объектов от случайных изменений
- **RF-048** Слои: Помещения, Мебель, Зоны, Подписи
- **RF-049** Показать/скрыть слои
- **RF-050** Управление порядком слоев
### 2.4 Настройка свойств объектов
#### 2.4.1 Свойства помещений
- **RF-051** Название помещения и описание
- **RF-052** Автоматический расчет площади
- **RF-053** Настройка высоты потолков
- **RF-054** Тип покрытия пола
- **RF-055** Особенности помещения (влажность, температура)
- **RF-056** Визуальные свойства (цвет, заливка, прозрачность)
#### 2.4.2 Свойства мебели
- **RF-057** Точные размеры (Д×Ш×В) с валидацией
- **RF-058** Количество полок/ящиков
- **RF-059** Грузоподъемность каждой полки
- **RF-060** Материал изготовления
- **RF-061** Мобильность (стационарный/передвижной)
- **RF-062** Назначение и условия хранения
- **RF-063** Визуальные свойства и подписи
#### 2.4.3 Свойства зон
- **RF-064** Тип зоны из предустановленного списка
- **RF-065** Автоматический расчет площади зоны
- **RF-066** Вместимость и правила размещения
- **RF-067** Назначение ответственного сотрудника
- **RF-068** Цветовое кодирование по типу зоны
### 2.5 Автоматизация и помощники
#### 2.5.1 Умные подсказки
- **RF-069** Предложения стандартных размеров при создании
- **RF-070** Проверка замкнутости контуров помещений
- **RF-071** Предупреждения о слишком узких проходах (<80 см)
- **RF-072** Автоматическая привязка мебели к стенам
- **RF-073** Проверка пересечений объектов
- **RF-074** Рекомендации по эргономике размещения
#### 2.5.2 Валидация схемы
- **RF-075** Проверка доступности всех мест хранения
- **RF-076** Валидация соответствия требованиям безопасности
- **RF-077** Проверка эргономичности расположения
- **RF-078** Предупреждения о превышении грузоподъемности
- **RF-079** Выявление конфликтов размещения
#### 2.5.3 Автоматическая генерация адресов
- **RF-080** Автоматическое присвоение адресов всем объектам
- **RF-081** Логичная нумерация (слева направо, сверху вниз)
- **RF-082** Генерация иерархии (шкаф полка ячейка)
- **RF-083** Возможность ручной корректировки адресов
- **RF-084** Валидация уникальности адресов
### 2.6 Измерения и аннотации
#### 2.6.1 Инструменты измерения
- **RF-085** Линейка для измерения расстояний
- **RF-086** Транспортир для измерения углов
- **RF-087** Расчет площади выделенной области
- **RF-088** Расчет периметра сложных фигур
- **RF-089** Отображение размеров в реальном времени
#### 2.6.2 Размерные линии и аннотации
- **RF-090** Автоматическое проставление размеров
- **RF-091** Создание размерных цепей
- **RF-092** Выносные линии с подписями
- **RF-093** Текстовые аннотации и пояснения
- **RF-094** Стрелки-указатели направлений
### 2.7 Экспорт и шаблоны
#### 2.7.1 Экспорт и печать
- **RF-095** Экспорт в PNG/JPG (для презентаций)
- **RF-096** Экспорт в PDF (для печати)
- **RF-097** Экспорт в SVG (векторный формат)
- **RF-098** Настройки масштаба печати (1:50, 1:100)
- **RF-099** Разбивка на листы при больших схемах
#### 2.7.2 Шаблоны и библиотеки
- **RF-100** Готовые шаблоны типовых планировок
- **RF-101** Отраслевые шаблоны (ювелирная, кондитерская и т.д.)
- **RF-102** Создание пользовательских библиотек элементов
- **RF-103** Сохранение и загрузка кастомных элементов
- **RF-104** Экспорт/импорт библиотек
---
## 3. Справочник мест хранения
### 3.1 Управление местами хранения
- **RF-105** Автоматическое создание мест из схемы редактора
- **RF-106** Ручное создание мест с заполнением характеристик
- **RF-107** Редактирование свойств существующих мест
- **RF-108** Массовое редактирование свойств
- **RF-109** Мягкое удаление с возможностью восстановления
### 3.2 Иерархия и адресация
- **RF-110** Древовидная структура мест хранения
- **RF-111** Наследование свойств от родительских мест
- **RF-112** Перемещение в иерархии (drag & drop)
- **RF-113** Настройка форматов адресации (префиксы, разделители)
- **RF-114** Валидация правил именования
### 3.3 Характеристики мест
- **RF-115** Физические характеристики (размеры, грузоподъемность)
- **RF-116** Условия хранения (температура, влажность)
- **RF-117** Доступность (легко/средне/тяжело добраться)
- **RF-118** Правила размещения товаров
- **RF-119** Связь с объектами на схеме редактора
### 3.4 Правила размещения
- **RF-120** Автоматические правила (тяжелое вниз, частое - доступно)
- **RF-121** Кастомные правила размещения
- **RF-122** Исключения для специфических товаров
- **RF-123** Приоритеты и конфликт-резолюшн правил
---
## 4. Генерация и управление QR-кодами
### 4.1 Генерация QR-кодов
- **RF-124** Автоматическая генерация уникальных QR-кодов
- **RF-125** Кодирование метаданных (ID места, адрес, координаты)
- **RF-126** Версионность для совместимости при обновлениях
- **RF-127** Валидация и проверка целостности QR-кодов
### 4.2 Шаблоны этикеток
- **RF-128** Размеры этикеток (большие 10×5, средние 5×3, маленькие 2×2 см)
- **RF-129** Форматы печати (A4 сетка, отдельные этикетки)
- **RF-130** Дизайн этикеток (QR + адрес + логотип)
- **RF-131** Цветовое кодирование по типам мест
- **RF-132** Настройка дополнительной информации на этикетке
### 4.3 Печать и размещение
- **RF-133** Выбор мест для печати (отдельные/массово)
- **RF-134** Предварительный просмотр листа
- **RF-135** PDF генерация для любых принтеров
- **RF-136** Инструкции по наклеиванию этикеток
- **RF-137** Контроль качества печати и рекомендации
---
## 5. Виртуальная карта склада
### 5.1 Визуализация пространства
- **RF-138** Схематичный план (2D вид сверху) из редактора
- **RF-139** Список с иерархией (древовидная структура)
- **RF-140** Плитки с превью мест (card view)
- **RF-141** Табличное представление с фильтрами
- **RF-142** Интерактивный клик на место детальная информация
### 5.2 Цветовые индикаторы состояний
- **RF-143** Зеленый: свободно (0-25% заполнения)
- **RF-144** Желтый: частично заполнено (25-75%)
- **RF-145** Оранжевый: почти полно (75-90%)
- **RF-146** Красный: переполнено (90%+)
- **RF-147** Синий: зарезервировано
- **RF-148** Серый: недоступно/на обслуживании
- **RF-149** Дополнительные индикаторы (внимание, активность, популярность)
### 5.3 Информационные панели
- **RF-150** Общая статистика склада (количество мест, загруженность)
- **RF-151** Детальная информация о месте при клике
- **RF-152** История активности места
- **RF-153** Рекомендации по оптимизации
- **RF-154** Быстрые действия с местом
---
## 6. Операции с местами хранения
### 6.1 Резервирование и управление состоянием
- **RF-155** Временное резервирование под планируемые поступления
- **RF-156** Постоянное резервирование под специфические товары
- **RF-157** Сезонное резервирование
- **RF-158** Автоматическое снятие резерва по истечении времени
- **RF-159** Уведомления об истечении резерва
### 6.2 Техническое обслуживание
- **RF-160** Пометка места как недоступного (ремонт, реорганизация)
- **RF-161** Планирование обслуживания с календарем
- **RF-162** История обслуживания и ремонтов
- **RF-163** Временные ограничения доступа
- **RF-164** Уведомления о необходимости обслуживания
### 6.3 Массовые операции
- **RF-165** Массовое изменение свойств мест
- **RF-166** Импорт/экспорт мест из Excel/CSV
- **RF-167** Массовое резервирование/освобождение
- **RF-168** Копирование настроек между местами
---
## 7. Поиск и навигация
### 7.1 Поиск мест хранения
- **RF-169** Точный поиск по адресу (Ш1-П2-Я3)
- **RF-170** Поиск по части адреса с автодополнением
- **RF-171** Fuzzy search с опечатками
- **RF-172** Фильтр по характеристикам (тип, размер, грузоподъемность)
- **RF-173** Поиск по состоянию и загруженности
- **RF-174** Сохранение часто используемых фильтров
### 7.2 Умные подсказки размещения
- **RF-175** Анализ потребностей (размер, вес, частота использования)
- **RF-176** Топ-3 оптимальных места для размещения
- **RF-177** Объяснение выбора места системой
- **RF-178** Альтернативные варианты размещения
- **RF-179** Предупреждения о неоптимальном размещении
### 7.3 Навигация и маршруты
- **RF-180** Построение маршрута к нужному месту на карте
- **RF-181** Оптимизация пути при посещении нескольких мест
- **RF-182** Визуальные указатели на схеме склада
- **RF-183** Пошаговые инструкции навигации
---
## 8. Мобильное приложение (PWA)
### 8.1 Основной интерфейс
- **RF-184** PWA установка как нативное приложение
- **RF-185** Главный экран с быстрыми действиями
- **RF-186** Статистика склада на главном экране
- **RF-187** История последних активностей
- **RF-188** Ярлыки на часто используемые места
### 8.2 Сканирование QR-кодов
- **RF-189** Доступ к камере для сканирования QR
- **RF-190** Автофокус и распознавание в реальном времени
- **RF-191** Работа при плохом освещении
- **RF-192** Вибрация и звук при успешном сканировании
- **RF-193** История сканирований с временными метками
### 8.3 Действия после сканирования
- **RF-194** Показ информации о месте после сканирования
- **RF-195** Быстрые действия (резерв, обслуживание, поиск маршрута)
- **RF-196** Переход к связанным операциям
- **RF-197** Добавление заметок к месту
### 8.4 Offline функциональность
- **RF-198** Кеширование карты склада и мест хранения
- **RF-199** Офлайн поиск по закешированным данным
- **RF-200** Очередь операций для синхронизации
- **RF-201** Автоматическая синхронизация при появлении сети
- **RF-202** Индикатор статуса синхронизации
- **RF-203** Конфликт-резолюшн при одновременных изменениях
---
## 9. Отчеты и аналитика
### 9.1 Отчеты по использованию пространства
- **RF-204** Процент использования склада по объему и количеству мест
- **RF-205** Динамика загруженности за период
- **RF-206** Сравнение плановой и фактической вместимости
- **RF-207** Анализ по зонам (самые/наименее загруженные)
- **RF-208** Распределение по типам мест хранения
### 9.2 Операционная аналитика
- **RF-209** Частота обращения к местам хранения
- **RF-210** Время с последнего использования места
- **RF-211** "Горячие" и "холодные" зоны склада
- **RF-212** Анализ маршрутов перемещений
- **RF-213** Проблемные места (требующие внимания)
### 9.3 Рекомендации по оптимизации
- **RF-214** Предложения по перемещению часто используемых мест
- **RF-215** Рекомендации по освобождению заблокированных мест
- **RF-216** Советы по реорганизации переполненных зон
- **RF-217** Оптимизация маршрутов перемещения
- **RF-218** Планы по улучшению эффективности использования
---
## 10. Настройки и администрирование
### 10.1 Настройки системы
- **RF-219** Настройки форматов адресации (префиксы, разделители)
- **RF-220** Правила автоматической нумерации
- **RF-221** Максимальная глубина иерархии мест
- **RF-222** Валидация правил именования
- **RF-223** Настройки цветового кодирования
### 10.2 Шаблоны и резервные копии
- **RF-224** Шаблоны типовых помещений для быстрой настройки
- **RF-225** Экспорт/импорт конфигурации склада
- **RF-226** Автоматические резервные копии настроек
- **RF-227** Версионность изменений с возможностью отката
- **RF-228** Миграция данных между версиями
### 10.3 Интеграция и логирование
- **RF-229** REST API для интеграции с внешними системами
- **RF-230** Webhook'и для уведомлений о событиях
- **RF-231** Экспорт данных в различных форматах
- **RF-232** Подробное логирование всех операций
- **RF-233** Аудит-лог изменений с пользователями и временем
---
## 11. Безопасность и производительность
### 11.1 Безопасность
- **RF-234** HTTPS для всех соединений
- **RF-235** JWT токены с ограниченным временем жизни
- **RF-236** Шифрование критических данных в БД
- **RF-237** Разграничение прав доступа по ролям
- **RF-238** Аудит-лог безопасности
### 11.2 Производительность и надежность
- **RF-239** Автоматические ежедневные бэкапы
- **RF-240** Инкрементальное копирование изменений
- **RF-241** Тестирование восстановления из бэкапов
- **RF-242** Мониторинг доступности сервиса
- **RF-243** Алерты при критических ошибках
### 11.3 Пользовательский опыт
- **RF-244** Адаптивный дизайн для всех устройств
- **RF-245** Крупные тапабельные элементы (min 44px)
- **RF-246** Контрастные цвета и читаемые шрифты
- **RF-247** Тост-уведомления о результатах операций
- **RF-248** Подсказки для новых пользователей (onboarding)
---
## Метрики успеха этапа
### Внедрение
- **Время настройки пространства:** до 4 часов
- **Время обучения сотрудника:** до 1 часа
- **Время создания схемы помещения:** до 2 часов
- **Точность автогенерации адресов:** 95%+
### Операционные метрики
- **Время размещения товара:** до 30 секунд
- **Время поиска места:** до 20 секунд
- **Скорость сканирования QR:** до 2 секунд
- **Точность распознавания QR:** 99%+
### Пользовательский опыт
- **Удобство использования:** 4.5+ из 5
- **Время отклика интерфейса:** до 200мс
- **Процент успешных операций:** 98%+
- **Retention пользователей:** 70%+ через месяц
---
## Технические требования
### Архитектура
- **Backend:** Go (основная логика) + Python (документы)
- **Frontend:** Angular PWA
- **База данных:** PostgreSQL
- **Кэширование:** Redis
### Производительность
- **Поддержка:** до 10,000 мест хранения
- **Пользователи:** до 50 одновременных
- **Размер схем:** до 100 МБ
- **Offline хранение:** до 100 МБ
### Совместимость
- **Браузеры:** Chrome 90+, Safari 14+, Firefox 88+
- **Мобильные:** iOS 14+, Android 10+
- **Интернет:** минимум 1 Мбит/с
- **Камера:** от 5 Мп для QR-сканирования
---
**Итого функций в этапе: 248 требований**
Этот этап закладывает фундамент для всей системы, превращая хаотичное пространство в структурированный, цифровизированный склад с современными инструментами навигации и управления.