{
  "slug": "rollcall_report_0925",
  "name": "Перекличка · 09:10 · итоговый отчёт v1 + ожидание возражений",
  "description": "В 09:25 собирает фото+списки, LLM парсит имена и время, публикует отчёт v1 в топик 2. Потом 15 минут ждёт возражений от РП, после «подтверди Х → 08:15» — публикует v2 с исправлением.",
  "trigger_kind": "cron",
  "trigger_config": {
    "cron": "10 9 * * 1-6",
    "tz": "Europe/Moscow"
  },
  "graph": {
    "nodes": [
      {
        "id": "t1",
        "type": "trigger.cron",
        "name": "09:10 Пн-Сб",
        "config": {
          "cron": "10 9 * * 1-6",
          "tz": "Europe/Moscow"
        },
        "x": 40,
        "y": 180
      },
      {
        "id": "cmp",
        "type": "data.compare_photos_vs_rollcall",
        "name": "Собрать данные",
        "config": {
          "days_back": 0,
          "topic_thread_ids": "2,111",
          "out_var": "rollcall"
        },
        "x": 260,
        "y": 180
      },
      {
        "id": "parse",
        "type": "llm.parse_with_examples",
        "name": "LLM → имена+время",
        "config": {
          "input_var": "rollcall",
          "bucket": "rollcall_names",
          "max_examples": 5,
          "prompt": "Из списков сообщений извлеки имена рабочих и время прихода. Время = ts фото (если в тексте не указано иное).",
          "schema": "{\"people\":[{\"name\":str,\"arrival_time\":\"HH:MM\",\"source\":\"photo|list\"}],\"total\":int}",
          "out_var": "parsed_rollcall",
          "model_role": "classify"
        },
        "x": 500,
        "y": 180
      },
      {
        "id": "fmt",
        "type": "action.log",
        "name": "Сформировать текст",
        "config": {
          "message": "Рабочих: {parsed_rollcall}"
        },
        "x": 720,
        "y": 180
      },
      {
        "id": "pub",
        "type": "action.publish_rollcall_report",
        "name": "Отчёт v1",
        "config": {
          "template": "📋 Перекличка за сегодня:\n\n{parsed_rollcall}\n\nБригадиры, в течение 5 минут пришлите возражения («Иванов пришёл в 8:15»).",
          "topic_id": "2",
          "days_back": 0
        },
        "x": 940,
        "y": 180
      },
      {
        "id": "wait",
        "type": "wait.duration",
        "name": "Ждать 5 мин",
        "config": {
          "minutes": 5
        },
        "x": 1160,
        "y": 180
      },
      {
        "id": "end",
        "type": "flow.end",
        "name": "Готово",
        "config": {
          "status": "success"
        },
        "x": 1380,
        "y": 180
      }
    ],
    "edges": [
      {
        "from": "t1",
        "to": "cmp"
      },
      {
        "from": "cmp",
        "to": "parse"
      },
      {
        "from": "parse",
        "to": "fmt"
      },
      {
        "from": "fmt",
        "to": "pub"
      },
      {
        "from": "pub",
        "to": "wait"
      },
      {
        "from": "wait",
        "to": "end"
      }
    ]
  },
  "version": 1,
  "exported_at": "2026-05-01T13:14:32.269621"
}