Міндет және алғышарттар

Теріс сомалы тапсырыстарды тауып, бақылау тобына екі арна арқылы қысқа есеп жіберу.

Бұл мысал демонстрациялық деректер мен баптауларды қолданады. Өндірістік қабылдаушыларды қоспас бұрын күтілетін нәтижені өз ортаңызда тексеріңіз. Мына идентификаторлар: demo_* мысал ретінде берілген: редакторда өз оқу қосылымдарыңызды немесе дереккөздеріңізді таңдаңыз. Төмендегі JSON дайын тасымалдау архивін емес, блоктар мен байланыстар құрылымын көрсетеді.

Ағынды негізгі алушыларға қоспас бұрын хабар мазмұны мен тіркемелерін сынақ алушыларымен тексеріңіз.

Оқу кіріс деректері

orders.csv

Order;Amount
O1;100
O2;-15
O3;50

Блоктар, байланыстар және нақты баптаулар

Түсіндірме схемаҮлкейту ↗20. Email және Telegram арқылы ауытқу хабарлары. Мысал құрылымы: 6 блок, 5 байланыс. Түйін идентификаторлары мен порттары сақталған.
20-ағын схемасы

20-мысал құрылымы: 6 блок, 5 байланыс. Бапталған графтың түйін идентификаторлары мен порттары сақталған.

Конструкторға көрсетілген блоктарды қосып, әрқайсының қасиеттерін ашыңыз және осы мәндерді орнатыңыз. Мына атаулар: demo_* оқу дереккөздері мен қосылымдарын анықтайды.

БлокБаптау
1
Файл
src
  • Рөл: source
  • Дереккөз: demo_notify_orders
  • Оқу баптаулары:
    • Парақ: CSV
    • Ауқым: A1:B4
    • Алғашқы жол — тақырып: так
    • Бөлгіш: ;
2
Бағыттау
router
  • Режим: first
  • Әдепкі бағыт: так
  • Бағыттар:
      • Идентификатор: invalid
      • Белгі: Від’ємна сума
      • Таңдау шарттары:
          • column: Amount
          • Пайдалану: lt
          • Мәні: 0
          • Сандық салыстыру: так
          • value_mode: constant
3
Тармақтағыш
split
  • Тармақтар:
      • Идентификатор: mail
      • Белгі: Пошта
      • Идентификатор: chat
      • Белгі: Telegram
4
Электрондық пошта
email
  • Қосылым: demo_smtp
  • Кімге: [email protected]
  • Тақырып: UBC Data Bridge: винятки {{$date}}
  • Мәтін: Потік {{$flow}}. Кількість винятків: {{$rows}}. {{$table}}
  • Пішім: text
  • time_zone: Europe/Kyiv
5
Telegram хабары
telegram
  • Қосылым: demo_telegram
  • recipient_type: auto
  • Чаттар: -1000000000000
  • Мәтін: Потік {{$flow}}: винятків {{$rows}}. {{$table}}
  • parse_mode: none
  • silent: так
  • time_zone: Europe/Kyiv
6
Деректер экспорты
valid
  • Пішім: csv
  • Файл атауы: valid_orders
  • Мақсаты: download
  • Бөлгіш: ;
  • Уақыт белдеуі: Europe/Kyiv

Порт байланыстары

  • src out → router in
  • router invalid → split in
  • router else → valid in
  • split mail → email in
  • split chat → telegram in
