5. Работа с Synthesis++ v4
Выгрузка для ИИ (JSON)Synthesis++ v4 — отдельный view/export contract поверх numerology/astrology/bodygraph/transits/forecast. Он не является обязательной частью legacy full get_result: без explicit request обычный get_result возвращает status/context/systems/warnings/request_id. Production result строится как domain-balanced base result, затем ограниченно персонализируется через archetype/sensitivity/reliability modifiers. Архетипический профиль inferred from symbolic/esoteric data, not from PMAI questionnaire.
# 5. Работа с Synthesis++ v4
# Работа с Synthesis++
List
- •Добавляйте "synthesis" в systems, если нужен устойчивый слой аналитики для UI, BI и внешних моделей.
- •Не ожидайте systems.synthesis в legacy full get_result по умолчанию: canonical Synthesis++ contract — get_result view=summary|explain|raw или export_result.
- •Используйте view=summary как основной прод-контракт: это минимальный, стабильный и дешёвый по объёму ответ.
- •Используйте view=explain только там, где нужно объяснение причин результата: доменные вклады, конфликты и топ-факторы.
- •Используйте view=raw только для диагностики, аудита и проверки изменений модели.
- •Для BI/витрин не парсите raw_profile вручную — используйте export_result с row_type.
Этапы жизненного цикла
Клиент → POST create_task
Передайте api_key, user и systems с "synthesis". При необходимости добавьте forecast/current_location/response.
Клиент → GET get_result&view=summary
Получите стабильный result: personalized_scales как summary.scales, base_balanced_scales, personalization_delta, superpower confidence и health.
Клиент → GET get_result&view=explain
При запросе объяснимости получите domain_components, observations с rule_id/rule_version, archetype_profile, reliability_model, conflicts, shadow_flags и model_health.
Клиент → GET export_result
Для BI-слоя выгружайте NDJSON/CSV: summary, domain_component и breakdown_item без дополнительного парсинга.
# Режимы выдачи synthesis
| Поле / Параметр | Тип | Описание |
|---|---|---|
| summary | режим | Режим по умолчанию. Канонический слой v4: schema/calculation/rules/weights версии, personalized summary.scales, base_balanced_scales, personalization_delta, superpower confidence, conflicts_count и health. |
| explain | режим | Расширенный слой причин: domain_components, observations с rule_id/rule_version, archetype_profile, individual_sensitivity_model, reliability_model, conflicts, shadow_flags и model_health. |
| raw | режим | Отладочный режим. Возвращает полный raw_profile synthesis для внутренних проверок. Не использовать как внешний стабильный контракт. |
# Параметры верхнего уровня
| Поле / Параметр | Тип | Описание |
|---|---|---|
| summary.scales | object | Пять personalized шкал Synthesis++ v4 в диапазоне около -100..100: dynamics/control/cognition/focus/social. |
| summary.scale_source | string | Всегда personalized_scales: summary.scales является production personalized result. |
| summary.superpower | string | Ведущий вектор выбирается не только по max(score), но и по margin_to_second, reliability, domain balance, conflict severity и personalization_delta. |
| summary.quality_score | number | Интегральная оценка качества данных 0..100. |
| domain_components | object | Нормализованные вклады доменов по шкалам в том же пространстве, что и финальные score. Возможные домены: NUM, MATRIX_DESTINY, ASTRO, HD, TRANSITS, LUNAR, SPACE_WEATHER, RAZIEL. |
| breakdown_short | object | Короткое объяснение: топ-положительные и топ-отрицательные факторы по каждой шкале. |
| conflicts | array | Конфликтная модель с severity и evidence. Конфликт — не ошибка и не диагноз, а часть индивидуального профиля. |
| reliability_model | object | Модель надёжности: source_quality, completeness, method_confidence, temporal_validity, fallback penalties, module statuses и reasons. |
| model_health | object | Диагностика caps, reliability, excluded observations, domain dominance, correlation groups и personalization drift. |
# Практические рекомендации
List
- •Всегда храните и проверяйте schema_version, calculation_version, rules_version, normalization_version и weights_hash: это защита от тихих изменений логики.
- •Считайте summary.scales production personalized result; для сравнения используйте explain.base_balanced_scales и explain.legacy_flat_scales.
- •Показывайте explain по требованию пользователя: это снижает объём трафика и сложность клиента.
- •Для матрицы судьбы используйте domain_components.*.MATRIX_DESTINY и breakdown_short с source MATRIX_DESTINY:*; не извлекайте выводы из картинки или порядка узлов.
- •Если quality_score низкий, учитывайте reliability_model и model_health.warnings перед выводом жёстких рекомендаций.
- •Если нужно только темпоральное обновление, используйте response.omit_portrait_payload=true.
Bash (cURL)
Полный цикл: create_task с Synthesis++, затем чтение summary и explain.
# 1) Создание задачи
TASK=$(curl -s -X POST "https://digihash.ru/datacollector/api.php?action=create_task" \
-H "Content-Type: application/json" \
-H "X-Calc-Profile: A" \
-d '{
"api_key": "655351024",
"user": {
"first_name": "Иван",
"last_name": "Иванов",
"birth_date": "1990-01-01",
"birth_time": "12:00",
"birth_city": "Москва"
},
"systems": ["forecast", "transits", "synthesis"],
"forecast": {
"period_type": "day",
"period_start_date": "2026-02-14"
},
"response": {
"omit_portrait_payload": true
}
}')
REQUEST_ID=$(echo "$TASK" | jq -r '.request_id')
# 2) Канонический слой summary
curl -s "https://digihash.ru/datacollector/api.php?action=get_result&request_id=$REQUEST_ID&view=summary"
# 3) Слой объяснимости explain
curl -s "https://digihash.ru/datacollector/api.php?action=get_result&request_id=$REQUEST_ID&view=explain"PHP
Пример опроса до success и безопасного переключения между view=summary и view=explain.
<?php
$api = 'https://digihash.ru/datacollector/api.php';
$requestId = 'task_xxx';
for ($i = 0; $i < 60; $i++) {
sleep(2);
$summary = json_decode(file_get_contents($api . '?action=get_result&view=summary&request_id=' . urlencode($requestId)), true);
if (($summary['status'] ?? '') === 'success') {
$scales = $summary['summary']['scales'] ?? [];
$superpower = $summary['summary']['superpower'] ?? null;
// Explain запрашиваем только по требованию
$explain = json_decode(file_get_contents($api . '?action=get_result&view=explain&request_id=' . urlencode($requestId)), true);
$conflicts = $explain['conflicts'] ?? [];
print_r(['scales' => $scales, 'superpower' => $superpower, 'conflicts' => count($conflicts)]);
exit;
}
if (($summary['status'] ?? '') === 'error') {
throw new RuntimeException('Ошибка расчёта: ' . json_encode($summary['error'] ?? null, JSON_UNESCAPED_UNICODE));
}
}
throw new RuntimeException('Таймаут ожидания результата');
?>JavaScript (Fetch)
Экспорт NDJSON в BI и разбор row_type без привязки к raw_profile.
async function exportSynthesisNdjson(requestId) {
const url = `https://digihash.ru/datacollector/api.php?action=export_result&request_id=${encodeURIComponent(requestId)}&format=ndjson`;
const response = await fetch(url);
const text = await response.text();
const rows = text.trim().split('\n').map(line => JSON.parse(line));
const summary = rows.find(r => r.row_type === 'summary');
const domainRows = rows.filter(r => r.row_type === 'domain_component');
const breakdownRows = rows.filter(r => r.row_type === 'breakdown_item');
return { summary, domainRows, breakdownRows };
}