واجهت مشكلة في تمرين سير العمل في القسم 2 من N8N101 عند إرسال ملف CSV

مرحباً بالجميع. أنا بحاجة إلى مساعدة بشأن قسم N8N101 الثاني على تمرين سير العمل - الخطوة 4: إنشاء وإنهاء التقرير الخاص بك. أود أن أعرف إذا كان بإمكان أي شخص اجتياز هذه الخطوة وما الذي يمكنني فعله أيضاً لإصلاحها.

أواجه هذه المشكلة عند خطوة إرسال ملف CSV إلى https://learn.app.n8n.cloud/webhook/course/n8n101/send-report، وهي تستجيب باستمرار بشكل فارغ.

ما الذي حاولت فعله لإصلاح المشكلة؟

  • وصلت إلى نقطتي تفتيش سابقتين، لذا سير العمل على ما يرام في تلك المراحل.
  • راجعت مرة أخرى للتأكد من أنني كنت أتابع التعليمات الدقيقة لهذه الخطوة.
  • فيما يلي سير العمل الخاص بي حتى الآن وملف CSV، الذي قمت بحذف بعض المعلومات منه لتجنب تسريب الإجابة.

average_order_total;region;order_totals;order_count;report_generated;assessment_id
999.5;region1;999;9;2026-06-19 11:49:24;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
999.5;region2;999;9;2026-06-19 11:49:24;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
999;region3;999;9;2026-06-19 11:49:24;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
999.5;region4;999;9;2026-06-19 11:49:24;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

شيء واحد لاحظته هو أن ملف CSV يحتوي على عمود assessment_id، لذا أفترض أنه قد تكون هناك مشكلة في الفحص قد ترتبط بـ منشور سابق، حيث كانت لـ assessment_id مشاكل عند الإرسال عبر الرأس.

مرحبا @kristinker

شكراً على الإبلاغ عن هذا، وهذا خطأ إملائي آخر من طرفي في سير العمل الخاص بنا. تم الإصلاح والاختبار.

تحياتي،

مرحباً… هل يمكنني أن أسأل كيف أصلحها لأنني لا أزال أتلقى رسالة فارغة بعد إرسال التقرير. شكراً

مرحباً asdrt،

كانت المشكلة في n8n academy التي تتحقق من assessment_it في ملف CSV الذي أرسله الطالب إلى خادمه. لقد قمت بتشغيله مرة أخرى، وما زال يعمل، لذلك قد تكون المشكلة في إعدادك الحالي.

مع أخذ ذلك في الاعتبار. يمكنك التحقق من خطواتك السابقة قبل إرسال ملف CSV لترى أين يحدث الخطأ. يمكنك استخدام منشوري الأول كقائمة تحقق:

  • هل نجحت في اجتياز نقطتي التفتيش السابقتين؟
  • هل يبدو ملف CSV الخاص بك مشابهاً للملف الذي أرفقته؟ البيانات الفعلية محذوفة، لكن أسماء الأعمدة والعدد الإجمالي للصفوف صحيحان.ا
  • هل اتبعت جميع التعليمات من تلك الخطوة (اسم العقدة، نوع البيانات، اسم الحقل، وما إلى ذلك)

حظاً موفقاً

لقد اجتزت بالفعل نقاط التفتيش السابقة واتبعت الخطوات. سأرسل إليك إعدادي، هل يمكنك التحقق منه؟ مشكلتي الوحيدة في الخطوة 4. شكراً لمساعدتك.

بالتأكيد، يمكنك إرسال سير العمل إليّ، لكن قبل ذلك، يرجى تجربة هذه الخطوات. أرى أن سير العمل لديك يحتوي على بعض النقاط التي تستحق الفحص:

  • العقدة “SetReportMetaData” تحتوي على assessment_id مع غلاف بين قوسين مربعين [xxxx],، يرجى إزالة القوسين المربعين. أيضاً، أرى أن هذا لا يُرجع الحقول من العقدة السابقة، لذا يرجى التمرير لأسفل في قائمة الإعدادات وتحديد Input Fields to Include إلى All

  • العقدة “Convert To File”، يرجى فتح ملف CSV هذا والتحقق من أنه يحتوي على 6 أعمدة كما ذكرت سابقاً. أشك في أنه يحتوي على عمودين فقط.

