9. Примеры интеграции

Выгрузка для ИИ (JSON)

Базовые примеры create_task, polling get_result, режимов view для synthesis и экспорта NDJSON/CSV. Подробные правила работы с синергией см. в разделе 5.

# 9. Примеры интеграции

Bash (cURL)

Базовый сценарий: create_task + get_result (view=summary).

Фрагмент кодаbash
# 1) Создать задачу
RESPONSE=$(curl -s -X POST "https://digihash.ru/datacollector/api.php?action=create_task" \
  -H "Content-Type: application/json" \
  -H "X-Calc-Profile: B" \
  -d '{
    "api_key": "655351024",
    "user": {
      "first_name": "Иван",
      "last_name": "Иванов",
      "birth_date": "1990-01-01",
      "birth_time": "12:00",
      "birth_city": "Москва"
    },
    "systems": ["forecast", "synthesis"],
    "forecast": {
      "period_type": "day",
      "period_start_date": "2026-02-14"
    }
  }')

echo "$RESPONSE"
TASK_ID=$(echo "$RESPONSE" | jq -r '.request_id')

# 2) Опрос результата
sleep 3
curl -s "https://digihash.ru/datacollector/api.php?action=get_result&request_id=$TASK_ID&view=summary"

Bash (cURL)

Получение explain-режима и экспорт NDJSON.

Фрагмент кодаbash
# Explain-слой synthesis
curl -s "https://digihash.ru/datacollector/api.php?action=get_result&request_id=task_123&view=explain"

# Экспорт NDJSON
curl -s "https://digihash.ru/datacollector/api.php?action=export_result&request_id=task_123&format=ndjson"

Bash (cURL)

Доступ к приватному request_id через заголовок X-API-Key.

Фрагмент кодаbash
# Приватный get_result
curl -s "https://digihash.ru/datacollector/api.php?action=get_result&request_id=task_private_123&view=summary" \
  -H "X-API-Key: your_private_key"

# Приватный export_result
curl -s "https://digihash.ru/datacollector/api.php?action=export_result&request_id=task_private_123&format=ndjson" \
  -H "X-API-Key: your_private_key"

PHP

Пример с опросом результата и переключением view.

Фрагмент кодаphp
<?php
$apiUrl = 'https://digihash.ru/datacollector/api.php';
$requestId = 'task_123';

for ($i = 0; $i < 30; $i++) {
    sleep(2);
    $result = json_decode(file_get_contents($apiUrl . '?action=get_result&request_id=' . urlencode($requestId) . '&view=summary'), true);

    if (($result['status'] ?? '') === 'success') {
        // Для synthesis-задачи это канонический слой summary
        print_r($result['summary'] ?? []);

        // При необходимости запрашиваем расширенное объяснение
        $explain = json_decode(file_get_contents($apiUrl . '?action=get_result&request_id=' . urlencode($requestId) . '&view=explain'), true);
        print_r($explain['domain_components'] ?? []);
        exit;
    }

    if (($result['status'] ?? '') === 'error') {
        throw new RuntimeException('Ошибка worker: ' . json_encode($result['error'] ?? null, JSON_UNESCAPED_UNICODE));
    }
}

throw new RuntimeException('Превышено время ожидания результата');
?>

JavaScript (Fetch)

Фронтенд-опрос с view=summary и последующим экспортом csv.

Фрагмент кодаjavascript
async function getSynthesisAndExport(requestId) {
  const base = 'https://digihash.ru/datacollector/api.php';

  const summaryRes = await fetch(`${base}?action=get_result&request_id=${encodeURIComponent(requestId)}&view=summary`);
  const summary = await summaryRes.json();

  if (summary.status !== 'success') {
    throw new Error(`Задача еще не готова: ${summary.status}`);
  }

  const csvRes = await fetch(`${base}?action=export_result&request_id=${encodeURIComponent(requestId)}&format=csv`);
  const csvText = await csvRes.text();
  return { summary, csvText };
}