تحلیل خودکار صورت‌حساب بانکی و گزارش‌دهی در اسلک

تحلیل خودکار صورت‌حساب بانکی و گزارش‌دهی در اسلک

6 دقیقه مطالعه · منتشر شده ۱۴۰۵/۴/۲۹

دانلود workflow

فایل JSON آماده import در n8n — credentialها باید در n8n شما تنظیم شوند.

  1. فایل JSON را دانلود کنید.
  2. در n8n: Workflows → Import from File.
  3. Credentialهای هر node را متصل کنید.
  4. workflow را فعال کنید.

شناسه workflow: 13087 · منبع: کاتالوگ Axeto

تحلیل صورت‌حساب‌های بانکی و دسته‌بندی هزینه‌ها با گزارش‌های ماهانه اسلک

این Workflow فرآیند تحلیل صورت‌حساب‌های بانکی، دسته‌بندی هزینه‌ها و تولید گزارش‌های ماهانه برای اسلک را خودکار می‌کند. این ابزار برای پیگیری امور مالی شخصی، حسابداری کسب‌وکارهای کوچک و تحلیل بودجه طراحی شده است.

ویژگی‌های کلیدی:

  • نظارت خودکار ایمیل: شناسایی ایمیل‌های صورت‌حساب بانکی دریافتی.
  • استخراج صورت‌حساب PDF: استخراج داده‌های ساختاریافته از صورت‌حساب‌های PDF.
  • دسته‌بندی مبتنی بر هوش مصنوعی: استفاده از هوش مصنوعی برای دسته‌بندی تراکنش‌ها بر اساس اطلاعات تاجر.
  • تحلیل هزینه‌ها: محاسبه درآمد، هزینه‌ها، نرخ پس‌انداز و تفکیک دسته‌بندی‌ها.
  • ماندگاری داده‌ها: ثبت خلاصه‌های ماهانه در یک Google Sheet.
  • گزارش‌دهی اسلک: ارسال گزارش‌های ماهانه قالب‌بندی شده به یک کانال اسلک مشخص.

دسترسی به کاتالوگ Axeto.ai n8n: https://axeto.ai/n8n

---

تشریح Workflow

این Workflow از پنج بلوک اصلی تشکیل شده است:

1. نظارت و بازیابی ایمیل: دریافت ایمیل‌های صورت‌حساب بانکی و پیوست‌های آن‌ها.

2. استخراج صورت‌حساب (PDF → داده ساختاریافته): استخراج جزئیات تراکنش و دسته‌بندی‌ها از صورت‌حساب‌های PDF با استفاده از PDF Vector.

3. تحلیل و غنی‌سازی هزینه‌ها: محاسبه معیارهای مالی و قالب‌بندی داده‌ها برای گزارش‌دهی.

4. ماندگاری (Google Sheets): افزودن خلاصه‌ای از تحلیل صورت‌حساب به یک Google Sheet.

5. گزارش‌دهی (اسلک): ارسال یک گزارش ماهانه قالب‌بندی شده به یک کانال اسلک.

---

۱. نظارت و بازیابی ایمیل

این بلوک مسئول شناسایی و بازیابی ایمیل‌های جدید صورت‌حساب بانکی از جیمیل است.

#### Node ها:

  • Gmail Trigger (n8n-nodes-base.gmailTrigger)

* هدف: جیمیل را برای پیام‌های ورودی جدید بررسی می‌کند.

* پیکربندی: تنظیم شده برای بررسی ایمیل‌های جدید هر دقیقه. برای عدم شامل شدن اسپم یا سطل زباله پیکربندی شده است.

* خروجی: متادیتای پیام‌های جدید جیمیل، از جمله شناسه پیام را منتشر می‌کند.

  • Get a message (n8n-nodes-base.gmail)

* هدف: محتوای کامل یک پیام جیمیل، از جمله پیوست‌ها را بر اساس شناسه پیام از Trigger بازیابی می‌کند.

* پیکربندی:

* Operation: get message

* Message ID: از شناسه Gmail Trigger استفاده می‌کند (={{ $json.id }}).

* Attachments: برای دانلود پیوست‌ها روی true تنظیم شده است.