مرحباً @jamiemadden_n8n

فيما يتعلق بفحص خادم الخطوة CSV، أرى السلوك الحالي عندما يرسل الطلاب ملف CSV غير صحيح (يمكن للطلاب إرسال ملف CSV غير صحيح يحتوي على عمودين فقط (معرّف_التقييم و تاريخ_الإنشاء) أو فشل فحص معرّف_التقييم في حالتي الأصلية)، و الخادم يستجيب بـ 200 مع جسم فارغ، مما يجعل الطلاب يتساءلون: “أرى العقدة باللون الأخضر، هل نجحت؟ أم يُفترض بي إصلاح شيء ما؟”. لذا أقترح تحديثاً صغيراً على هذا لجعل الملاحظات أكثر وضوحاً:

  • إذا أرسل الطالب ملف CSV غير صحيح ولم يجتز الفحص، يجب أن يستجيب الخادم بـ 4xx ويشير إلى أن ملف CSV غير صحيح حتى يعرف الطالب أين يجب إصلاحه.

  • أو إذا احتفظنا برد 200 فارغ لسبب ما، يجب على الأقل أن نذكره في نقطة التحقق أو قسم استكشاف الأخطاء حتى يدرك الطالب أن هناك خطأ ما ولم يجتز بعد ويكون لديه طريقة لاستكشاف الأخطاء بمفرده.

Buenas, tengo el mismo problema, estuve leyendo el post, y por lo que interpreto, es un problema del servidor verdad? Porque en el último paso, no me asigna el código de verificación y dentro del curso, me queda como que tengo pendiente esta tarea, si me pueden orientar por favor, tal vez hay algo que no estoy viendo. Revise dos veces todas las instrucciones, no encontre ninguna diferencia, pero aún así, no logro obtener el último código de verificación. Los anteriores si los pude obtener, muchas gracias. Adjunto el JSON de mi workflow.