JSON түріндегі толық граф конфигурациясы
{
  "version": 3,
  "nodes": [
    {
      "id": "src",
      "type": "file",
      "label": "src",
      "config": {
        "role": "source",
        "source_id": "demo_notify_orders",
        "options": {
          "sheet": "CSV",
          "range": "A1:B4",
          "header": true,
          "delimiter": ";"
        }
      }
    },
    {
      "id": "router",
      "type": "router",
      "label": "router",
      "config": {
        "mode": "first",
        "default_route": true,
        "routes": [
          {
            "id": "invalid",
            "label": "Від’ємна сума",
            "predicates": [
              {
                "column": "Amount",
                "op": "lt",
                "value": 0,
                "numeric": true,
                "value_mode": "constant"
              }
            ]
          }
        ]
      }
    },
    {
      "id": "split",
      "type": "splitter",
      "label": "split",
      "config": {
        "branches": [
          {
            "id": "mail",
            "label": "Пошта"
          },
          {
            "id": "chat",
            "label": "Telegram"
          }
        ]
      }
    },
    {
      "id": "email",
      "type": "email",
      "label": "email",
      "config": {
        "connection_id": "demo_smtp",
        "to": "[email protected]",
        "subject": "UBC Data Bridge: винятки {{$date}}",
        "body": "Потік {{$flow}}. Кількість винятків: {{$rows}}.\n{{$table}}",
        "format": "text",
        "time_zone": "Europe/Kyiv"
      }
    },
    {
      "id": "telegram",
      "type": "telegram",
      "label": "telegram",
      "config": {
        "connection_id": "demo_telegram",
        "recipient_type": "auto",
        "chats": "-1000000000000",
        "text": "Потік {{$flow}}: винятків {{$rows}}.\n{{$table}}",
        "parse_mode": "none",
        "silent": true,
        "time_zone": "Europe/Kyiv"
      }
    },
    {
      "id": "valid",
      "type": "export",
      "label": "valid",
      "config": {
        "format": "csv",
        "filename": "valid_orders",
        "destination": "download",
        "delimiter": ";",
        "timezone": "Europe/Kyiv"
      }
    }
  ],
  "edges": [
    {
      "source": "src",
      "target": "router",
      "source_port": "out",
      "target_port": "in"
    },
    {
      "source": "router",
      "target": "split",
      "source_port": "invalid",
      "target_port": "in"
    },
    {
      "source": "router",
      "target": "valid",
      "source_port": "else",
      "target_port": "in"
    },
    {
      "source": "split",
      "target": "email",
      "source_port": "mail",
      "target_port": "in"
    },
    {
      "source": "split",
      "target": "telegram",
      "source_port": "chat",
      "target_port": "in"
    }
  ]
}

Күтілетін нәтиже

Оқу жолдары 1 ауытқу береді: O2=-15. invalid тармағы 1 санын және сол жол кестесін қамтитын хат пен хабар жасайды. valid_orders.csv ішінде O1=100 және O3=50 бар. Көрсетілген толтырғыш мекенжайлармен нақты жеткізілім күтілмейді.

Іске қосу және тексеру

  1. Өз сынақ SMTP және Telegram қосылымдарыңызды жасаңыз; мекенжай мен чат ID мәндерін тек мақұлданған сынақ алушыларымен алмастырыңыз.
  2. Алдымен алдын ала қарауда бағыттау мен кесте мазмұнын тексеріңіз; екі арна тек O2 алуы керек.
  3. Нақты сынақ тіркелгі деректерімен оқу іске қосуын орындап, әр қабылдаушы журналын және екі арнадағы жеткізілімді тексеріңіз.
  4. Теріс сомаларсыз қайта тексеріңіз: invalid тармағы белсенді болмауы және хабар жасалмауы керек.

Жиі қателер

  • [email protected] және -1000000000000 — бапталған алушылар емес, толтырғыштар.
  • {{Order}} немесе {{$row}} үлгіні жолға тәуелді етеді; көрсетілген үлгі жалпы сан мен кестені қолданады.
  • Тегтердегі жарамсыз немесе жоқ өріс атаулары хабар дайындауды тоқтатады.
  • silent=true Telegram дыбысын өшіреді; жіберуді тоқтатпайды.
  • Бір арнадағы сәтсіз жеткізілім екіншісі ештеңе жібермегенін дәлелдемейді: қайталаудан бұрын жеке күйлерді тексеріңіз.