graph TD
A[Старт такта t] --> B[execute_intra_day_tick: Расчет sim_hour и omega]
B --> C[Извлечение профилей из Twin Registry]
C --> D[Запрос интента у Stochastic Generator]
D --> E{Интент валиден?}
E -- Да --> F[Передача в Domain Microservices Pool]
E -- КРИТИЧЕСКИЙ ИНЦИДЕНТ --> G[Вызов ERR-NEGATIVE-ANOMALY в Dynamic Config]
F --> H[Сбор DTO и асинхронный Пуш в FastAPI]
G --> I[Рекурсивная мутация параметров на такт t+1]
H --> J[update_runtime_state: Конец такта]
I --> J
Core Simulation Orchestrator (Центральный диспетчер)
Инвариант ядра: Высокоскоростная In-Memory оркестрация времени и макро-циклов симуляции
1. Назначение сервиса
Core Simulation Orchestrator является главным метрономом и координатором автономного симуляционного полигона. Он функционирует полностью в оперативной памяти (In-Memory) хост-машины и отвечает за дискретизацию времени, управление вложенными циклами (сутки/итерации) и сквозную координацию смежных системных микросервисов без дискового оверхеда (IO-Bound задержек).
2. Архитектура и математический базис времени
Оркестратор оперирует двухфазной временной шкалой, разделенной на макро-циклы (виртуальные операционные сутки) и микро-циклы (высокочастотные внутрисуточные такты).
На каждом микро-такте \(t\) оркестратор рассчитывает текущий виртуальный час sim_hour и пересчитывает угловую частоту моделируемых суток \(\omega\), которая необходима стохастическому процессору для эмуляции циркадных ритмов персонала.
Формула расчета угловой частоты:
\[\omega = \frac{2\pi}{24} \approx 0.2617\]
3. Спецификация системных методов
3.1. initialize_simulation_session
- Тип вызова: Синхронный, внутренний.
- Назначение: Инициализация новой симуляционной сессии, жесткая фиксация базового Stochastic Seed для обеспечения полной детерминированности и воспроизводимости операционного следа.
- Входные параметры:
seed(int): Базовое псевдослучайное число для генератора NumPy.total_days(int): Глубина моделирования (количество операционных суток).
- Выходные данные:
registry_id(UUIDv4) — уникальный токен текущего запущенного процесса.
3.2. execute_macro_cycle_day
- Тип вызова: Циклический фоновый процесс.
- Назначение: Координация внешнего цикла моделирования. Инициализирует текущие сутки (
base_day) и управляет регламентом Cron-планировщика для пакетной выгрузки и синхронизации Master Data.
3.3. execute_intra_day_tick
- Тип вызова: Высокочастотный итератор.
- Назначение: Расчет текущего внутрисуточного шага (t), инкремент виртуального времени и пересчет гармонической составляющей.
- Выходные данные:
current_sim_time(float) — метка времени текущего такта.
3.4. orchestrate_next_step
- Тип вызова: Диспетчер верхнего уровня.
- Назначение: Координация сквозного шага симуляции. Извлекает активных двойников, запрашивает вычисление интента у стохастического процессора, делегирует исполнение доменным микросервисам и передает результат шага в контур мутации параметров.
4. Диаграмма работы диспетчера шага (Mermaid)
5. Программный прототип реализации (Python)
import math
import uuid
class CoreSimulationOrchestrator:
def __init__(self, seed: int, total_days: int):
self.registry_id = uuid.uuid4()
self.seed = seed
self.total_days = total_days
self.current_day = 0
self.current_tick = 0
self.omega = (2 * math.pi) / 24
def execute_intra_day_tick(self) -> dict:
self.current_tick += 1
sim_hour = (self.current_tick * 0.25) % 24
return {
"registry_id": self.registry_id,
"sim_day": self.current_day,
"sim_hour": sim_hour,
"omega": self.omega
}