{

“name”: “Section 2 - Sales Data Pipeline”,

“nodes”: [

{

  "parameters": {},

  "type": "n8n-nodes-base.manualTrigger",

  "typeVersion": 1,

  "position": \[

    0,

    -272

  \],

  "id": "ccdc0a3f-c825-4875-9de9-7d7c2014be2b",

  "name": "TriggerManual"

},

{

  "parameters": {

    "url": "https://learn.app.n8n.cloud/webhook/course/n8n101/sales-data",

    "authentication": "genericCredentialType",

    "genericAuthType": "httpHeaderAuth",

    "sendHeaders": true,

    "headerParameters": {

      "parameters": \[

        {

          "name": "X-Assessment-ID",

          "value": "a2522471826abeaf5b090ee65e56e18c"

        }

      \]

    },

    "options": {}

  },

  "type": "n8n-nodes-base.httpRequest",

  "typeVersion": 4.4,

  "position": \[

    224,

    -272

  \],

  "id": "4ee58409-12fc-4709-ace7-c293e03fa8bf",

  "name": "GetSalesData",

  "credentials": {

    "httpHeaderAuth": {

      "id": "QQcXYH9c9Bjq284o",

      "name": "n8n Academy API Key"

    }

  }

},

{

  "parameters": {

    "fieldToSplitOut": "orders",

    "options": {}

  },

  "type": "n8n-nodes-base.splitOut",

  "typeVersion": 1,

  "position": \[

    448,

    -272

  \],

  "id": "c9297b13-caf6-4bc8-9c42-b62bca11d6c4",

  "name": "SplitOrders"

},

{

  "parameters": {

    "assignments": {

      "assignments": \[

        {

          "id": "0c7b5fc4-920a-4363-9468-c9701ed0b3bf",

          "name": "order_id",

          "value": "={{ $json.order_id }}",

          "type": "string"

        },

        {

          "id": "036a73b7-7896-438a-9ecc-440dc6d571d3",

          "name": "customer_name",

          "value": "={{ $json.customer_name }}",

          "type": "string"

        },

        {

          "id": "9994322b-80ea-436a-941f-73d4b394b692",

          "name": "region",

          "value": "={{ $json.region }}",

          "type": "string"

        },

        {

          "id": "e3eebd43-39e2-4b91-b760-66b7e18f1863",

          "name": "status",

          "value": "={{ $json.status }}",

          "type": "string"

        },

        {

          "id": "cde0d5f0-ff61-4f63-8209-735324c8e3e9",

          "name": "order_total",

          "value": "={{ $json.quantity \* $json.unit_price }}",

          "type": "number"

        }

      \]

    },

    "options": {}

  },

  "type": "n8n-nodes-base.set",

  "typeVersion": 3.4,

  "position": \[

    672,

    -272

  \],

  "id": "a436a191-3500-4f9f-9b3c-de2834021079",

  "name": "SetOrderTotals"

},

{

  "parameters": {

    "aggregate": "aggregateAllItemData",

    "destinationFieldName": "orders",

    "options": {}

  },

  "type": "n8n-nodes-base.aggregate",

  "typeVersion": 1,

  "position": \[

    896,

    -464

  \],

  "id": "4c0c71d2-2f34-49bc-8436-7a0d99ee90b9",

  "name": "AggregateOrders"

},

{

  "parameters": {

    "method": "POST",

    "url": "https://learn.app.n8n.cloud/webhook/course/n8n101/process-orders",

    "authentication": "genericCredentialType",

    "genericAuthType": "httpHeaderAuth",

    "sendHeaders": true,

    "headerParameters": {

      "parameters": \[

        {

          "name": "X-Assessment-ID",

          "value": "a2522471826abeaf5b090ee65e56e18c"

        }

      \]

    },

    "sendBody": true,

    "bodyParameters": {

      "parameters": \[

        {

          "name": "orders",

          "value": "={{ $json.orders }}"

        }

      \]

    },

    "options": {}

  },

  "type": "n8n-nodes-base.httpRequest",

  "typeVersion": 4.4,

  "position": \[

    1120,

    -464

  \],

  "id": "b75a2fd2-94ed-4b73-ae50-bc4b716b67d9",

  "name": "SendOrders",

  "credentials": {

    "httpHeaderAuth": {

      "id": "QQcXYH9c9Bjq284o",

      "name": "n8n Academy API Key"

    }

  }

},

{

  "parameters": {

    "conditions": {

      "options": {

        "caseSensitive": true,

        "leftValue": "",

        "typeValidation": "strict",

        "version": 3

      },

      "conditions": \[

        {

          "id": "84d523d2-884a-44f6-bc84-1c7a9788ced5",

          "leftValue": "={{ $json.status }}",

          "rightValue": "delivered",

          "operator": {

            "type": "string",

            "operation": "equals"

          }

        }

      \],

      "combinator": "and"

    },

    "options": {}

  },

  "type": "n8n-nodes-base.if",

  "typeVersion": 2.3,

  "position": \[

    896,

    -176

  \],

  "id": "b74fb43d-2d94-4af1-b3a5-fc17c2f8678a",

  "name": "FilterDelivered"

},

{

  "parameters": {

    "fieldsToSummarize": {

      "values": \[

        {

          "aggregation": "sum",

          "field": "order_total"

        },

        {

          "field": "order_total"

        },

        {

          "aggregation": "average",

          "field": "order_total"

        }

      \]

    },

    "fieldsToSplitBy": "region",

    "options": {}

  },

  "type": "n8n-nodes-base.summarize",

  "typeVersion": 1.1,

  "position": \[

    1120,

    -272

  \],

  "id": "b79acb85-1eee-4b10-ae31-634770ac3503",

  "name": "SummarizeByRegion"

},

{

  "parameters": {

    "keys": {

      "key": \[

        {

          "currentKey": "sum_order_total",

          "newKey": "order_totals"

        },

        {

          "currentKey": "count_order_total",

          "newKey": "order_count"

        },

        {

          "currentKey": "average_order_total",

          "newKey": "avarege_order_total"

        }

      \]

    },

    "additionalOptions": {}

  },

  "type": "n8n-nodes-base.renameKeys",

  "typeVersion": 1,

  "position": \[

    1344,

    -272

  \],

  "id": "0a89ddb6-6598-45a7-82e7-8535f2e4749c",

  "name": "UpdateFieldNames"

},

{

  "parameters": {

    "aggregate": "aggregateAllItemData",

    "destinationFieldName": "regions",

    "options": {}

  },

  "type": "n8n-nodes-base.aggregate",

  "typeVersion": 1,

  "position": \[

    1568,

    -368

  \],

  "id": "e4d2ff81-11e5-4994-991b-008b91d87062",

  "name": "AggregateRegions"

},

{

  "parameters": {

    "method": "POST",

    "url": "https://learn.app.n8n.cloud/webhook/course/n8n101/validate-analysis",

    "authentication": "genericCredentialType",

    "genericAuthType": "httpHeaderAuth",

    "sendHeaders": true,

    "headerParameters": {

      "parameters": \[

        {

          "name": "X-Assessment-ID",

          "value": "a2522471826abeaf5b090ee65e56e18c"

        }

      \]

    },

    "sendBody": true,

    "bodyParameters": {

      "parameters": \[

        {

          "name": "regions",

          "value": "={{ $json.regions }}"

        }

      \]

    },

    "options": {}

  },

  "type": "n8n-nodes-base.httpRequest",

  "typeVersion": 4.4,

  "position": \[

    1792,

    -368

  \],

  "id": "504d6d3e-3914-408d-a0bf-b30b328c298f",

  "name": "SendAnalysis",

  "credentials": {

    "httpHeaderAuth": {

      "id": "QQcXYH9c9Bjq284o",

      "name": "n8n Academy API Key"

    }

  }

},

{

  "parameters": {

    "assignments": {

      "assignments": \[

        {

          "id": "3471e8c4-6494-4d87-8c27-fcd8f626a2f7",

          "name": "report_generated",

          "value": "={{ $now.format('yyyy-MM-dd HH:mm:ss') }}",

          "type": "string"

        },

        {

          "id": "797e341f-6d34-4e56-b428-1644a78d3915",

          "name": "assessment_id",

          "value": "a2522471826abeaf5b090ee65e56e18c",

          "type": "string"

        }

      \]

    },

    "includeOtherFields": true,

    "options": {}

  },

  "type": "n8n-nodes-base.set",

  "typeVersion": 3.4,

  "position": \[

    1568,

    -176

  \],

  "id": "a1638fbf-f6fd-403a-8ce9-d73f965985b7",

  "name": "SetReportMetadata"

},

{

  "parameters": {

    "binaryPropertyName": "report",

    "options": {}

  },

  "type": "n8n-nodes-base.convertToFile",

  "typeVersion": 1.1,

  "position": \[

    1792,

    -176

  \],

  "id": "28660eaa-4cb1-4952-ac18-2c4bb28fcbe3",

  "name": "ConvertToCSV"

},

{

  "parameters": {

    "method": "POST",

    "url": "https://learn.app.n8n.cloud/webhook/course/n8n101/send-report",

    "authentication": "genericCredentialType",

    "genericAuthType": "httpHeaderAuth",

    "sendHeaders": true,

    "headerParameters": {

      "parameters": \[

        {

          "name": "X-Assessment-ID",

          "value": "a2522471826abeaf5b090ee65e56e18c"

        }

      \]

    },

    "sendBody": true,

    "contentType": "binaryData",

    "inputDataFieldName": "report",

    "options": {}

  },

  "type": "n8n-nodes-base.httpRequest",

  "typeVersion": 4.4,

  "position": \[

    2016,

    -176

  \],

  "id": "194d9159-bc73-453b-8e18-8c9b0278d31e",

  "name": "SendReport",

  "credentials": {

    "httpHeaderAuth": {

      "id": "QQcXYH9c9Bjq284o",

      "name": "n8n Academy API Key"

    }

  }

},

{

  "parameters": {},

  "type": "n8n-nodes-base.noOp",

  "typeVersion": 1,

  "position": \[

    1120,

    -80

  \],

  "id": "af17a61f-e8d1-4290-9724-7d113bd9124c",

  "name": "IgnoreNonDelivered"

}

],

“pinData”: {},

“connections”: {

"TriggerManual": {

  "main": \[

    \[

      {

        "node": "GetSalesData",

        "type": "main",

        "index": 0

      }

    \]

  \]

},

"GetSalesData": {

  "main": \[

    \[

      {

        "node": "SplitOrders",

        "type": "main",

        "index": 0

      }

    \]

  \]

},

"SplitOrders": {

  "main": \[

    \[

      {

        "node": "SetOrderTotals",

        "type": "main",

        "index": 0

      }

    \]

  \]

},

"SetOrderTotals": {

  "main": \[

    \[

      {

        "node": "FilterDelivered",

        "type": "main",

        "index": 0

      },

      {

        "node": "AggregateOrders",

        "type": "main",

        "index": 0

      }

    \]

  \]

},

"AggregateOrders": {

  "main": \[

    \[

      {

        "node": "SendOrders",

        "type": "main",

        "index": 0

      }

    \]

  \]

},

"FilterDelivered": {

  "main": \[

    \[

      {

        "node": "SummarizeByRegion",

        "type": "main",

        "index": 0

      }

    \],

    \[

      {

        "node": "IgnoreNonDelivered",

        "type": "main",

        "index": 0

      }

    \]

  \]

},

"SummarizeByRegion": {

  "main": \[

    \[

      {

        "node": "UpdateFieldNames",

        "type": "main",

        "index": 0

      }

    \]

  \]

},

"UpdateFieldNames": {

  "main": \[

    \[

      {

        "node": "AggregateRegions",

        "type": "main",

        "index": 0

      },

      {

        "node": "SetReportMetadata",

        "type": "main",

        "index": 0

      }

    \]

  \]

},

"AggregateRegions": {

  "main": \[

    \[

      {

        "node": "SendAnalysis",

        "type": "main",

        "index": 0

      }

    \]

  \]

},

"SetReportMetadata": {

  "main": \[

    \[

      {

        "node": "ConvertToCSV",

        "type": "main",

        "index": 0

      }

    \]

  \]

},

"ConvertToCSV": {

  "main": \[

    \[

      {

        "node": "SendReport",

        "type": "main",

        "index": 0

      }

    \]

  \]

}

},

“active”: false,

“settings”: {

"executionOrder": "v1",

"binaryMode": "separate"

},

“versionId”: “13d25ae4-5903-4e5d-96fd-c31460bd9e79”,

“meta”: {

"instanceId": "54f686cd8025e96d283c85699adf4945c234670c29097dcbc346f6794485ee6a"

},

“nodeGroups”: [],

“id”: “zHhggcePiczrgYaw”,

“tags”: [

{

  "name": "n8n101",

  "id": "ANRJX0kNx03bHS7k",

  "updatedAt": "2026-06-23T03:07:48.986Z",

  "createdAt": "2026-06-23T03:07:48.986Z"

}

]

}

مرحباً @EzeMorales

في المستقبل، يرجى إنشاء مواضيعك الخاصة ومشاركة سير العمل الكامل لديك حتى نتمكن من مساعدتك.

في الختام،

أه، حسنا، آسف، لم أكن على علم، استغللت أنه نفس الموضوع، آسف. الآن سأفتح موضوعا جديدا، شكرا جزيلا وآسف.