{
  "name": "AIva Starter · Из реквизитов — в проверенный список",
  "nodes": [
    {
      "parameters": {},
      "id": "document-check-start",
      "name": "Запуск вручную",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        0,
        180
      ],
      "notes": "Нажмите Execute workflow в n8n. Внешние сервисы не вызываются."
    },
    {
      "parameters": {
        "mode": "runOnceForAllItems",
        "jsCode": "return [{\"json\":{\"number\":\"DEMO-01\",\"vendor\":\"Demo LLC\",\"lines\":[1000,2000],\"total\":3000}},{\"json\":{\"number\":\"\",\"vendor\":\"Demo Studio\",\"lines\":[500,500],\"total\":1200}},{\"json\":{\"number\":\"DEMO-03\",\"vendor\":\"\",\"lines\":[700],\"total\":700}}];"
      },
      "id": "document-check-0",
      "name": "Реквизиты",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        220,
        180
      ],
      "notes": "Структурированные реквизиты трёх вымышленных счетов."
    },
    {
      "parameters": {
        "mode": "runOnceForAllItems",
        "jsCode": "return $input.all().map(({json:x})=>({json:{...x,issues:[...(!x.number?['Нет номера']:[]),...(!x.vendor?['Нет поставщика']:[])]}}));"
      },
      "id": "document-check-1",
      "name": "Поля",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        440,
        180
      ],
      "notes": "Ищет пропуски в номере и наименовании поставщика."
    },
    {
      "parameters": {
        "mode": "runOnceForAllItems",
        "jsCode": "return $input.all().map(({json:x})=>({json:{...x,issues:[...x.issues,...(Math.abs(x.lines.reduce((a,b)=>a+b,0)-x.total)>0.01?['Сумма не совпадает']:[])]}}));"
      },
      "id": "document-check-2",
      "name": "Арифметика",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        660,
        180
      ],
      "notes": "Сравнивает сумму строк с итоговой суммой."
    },
    {
      "parameters": {
        "mode": "runOnceForAllItems",
        "jsCode": "return $input.all().map(({json:x})=>({json:{...x,status:x.issues.length?'review':'checked'}}));"
      },
      "id": "document-check-3",
      "name": "Статус",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        880,
        180
      ],
      "notes": "Назначает статус по найденным замечаниям."
    },
    {
      "parameters": {
        "mode": "runOnceForAllItems",
        "jsCode": "return $input.all().map(({json:x})=>({json:{document:x.number||'Без номера',status:x.status,issues:x.issues}}));"
      },
      "id": "document-check-4",
      "name": "Замечания",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1100,
        70
      ],
      "notes": "Формирует понятные замечания по каждому счёту."
    },
    {
      "parameters": {
        "mode": "runOnceForAllItems",
        "jsCode": "return [{json:{documents:$input.all().length,review:$input.all().filter(x=>x.json.status==='review').length}}];"
      },
      "id": "document-check-5",
      "name": "Сводка проверки",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1100,
        290
      ],
      "notes": "Считает документы с ошибками."
    }
  ],
  "connections": {
    "Запуск вручную": {
      "main": [
        [
          {
            "node": "Реквизиты",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Реквизиты": {
      "main": [
        [
          {
            "node": "Поля",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Поля": {
      "main": [
        [
          {
            "node": "Арифметика",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Арифметика": {
      "main": [
        [
          {
            "node": "Статус",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Статус": {
      "main": [
        [
          {
            "node": "Замечания",
            "type": "main",
            "index": 0
          },
          {
            "node": "Сводка проверки",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "tags": []
}
