Add technical documentation structure
This commit is contained in:
220
docs/tech/production.md
Normal file
220
docs/tech/production.md
Normal file
@@ -0,0 +1,220 @@
|
||||
# Производство (Production)
|
||||
|
||||
Система производственных цепочек и процессов.
|
||||
|
||||
## Обзор
|
||||
|
||||
Производство преобразует сырьё и компоненты в готовые товары через цепочки операций.
|
||||
|
||||
📂 **Код:** [`backend/src/MyBiz.Core/ProductionChain.cs`](../../backend/src/MyBiz.Core/ProductionChain.cs)
|
||||
|
||||
---
|
||||
|
||||
## Архитектура
|
||||
|
||||
```
|
||||
┌────────────────────────┐ ┌────────────────────────┐
|
||||
│ ProductionChainConfig │ │ ActiveProductionChain │
|
||||
│ (конфигурация) │ ──────► │ (активный процесс) │
|
||||
│ - OutputProductId │ Config │ - CurrentStep │
|
||||
│ - RequiredBuildingId │ │ - Progress │
|
||||
│ - Steps[] │ │ - IsActive │
|
||||
└────────────────────────┘ └────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌────────────────────────┐
|
||||
│ Building │
|
||||
│ (где происходит) │
|
||||
└────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ProductionStep
|
||||
|
||||
**Назначение:** Один шаг производственного процесса.
|
||||
|
||||
📂 **Исходный код:** [`ProductionChain.cs`](../../backend/src/MyBiz.Core/ProductionChain.cs#L5-L22)
|
||||
|
||||
### Свойства
|
||||
|
||||
| Свойство | Тип | Описание |
|
||||
|----------|-----|----------|
|
||||
| `InputProductId` | string | ID требуемого продукта |
|
||||
| `InputQuantity` | int | Количество |
|
||||
| `ProductionTime` | int | Время выполнения в тиках |
|
||||
|
||||
---
|
||||
|
||||
## ProductionChainConfig
|
||||
|
||||
**Назначение:** Конфигурация производственной цепочки (рецепт).
|
||||
|
||||
📂 **Исходный код:** [`ProductionChain.cs`](../../backend/src/MyBiz.Core/ProductionChain.cs#L25-L68)
|
||||
|
||||
### Свойства
|
||||
|
||||
| Свойство | Тип | Описание |
|
||||
|----------|-----|----------|
|
||||
| `Id` | string | Уникальный идентификатор |
|
||||
| `Name` | string | Название цепочки |
|
||||
| `OutputProductId` | string | ID выходного продукта |
|
||||
| `OutputQuantity` | int | Количество выходного продукта |
|
||||
| `RequiredBuildingId` | string | ID требуемого здания |
|
||||
| `Steps` | List<ProductionStep> | Шаги производства |
|
||||
| `RequiredTechnologies` | List<string> | Требуемые технологии |
|
||||
| `AvailableFromYear` | int | Год доступности |
|
||||
|
||||
---
|
||||
|
||||
## ActiveProductionChain
|
||||
|
||||
**Назначение:** Активный процесс производства на здании.
|
||||
|
||||
📂 **Исходный код:** [`ProductionChain.cs`](../../backend/src/MyBiz.Core/ProductionChain.cs#L73-L125)
|
||||
|
||||
### Свойства
|
||||
|
||||
| Свойство | Тип | Описание |
|
||||
|----------|-----|----------|
|
||||
| `Config` | ProductionChainConfig | Конфигурация |
|
||||
| `Building` | Building | Здание, где происходит |
|
||||
| `CurrentStep` | int | Текущий шаг (0-based) |
|
||||
| `Progress` | int | Прогресс текущего шага (в тиках) |
|
||||
| `IsActive` | bool | Процесс активен |
|
||||
| `StartedAtTick` | int | Тик запуска |
|
||||
|
||||
### Вычисляемые свойства
|
||||
|
||||
- `IsStepComplete` — завершён ли текущий шаг
|
||||
- `IsComplete` — завершено ли всё производство
|
||||
|
||||
### Методы
|
||||
|
||||
| Метод | Описание |
|
||||
|-------|----------|
|
||||
| `Tick()` | Продвинуть производство на 1 тик |
|
||||
|
||||
---
|
||||
|
||||
## Примеры производственных цепочек
|
||||
|
||||
### 🍞 Продукты питания
|
||||
|
||||
```
|
||||
Сельхозпродукция (100) → [Пищекомбинат] → Продукты питания (80)
|
||||
Время: 5 тиков
|
||||
```
|
||||
|
||||
### 👕 Одежда
|
||||
|
||||
```
|
||||
Шаг 1: Хлопок (50) → [Текстильная фабрика] → Ткань (40)
|
||||
Время: 10 тиков
|
||||
|
||||
Шаг 2: Ткань (40) → [Швейная фабрика] → Одежда (30)
|
||||
Время: 8 тиков
|
||||
```
|
||||
|
||||
### 📱 Электроника
|
||||
|
||||
```
|
||||
Шаг 1: Пластик (30) + Сталь (20) → [Завод компонентов] → Электронные компоненты (25)
|
||||
Время: 15 тиков
|
||||
|
||||
Шаг 2: Электронные компоненты (25) + Пластик (15) → [Завод электроники] → Электроника (20)
|
||||
Время: 20 тиков
|
||||
```
|
||||
|
||||
### 🚗 Автомобили
|
||||
|
||||
```
|
||||
Шаг 1: Сталь (100) → [Сталелитейный завод] → Металлоизделия (80)
|
||||
Время: 20 тиков
|
||||
|
||||
Шаг 2: Металлоизделия (80) + Пластик (40) → [Автозавод] → Автомобили (5)
|
||||
Время: 50 тиков
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Примеры использования
|
||||
|
||||
### Создание конфигурации цепочки
|
||||
|
||||
```csharp
|
||||
var breadChain = new ProductionChainConfig
|
||||
{
|
||||
Id = "chain_bread",
|
||||
Name = "Производство хлеба",
|
||||
OutputProductId = "goods_food",
|
||||
OutputQuantity = 80,
|
||||
RequiredBuildingId = "food_factory",
|
||||
Steps = new List<ProductionStep>
|
||||
{
|
||||
new ProductionStep
|
||||
{
|
||||
InputProductId = "raw_food",
|
||||
InputQuantity = 100,
|
||||
ProductionTime = 5
|
||||
}
|
||||
},
|
||||
AvailableFromYear = 1900
|
||||
};
|
||||
```
|
||||
|
||||
### Запуск производства
|
||||
|
||||
```csharp
|
||||
var factory = new Building
|
||||
{
|
||||
TypeConfig = foodFactoryConfig,
|
||||
Workers = 50
|
||||
};
|
||||
|
||||
var production = new ActiveProductionChain
|
||||
{
|
||||
Config = breadChain,
|
||||
Building = factory,
|
||||
IsActive = true,
|
||||
StartedAtTick = 0
|
||||
};
|
||||
|
||||
// Каждый тик:
|
||||
production.Tick();
|
||||
|
||||
if (production.IsComplete)
|
||||
{
|
||||
// Производство завершено, забрать продукт
|
||||
var output = production.Config.OutputProductId;
|
||||
var quantity = production.Config.OutputQuantity;
|
||||
}
|
||||
```
|
||||
|
||||
### Отслеживание прогресса
|
||||
|
||||
```csharp
|
||||
if (production.IsStepComplete)
|
||||
{
|
||||
// Шаг завершён, можно забирать промежуточный продукт
|
||||
var step = production.Config.Steps[production.CurrentStep];
|
||||
// ...
|
||||
}
|
||||
|
||||
Console.WriteLine(
|
||||
$"Прогресс: {production.CurrentStep + 1}/{production.Config.Steps.Count} " +
|
||||
$"({production.Progress}/{production.Config.Steps[production.CurrentStep].ProductionTime} тиков)"
|
||||
);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Связанные документы
|
||||
|
||||
- [Продукты](products.md) — входные и выходные продукты
|
||||
- [Здания](buildings.md) — где происходит производство
|
||||
- [Ядро](core.md) — базовые классы
|
||||
|
||||
---
|
||||
|
||||
**Последнее обновление:** 20.02.2026
|
||||
Reference in New Issue
Block a user