* خروجی: محتوای کامل پیام و پیوست‌های دانلود شده. Workflow انتظار دارد صورت‌حساب بانکی PDF در ویژگی باینری attachment_0 باشد.

---

۲. استخراج صورت‌حساب (PDF → داده ساختاریافته)

این بلوک از PDF Vector برای استخراج داده‌های ساختاریافته از PDF صورت‌حساب بانکی دانلود شده استفاده می‌کند.

#### Node ها:

  • PDF Vector - Extract Statement (n8n-nodes-pdfvector.pdfVector)

* هدف: داده‌های تراکنش، اطلاعات حساب و دسته‌بندی تراکنش‌ها را از صورت‌حساب PDF استخراج می‌کند.

* پیکربندی:

* Resource: document

* Operation: extract

* Input type: file

* Binary property name: attachment_0 (از Node جیمیل قبلی).

* Prompt: هوش مصنوعی را برای استخراج فیلدهای خاص تراکنش (تاریخ، توضیحات، مبلغ، موجودی) و دسته‌بندی هر تراکنش با استفاده از قواعد کلمات کلیدی تاجر تعریف شده، راهنمایی می‌کند.

* Schema: ساختار JSON دقیقی را برای خروجی اعمال می‌کند، شامل accountNumber, statementPeriod, closingBalance و آرایه‌ای از transactions (هر کدام با date, description, amount, category, balance).

* خروجی: داده‌های JSON ساختاریافته شامل جزئیات صورت‌حساب استخراج شده، از جمله تراکنش‌های دسته‌بندی شده، که در $json.data در دسترس است.

  • Sticky Note1 (Spending Categories) (n8n-nodes-base.stickyNote)

* هدف: به عنوان یک یادداشت مستندات در داخل Workflow، لیست دسته‌بندی‌های هزینه‌ی مورد نظر را نمایش می‌دهد.

* محتوا: "📊 Spending Categories: Income, Utilities, Groceries, Dining, Shopping, Transport, Subscriptions, Healthcare, Entertainment, Transfers"

* نکته: دسته‌بندی‌های واقعی که توسط Schema PDF Vector اعمال می‌شوند ممکن است کمی متفاوت باشند (مثلاً شامل "Travel" و "Other").

---

۳. تحلیل و غنی‌سازی هزینه‌ها

این بلوک داده‌های استخراج شده را برای محاسبه معیارهای کلیدی مالی و آماده‌سازی خلاصه پردازش می‌کند.

#### Node:

  • Analyze Spending (n8n-nodes-base.code)

* هدف: معیارهای مالی تجمعی را از داده‌های صورت‌حساب استخراج شده محاسبه کرده و آن‌ها را به رشته‌های قابل خواندن توسط انسان قالب‌بندی می‌کند.

* پیکربندی:

* داده‌های استخراج شده از Node PDF Vector - Extract Statement را می‌خواند (const statement = $input.first().json.data;).

* محاسبات:

* totalSpending: مجموع مقادیر مطلق مبالغ تراکنش منفی.

* totalIncome: مجموع مبالغ تراکنش مثبت.

* categoryTotals: مجموع هزینه‌ها بر اساس دسته‌بندی.

* categoryBreakdown: یک رشته قالب‌بندی شده که هزینه‌ها را بر اساس دسته‌بندی، مرتب شده بر اساس مبلغ، با درصدها نشان می‌دهد.

* largeTransactions: لیستی از تراکنش‌ها که مبلغ مطلق آن‌ها بیش از ۵۰۰ است.

savingsRate: محاسبه شده به صورت ((income - spending)/income)100، قالب‌بندی شده تا یک رقم اعشار.

* transactionCount: تعداد کل تراکنش‌ها.

* processedAt: زمان فعلی در فرمت ISO.

* خروجی: یک شیء JSON غنی شده شامل داده‌های صورت‌حساب اصلی به علاوه تمام معیارهای محاسبه شده و رشته‌های قالب‌بندی شده.

---

۴. ماندگاری (Google Sheets)

این بلوک خلاصه داده‌های ماهانه را برای نگهداری سوابق تاریخی در یک Google Sheet ثبت می‌کند.

#### Node:

  • Log Monthly Summary (n8n-nodes-base.googleSheets)

* هدف: یک ردیف جدید را در یک Google Sheet با معیارهای کلیدی مالی از تحلیل صورت‌حساب اضافه می‌کند.

* پیکربندی:

* Operation: append

* Document: یک Google Sheet به نام "Test-workflow" (شناسه: 18Jpu_lX1i9zkHo_TpS9lGYfvtRY7sHFo1qRbttj58YI).

* Sheet tab: "Trang tính1" (gid=0).

* نگاشت ستون: داده‌ها را به صراحت از خروجی Node Analyze Spending به ستون‌های خاص نگاشت می‌کند:

* Period Start: ={{ $json.statementPeriod.startDate }}

* Period End: ={{ $json.statementPeriod.endDate }}

* Opening Balance: ={{ $json.openingBalance }}

* Closing Balance: ={{ $json.closingBalance }}

* Total Income: ={{ $json.totalIncome }}

* Total Spending: ={{ $json.totalSpending }}

* Savings Rate %: ={{ $json.savingsRate }}

* Transaction Count: ={{ $json.transactionCount }}

* Processed Date: ={{ $json.processedAt.split('T')[0] }} (فقط بخش تاریخ را استخراج می‌کند).

* خروجی: داده‌ها به عنوان یک ردیف جدید در Google Sheet مشخص شده اضافه می‌شوند.

---

۵. گزارش‌دهی (اسلک)

این بلوک نهایی یک گزارش مالی ماهانه قالب‌بندی شده را به یک کانال اسلک ارسال می‌کند.

#### Node:

  • Send Analysis Report (n8n-nodes-base.slack)

* هدف: یک خلاصه مالی ماهانه دقیق را به یک کانال اسلک ارسال می‌کند.

* پیکربندی:

* Action: send message

* Target: channel

* Channel ID: C0A0JMC9VED (نام all-workflow).

* Message Text: از Markdown اسلک و عبارات n8n برای گنجاندن موارد زیر استفاده می‌کند:

* تاریخ شروع و پایان دوره صورت‌حساب.

* کل درآمد و هزینه (قالب‌بندی شده تا دو رقم اعشار).

* تفکیک هزینه‌ها بر اساس دسته‌بندی.

* لیستی از تراکنش‌های بزرگ.

* نرخ پس‌انداز.

* ورودی: داده‌ها را از Node Log Monthly Summary دریافت می‌کند، اما محتوای پیام مستقیماً به خروجی Node Analyze Spending با استفاده از نام آن ارجاع می‌دهد ($('Analyze Spending').item.json...).

* خروجی: پیامی که به کانال اسلک پیکربندی شده ارسال می‌شود.

Nodeهای استفاده‌شده

سوالات متداول

این Workflow چگونه صورت‌حساب‌های بانکی را دریافت می‌کند؟

این Workflow از طریق Gmail Trigger ایمیل‌های حاوی صورت‌حساب بانکی را شناسایی و پیوست‌های آن‌ها را دانلود می‌کند.

چگونه داده‌های صورت‌حساب PDF استخراج می‌شوند؟

از نود PDF Vector برای استخراج داده‌های ساختاریافته مانند تاریخ، توضیحات، مبلغ و موجودی از صورت‌حساب‌های PDF استفاده می‌شود.

دسته‌بندی هزینه‌ها چگونه انجام می‌شود؟

هوش مصنوعی با استفاده از اطلاعات تاجر و قواعد تعریف شده، تراکنش‌ها را به دسته‌های مختلف مانند درآمد، خوراک، حمل و نقل و سرگرمی دسته‌بندی می‌کند.

گزارش نهایی به کجا ارسال می‌شود؟

پس از تحلیل و جمع‌بندی داده‌ها، یک گزارش ماهانه قالب‌بندی شده به کانال اسلک مشخص شده ارسال می‌گردد.

workflowهای مرتبط

این workflow در کاتالوگ Axeto.ai بایگانی شده است. لایسنس اصلی متعلق به سازنده workflow است.