Repository navigation
Releases: Ali-Marandi/FinAnalyzer
Release list
FinAnalyzer Enterprise v2.7.0
FinAnalyzer Enterprise v2.7.0 — Controlled Bank Reconciliation
نوع انتشار: قابلیت تجاری سازمانی و کنترل تکمیلی پیش از بستن دوره مالی.
قابلیت جدید: Bank Reconciliation Workspace
v2.7.0 یک فضای تطبیق بانکی به برنامه desktop اضافه میکند. postingهای جدید یا اصلاحشده در bank feed دیگر بهعنوان طبقهبندیشده تلقی نمیشوند. هر PlaidTransactionMapping وضعیت تطبیق مستقل دارد و پس از import یا provider revision به needs_review بازمیگردد.
| وضعیت | نتیجه |
|---|---|
needs_review |
نیازمند طبقهبندی انسانی پیش از close |
exception |
نیازمند رفع توسط reviewer مستقل |
matched |
طبقهبندی contra تأیید شده است |
removed |
تراکنش از provider حذف شده و دیگر در صف review نیست |
کاربر مجاز میتواند یک حساب contra همشرکت و فعال انتخاب کند. سیستم فقط خط غیر بانکی همان journal entry متوازن را تغییر میدهد؛ مبلغ، خط بانک و تعداد lineها تغییر نمیکنند. انتخاب حساب بانک بهعنوان contra، تراکنش pending، journal entry غیرposted، mapping حذفشده و هر دوره قفلشده block میشوند.
کنترلهای امنیتی
permissionهای جدید bank.reconcile.match و bank.reconcile.exception.resolve به RBAC افزوده شدند. هر دو حساس هستند و MFA تازه میخواهند. کاربر ثبتکننده exception نمیتواند همان exception را resolve کند؛ این انکار بهصورت bank.reconciliation.sod_denied در زنجیره HMAC ثبت میشود. service layer، نه UI، مجوز و scope شرکت را اعمال میکند.
PeriodCloseService اکنون علاوه بر تراکنش بانکی pending، هر mapping با وضعیت needs_review یا exception را بهعنوان blocker با کد unreconciled_bank_transactions گزارش میکند. این بررسی هم هنگام request و هم قبل از approval/execution انجام میشود.
تجربه دسکتاپ
یک صفحه جدید با نام Bank Reconciliation به navigation اضافه شده است. صفحه summary وضعیتها، صف باز بدون raw provider payload، انتخاب حساب contra، ثبت note و عملیات match/flag exception/resolve exception را فراهم میکند. عملیات همواره پس از Enterprise SSO انجام میشوند و در صورت شکست، UI ادعای تغییر جزئی موفق نمیکند.
migration و سازگاری
migration افزایشی SQLite v2.7 ستونهای reconciliation status، note، reviewer و timestamp را به plaid_transaction_mappings اضافه میکند. mappingهای موجود بهصورت محافظهکارانه با NEEDS_REVIEW مقداردهی میشوند تا close بدون reviewِ تاریخچه feed انجام نشود. هیچ داده یا entry موجود حذف نمیشود.
آزمون و اعتبارسنجی
تست جدید test_bank_reconciliation_v27.py پنج سناریو را پوشش میدهد: صف بررسی بدون raw payload، match متوازن، SoD برای exception، منع reclassification در دوره بسته و blocker readiness برای کار بانکی بررسینشده. اجرای نهایی شامل کل test suite، کنترل نحوی، dependency gate Windows و بررسی diff خواهد بود.
مسیر تجاری بعدی
اولویت بعدی پیشنهادی Statement Reconciliation است: import statement، تطبیق شناسه و مبلغ با tolerance کنترلشده، split matching، certification balance و exception aging. سپس anchor کردن manifestهای evidence به SIEM یا WORM مستقل، سطح اطمینان audit را از workstation محلی فراتر میبرد.
FinAnalyzer Enterprise v2.6.1
FinAnalyzer Enterprise v2.6.1 — Verified Compliance Evidence
نوع انتشار: قابلیت تجاری و سختسازی انتشار.
افزودههای اصلی
نسخه v2.6.1 قابلیت Compliance Evidence Pack را اضافه میکند. این سرویس پس از MFA تازه، permission صریح compliance.evidence.export و اعتبارسنجی موفق کامل زنجیره HMAC، یک پوشه JSON company-scoped تولید میکند. محتوا شامل رخدادهای audit، سالهای مالی، تاریخچه Period Close و manifest.json است. manifest، SHA-256 هر فایل و checkpoint زنجیره audit را نگه میدارد تا دریافتکننده مستقل بتواند integrity بسته را بررسی کند.
Export از یک chain نامعتبر عبور نمیکند. در این حالت، export block میشود، یک رخداد audit با outcome denied ثبت میگردد و هیچ پوشه partial قابل استفادهای باقی نمیماند. موفقیت export نیز بهعنوان رخداد compliance ثبت میشود. فایل محلی evidence فقط یک staging point است و باید به مقصد تأییدشده SIEM، DMS یا WORM سازمان منتقل شود.
| کنترل | رفتار v2.6.1 |
|---|---|
| Authentication | AuthenticatedPrincipal معتبر از Enterprise SSO الزامی است |
| Authorization | permission حساس compliance.evidence.export در scope همان شرکت بررسی میشود |
| MFA | حداکثر سن MFA برای export برابر ۱۵ دقیقه است |
| Audit integrity | AuditLogger.verify_chain() پیش از نوشتن فایلها اجرا میشود |
| Confidentiality | جزئیات audit که قبلاً redact شدهاند export میشوند؛ secret جدید ذخیره نمیشود |
| File integrity | hash هر JSON و hash canonical manifest در evidence ثبت میشود |
رابط دسکتاپ
یک صفحه جدید با نام Compliance Evidence به برنامه Windows اضافه شده است. صفحه، session فعال را نمایش میدهد، Company ID و output directory میگیرد و manifest، SHA-256 و شمارش رخدادها را پس از export گزارش میکند. صفحه تنها accessibility UI است؛ authorization واقعی همچنان در service layer اجرا میشود.
بازبینی GitHub Actions
workflow امضای release با چهار SHA immutable برای actions/checkout، actions/setup-python، azure/login و Azure Artifact Signing action سختتر شده است. این تغییر، وابستگی workflow به tagهای متحرک action را کاهش میدهد. artifactهای v2.6.1 به نام FinAnalyzer_Enterprise_v2_6_1.exe تولید میشوند.
امضای cloud واقعی هنوز منوط به پیکربندی Azure Artifact Signing، Entra federated credential و GitHub Environment
production-signingاست. تا پیش از تکمیل این تنظیمات، هیچ EXE امضاشدهای نباید بهعنوان production artifact منتشر شود.
آزمون و اعتبارسنجی
مجموعه کامل پروژه با ۳۵ تست موفق اجرا شد. تستهای جدید Evidence Pack، permission و MFA، manifest hash، redaction رخداد export و مسدودشدن export برای audit chain دستکاریشده را پوشش میدهند. کنترل نحوی ماژولهای جدید، git diff --check و dependency gate Windows نیز با موفقیت اجرا شدند.
قابلیتهای پیشنهادی بعدی
| اولویت | قابلیت | دلیل تجاری |
|---|---|---|
| بالا | Reconciliation Workspace | حل exceptionهای bank/ledger پیش از close و کاهش زمان بستن ماهانه |
| بالا | SIEM/WORM Anchor | نگهداری مستقل head hash و manifest برای کنترل compromise محلی |
| متوسط | Approval Policy Builder | تنظیم ruleهای مبلغ، entity و SoD بدون تغییر code |
| متوسط | Consolidation و FX | پشتیبانی گروههای چندشرکتی و remeasurement کنترلشده |
FinAnalyzer Enterprise v2.6.0
FinAnalyzer Enterprise v2.6.0 — آمادگی بستن دوره و انتشار Windows قابلراستیآزمایی
نوع انتشار: قابلیت تجاری و سختسازی امنیتی.
دامنه: کنترلهای پیش از Period Close، اتمیکسازی بانک، نمونه قابلاجرا برای audit chain و راهاندازی امضای خودکار Windows.
قابلیت تجاری جدید: Close Readiness Controls
v2.6.0 یک کنترل پیشگیرانه پیش از ایجاد یا اجرای Period Close اضافه میکند. سرویس PeriodCloseService.assess_readiness() یک گزارش explainable تولید میکند و request یا approval را دوباره پیش از mutation اصلی بررسی میکند. بنابراین «ready بودن در زمان درخواست» برای اجرای close کافی نیست؛ تمام blockerها در مرحله approval نیز ارزیابی میشوند.
| blocker | اثر تجاری |
|---|---|
fiscal_year_missing یا fiscal_year_already_closed |
جلوگیری از close روی دوره نامعتبر یا از پیش قفلشده |
closing_account_out_of_scope یا closing_account_ineligible |
جلوگیری از انتقال سود/زیان به حساب خارج از شرکت یا غیرحقوق صاحبان سهام |
active_close_request |
جلوگیری از workflow موازی یا تأییدهای مبهم |
unbalanced_journal_entry |
جلوگیری از قفل شدن دفتر دارای entry نامتوازن |
pending_bank_transactions |
جلوگیری از close قبل از تعیین تکلیف تراکنشهای بانکی معلق |
audit_chain_invalid |
جلوگیری از close هنگامی که evidence امنیتی local نامعتبر است |
نتیجه assessment در زنجیره HMAC با رخداد period_close.readiness_assessed ثبت میشود. outcome برابر success یا denied و جزئیات آن فقط شامل phase، fiscal year و کدهای blocker/warning است؛ secret یا payload بانکی در audit ذخیره نمیشود.
کنترلهای بانکی و SoD
مسیر Plaid اکنون در sync روی دوره بسته، در revision تراکنش و در removal تراکنش قبل از mutation متوقف میشود. failure باید بهطور atomic journal entry، transaction lines، mapping و cursor را rollback کند. v2.6.0 همچنین readiness را در approval دوباره ارزیابی میکند تا pending bank work ایجادشده پس از request، period را بهاشتباه قفل نکند.
امضای خودکار Windows و OIDC
workflow .github/workflows/release-sign.yml برای release tagهای semantic، build، dependency gate، test suite، Azure OIDC، Azure Artifact Signing، RFC 3161 timestamp، Authenticode verification و upload evidence را آماده میکند. این workflow تا زمان پیکربندی Entra Federation و GitHub Environment production-signing امضای واقعی انجام نمیدهد.
| asset انتشار پس از پیکربندی | هدف |
|---|---|
FinAnalyzer_Enterprise_v2_6.exe |
EXE امضاشده Authenticode |
FinAnalyzer_Enterprise_v2_6.exe.sha256 |
تأیید integrity دانلود |
signed-release-evidence.json |
commit، signer، timestamp و hash قابلممیزی |
نمونه آموزشی audit chain
فایل scripts/demo_hmac_audit_chain.py نمونه مستقل و بدون database ارائه میدهد. این نمونه redaction، payload canonical، HMAC-SHA256، verification و تغییر عمدی event را نشان میدهد. اجرای موفق باید ابتدا chain معتبر و سپس دستکاری در sequence دوم را بهشکل HMAC mismatch گزارش کند.
اعتبارسنجی
مجموعه Period Close به ۱۲ تست رسید و سناریوهای SoD، MFA، account scope، duplicate request، rollback، pending bank blocker، unbalanced legacy entry و approval recheck را پوشش میدهد. مجموعه کامل test suite قبل از release باید همراه dependency gate Windows اجرا شود.
قابلیتهای تجاری بعدی
| اولویت | قابلیت | ارزش تجاری |
|---|---|---|
| بالا | Evidence export به SIEM/WORM و anchor روزانه hash | حسابرسی مستقل و کاهش ریسک compromise محلی |
| بالا | Reconciliation workspace برای بانک، ledger و statement | کوتاهشدن close cycle و کنترل exceptionها |
| بالا | Approval matrix قابلپیکربندی با سقف مبلغ و SoD rule builder | انطباق شرکتهای چندواحدی و کنترل داخلی دقیقتر |
| متوسط | Budget vs actual، forecast scenario و driver-based planning | مدیریت عملکرد و برنامهریزی مالی |
| متوسط | Multi-currency remeasurement و FX gain/loss workflow | پشتیبانی شرکتهای بینالمللی |
| متوسط | e-Invoicing، tax engine و integration با ERP/CRM | کاهش ورود دستی و افزایش اتوماسیون |
| متوسط | Document retention، OCR invoice و three-way matching | کنترل AP و آمادهسازی audit |
| پایین | Mobile approval برای مدیران با device posture | تسریع approvalهای کنترلشده |
| پایین | Plugin/connector SDK با sandbox و policy | گسترش اکوسیستم و درآمد B2B |
در این release، قابلیت اولویتدار Close Readiness Controls از پیشنهاد به پیادهسازی، آزمون و رابط دسکتاپ تبدیل شده است. قابلیت بعدی پیشنهادی، Reconciliation Workspace بههمراه export evidence خارجی است؛ این دو قابلیت باید پس از تعیین سامانه مقصد SIEM/WORM و بانکهای هدف پیادهسازی شوند.
FinAnalyzer Enterprise v2.5.0
یادداشت انتشار FinAnalyzer Enterprise — نسخه 2.5.0
تاریخ انتشار: ۱۳ اوت ۲۰۲۶
وضعیت: آماده برای build و امضای Windows در محیط ایزوله
حوزه انتشار: کنترل بستن دوره مالی، تفکیک وظایف، رابط دسکتاپ و automation امضای EXE
نسخه 2.5.0 بر پایه امنیت v2.4.0 ساخته شده است. این انتشار، یک کنترل تجاری قابلاستفاده را به محصول اضافه میکند: بستن سال مالی تنها با درخواست و تأیید دو کاربر مستقل، MFA تازه و شواهد audit زنجیرهای انجام میشود.
قابلیت جدید: Controlled Financial Period Close
FinAnalyzer اکنون workflow بستن دوره مالی را از یک فراخوانی مستقیم حسابداری به یک فرایند کنترلشده تبدیل میکند. کاربر دارای مجوز ledger.period.close.request میتواند با یک session دارای MFA تازه درخواست بستن سال مالی ثبت کند. سپس کاربر مستقل دارای مجوز ledger.period.close.approve—نقش پیشنهادی financial_controller—میتواند درخواست را بررسی، رد یا تأیید و اجرا کند.
| کنترل | رفتار v2.5.0 |
|---|---|
| MFA | هر دو مرحله درخواست و تأیید به MFA حداکثر ۱۵ دقیقه نیاز دارند. |
| RBAC | دو permission حساس مستقل برای درخواست و تأیید تعریف شدهاند. |
| تفکیک وظایف | درخواستکننده نمیتواند درخواست خود را تأیید یا رد کند. |
| محدوده شرکت | درخواست، حساب retained earnings و سال مالی در scope همان company بررسی میشوند. |
| atomicity | closing entry، قفل سال مالی، وضعیت workflow و رخداد audit در یک تراکنش هماهنگ ثبت میشوند. |
| همزمانی | SQLite فقط یک درخواست active (PENDING یا APPROVED) برای هر شرکت/سال مالی میپذیرد. |
| ممیزی | درخواست، اجرا و تلاش نقض SoD با audit event ساختاریافته در HMAC chain ثبت میشوند. |
تجربه دسکتاپ
صفحه جدید Period Close Controls به navigation اپلیکیشن افزوده شد. این صفحه امکان ثبت درخواست، انتخاب درخواست، تأیید/اجرای close و مشاهده تاریخچه درخواستها را فراهم میکند. عملیات حساس تا زمان SSO سازمانی و ارائه evidence MFA معتبر، غیرفعال هستند.
انتشار Windows امضاشده
اسکریپت PowerShell جدید scripts/build_signed_windows_release.ps1 کل مسیر release را در یک فرایند fail-closed انجام میدهد: ایجاد virtual environment تازه، نصب manifest ساخت، اجرای dependency gate، ساخت EXE، امضای Authenticode با گواهی موجود در certificate store کاربر release، RFC 3161 timestamp، verification با SignTool و تولید evidence SHA-256.
| خروجی | مسیر |
|---|---|
| فایل اجرایی | dist/FinAnalyzer_Enterprise_v2_5.exe |
| snapshot وابستگیها | security-reports/windows-build-dependencies.json |
| خروجی ممیزی بستهها | security-reports/pip-audit.json |
| evidence امضا | security-reports/signed-release-evidence.json |
کلید خصوصی گواهی در آرگومان خط فرمان، repository یا فایل release قرار نمیگیرد. اسکریپت فقط thumbprint گواهی را میپذیرد و وجود private key، Code Signing EKU و اعتبار گواهی را پیش از امضا کنترل میکند.
اعتبارسنجی
| کنترل | نتیجه |
|---|---|
| syntax compile ماژولهای جدید و رابط UI | موفق |
| تست کامل پروژه | ۲۰ تست موفق |
| بستن دوره با تأیید کاربر مستقل | موفق |
| مسدودسازی self-approval و ثبت audit | موفق |
| رد درخواست با MFA منقضی | موفق |
وابستگیهای Windows و pip-audit |
موفق در محیط اعتبارسنجی |
سازگاری و ملاحظات ارتقا
migration این نسخه افزایشی است. جدول period_close_requests و index کنترل درخواست فعال با Base.metadata.create_all() و migration SQLite ایجاد میشوند. اجرای DatabaseManager.init_database() در شروع برنامه علاوه بر schema، role و permission جدید financial_controller و catalog مجوزهای بستن دوره را بهصورت idempotent bootstrap میکند.
برای release عمومی Windows، باید فایل EXE نهایی طبق docs/V2_5_SIGNED_WINDOWS_EXE_FA.md در VM ویندوز clean ساخته، امضا و مستقلاً verify شود. این repository هیچ private key، PFX یا artifact امضانشدهای را منتشر نمیکند.
FinAnalyzer Enterprise v2.4.0
یادداشت انتشار FinAnalyzer Enterprise — نسخه 2.4.0
تاریخ انتشار: ۱۲ اوت ۲۰۲۶
وضعیت: آماده برای انتشار پس از ساخت در محیط ایزوله ویندوز
حوزه انتشار: لاگ ممیزی غیرقابلدستکاری، سختسازی وابستگیها و کنترل انتشار Windows EXE
این نسخه یک ارتقای امنیتی و عملیاتی است. هدف آن فراهمکردن قابلیت ردیابی قابلاتکا برای رخدادهای حساس سازمانی و جلوگیری از ساخت فایل اجرایی با وابستگیهای شناختهشده آسیبپذیر است.
خلاصه مدیریتی
FinAnalyzer 2.4.0 مدل لاگبرداری قبلی را به یک ثبت رویداد ساختاریافته، زنجیرهای و قابلراستیآزمایی ارتقا میدهد. هر رخداد جدید با یک HMAC-SHA256 که به هش رخداد پیشین متصل است امضا میشود. کلید امضا در ویندوز با DPAPI حفاظت میشود؛ بنابراین تغییر یک رکورد تاریخی، حذف یک حلقه از زنجیره یا جایگزینی جزئیات رخداد در بررسی صحت زنجیره آشکار خواهد شد.
همزمان، baseline ساخت ویندوز برای وابستگیهای pypdf و wheel اصلاح شد، وابستگی ناامن و بلااستفاده xhtml2pdf از مسیر انتشار حذف شد و وابستگی qifparse اختیاری شد. پیش از ساخت EXE، یک دروازه fail-closed وضعیت بستهها و نتیجه pip-audit را بررسی و فایلهای شواهد انتشار را ثبت میکند.
| حوزه | تغییر اصلی | اثر عملیاتی |
|---|---|---|
| ممیزی | زنجیره HMAC-SHA256 با checkpoint | کشف تغییرات در لاگهای ساختاریافته |
| حریم داده | پاکسازی فیلدهای حساس پیش از ذخیره | جلوگیری از ثبت token، password و secret در audit |
| مجوزدهی | رخدادهای allow/deny ساختاریافته | امکان بررسی دسترسیهای حساس و تلاشهای ناموفق |
| هویت | ثبت ورود، خروج، revoke و خطای ورود SSO | ردیابی چرخه نشست Entra/OIDC |
| بانکداری | ثبت Link، اتصال، sync، حذف و خطای Plaid | قابلیت پاسخگویی و بررسی عملیات بانکی |
| گزارشدهی | ثبت ایجاد schedule، تولید، تحویل و خطا | ردیابی گزارشهای خودکار و delivery خارجی |
| زنجیره تأمین | constraints و gate برای build ویندوز | جلوگیری از انتشار با بستههای مسدود یا آسیبپذیر |
ثبت ممیزی v2.4.0
مدل AuditLog علاوه بر متن legacy، اکنون شناسه رخداد، شماره توالی، شرکت، نشست، دسته، شدت، نتیجه، منبع، هدف، هش قبلی، هش فعلی و شناسه کلید را نگهداری میکند. جدول AuditChainState وضعیت آخرین رخداد امضاشده را نگهداری میکند تا ایجاد رخدادهای بعدی بهصورت ترتیبی و تراکنشی انجام شود. مهاجرت SQLite افزایشی است؛ یعنی ستونها و indexهای جدید به پایگاههای داده موجود افزوده میشوند و رویدادهای قدیمی بهعنوان legacy قابلتشخیص باقی میمانند.
| گروه رخداد | نمونه action | داده ساختاریافته کلیدی |
|---|---|---|
| Authorization | authorization.denied |
actor، permission، company، MFA، دلیل |
| Identity | identity.sign_in_succeeded |
provider، session، identity provider |
| Banking | bank.item_synced |
Plaid item، company، تعداد تغییرات |
| Reporting | report.delivered |
schedule، قالبها، کانال تحویل |
| Audit | audit.migration_checked |
وضعیت migration و شمارش legacy |
جزئیات رخداد پیش از ذخیرهسازی scrub میشود. کلیدهایی مانند access_token، refresh_token، password، secret، client_secret، authorization و cookie با مقدار [REDACTED] جایگزین میشوند. هیچ token خام، کلید رمزنگاری یا گذرواژهای نباید در audit log ثبت شود.
اصلاح وابستگیها و انتشار Windows EXE
| وابستگی / رفتار | تصمیم v2.4.0 | دلیل |
|---|---|---|
pypdf |
الزام >= 6.15.0 |
رفع یافتههای نسخه پایینتر در baseline انتشار |
wheel |
الزام >= 0.46.2 |
جلوگیری از استفاده از نسخه آسیبپذیر گزارششده |
xhtml2pdf |
حذف از مسیر runtime و build | نسخه 0.2.x برای PYSEC-2026-2056 / CVE-2024-25885 رفع منتشرشده ندارد |
qifparse |
اختیاری | نبود آن نباید مانع اجرای قابلیتهای اصلی شود |
pip-audit |
اجرای اجباری در gate | ممیزی محیط واقعی ساخت، نه فقط فایل requirements |
مسیر ساخت باید در یک virtual environment تازه و ایزوله ویندوز اجرا شود:
py -3.12 -m venv .venv-build
.\.venv-build\Scripts\Activate.ps1
py -m pip install --upgrade pip
py -m pip install -r requirements-windows-build.txt
py scripts\verify_windows_release.py
py build_exe.pyاگر verify_windows_release.py خطا برگرداند، ساخت release باید متوقف شود. این اسکریپت فایلهای security-reports/windows-build-dependencies.json و security-reports/pip-audit.json را بهعنوان شواهد قابلبازبینی تولید میکند. build_exe.py نیز در ویندوز همین gate را پیش از اجرای PyInstaller فراخوانی میکند.
تضمین کیفیت
مجموعه آزمون v2.4.0 شامل ایجاد زنجیره، پاکسازی داده حساس، کشف دستکاری، مهاجرت افزایشی schema و ثبت denial مجوزدهی است. این آزمونها همراه با آزمونهای SSO/MFA، RBAC/DPAPI، Plaid و گزارشدهی اجرا شدهاند.
| کنترل | نتیجه اعتبارسنجی |
|---|---|
| syntax compile برای ماژولهای امنیتی و integration | موفق |
| تستهای واحد و یکپارچه پروژه | ۱۷ تست موفق |
| تشخیص tamper در زنجیره HMAC | موفق |
| ثبت denial مجوزدهی با metadata ساختاریافته | موفق |
دروازه وابستگی Windows و pip-audit |
موفق در محیط اعتبارسنجی بهروزشده |
ملاحظات عملیاتی و ارتقا
۱. کلید امضای audit باید بخشی از backup و disaster-recovery سازمان باشد. در ویندوز، بازیابی همان زنجیره روی دستگاه/حساب دیگر به برنامه حفاظت و بازیابی DPAPI سازمان وابسته است.
۲. برای export یا انتقال لاگ به SIEM، ابتدا نتیجه AuditLogger.verify_chain() را ثبت کنید. خروجی نامعتبر باید بهعنوان رخداد امنیتی بررسی شود، نه صرفاً یک خطای نرمافزاری.
۳. تمامی buildهای release باید از محیط جدید، بدون xhtml2pdf و با manifest requirements-windows-build.txt انجام شوند. نصب مستقیم و کنترلنشده بستهها پس از عبور gate، مبنای صدور release نیست.
۴. این نسخه جایگزین کنترلهای زیرساختی مانند محدودیت دسترسی به فایل پایگاه داده، backup رمزنگاریشده، EDR، SIEM و policyهای Entra نیست؛ بلکه شواهد کاربردی مکمل آن کنترلها را فراهم میکند.
فایلهای کلیدی
| مسیر | کارکرد |
|---|---|
core/audit.py |
کلید امضا، HMAC chain، scrub و verify |
core/models.py |
مدلهای توسعهیافته AuditLog و AuditChainState |
core/database.py |
migration افزایشی v2.4.0 برای SQLite |
constraints-windows.txt |
حداقل نسخهها و exclusionهای امنیتی ویندوز |
requirements-windows-build.txt |
manifest ساخت ایزوله ویندوز |
scripts/verify_windows_release.py |
دروازه fail-closed وابستگی و pip-audit |
tests/test_audit_v24.py |
آزمونهای ممیزی ساختاریافته v2.4.0 |
برای جزئیات اجرایی dependency remediation و واکنش به خطای gate، سند docs/V2_4_AUDIT_AND_WINDOWS_RELEASE_FA.md را مطالعه کنید.
FinAnalyzer Enterprise v2.1.0
FinAnalyzer Enterprise v2.1.0
Secure Banking and Automated Management Reporting
FinAnalyzer Enterprise v2.1.0 adds a secure Plaid banking workflow and automated PDF/Excel management reporting to the existing double-entry accounting platform. The release keeps the v2 accounting engine intact and introduces bank-feed provenance, encryption, and reporting automation as additive capabilities.
Included Features
| Area | Delivered capability |
|---|---|
| Plaid Link | On-demand browser-based Plaid Link consent through a temporary localhost bridge. |
| Credential protection | Encryption at rest for locally stored access tokens; configuration secrets are supplied only by environment variables. |
| Transaction synchronization | Cursor-based synchronization for added, modified, and removed transactions with no partial cursor persistence on failure. |
| Accounting integration | Imported banking records create balanced journal entries and preserve a source-to-journal audit mapping. |
| Review controls | Unclassified feed events initially post to clearly labelled uncategorized income/expense accounts for accountant review. |
| Reporting | Ledger-backed management summary, balance sheet, income statement, trial balance, PDF export, and Excel export. |
| Automation | Local daily, weekly, or monthly schedules plus a Windows Task Scheduler runner; optional SMTP or Telegram delivery hooks. |
| Desktop UX | New Bank Connections navigation page and fully operational Financial Reports exports and monthly scheduling control. |
Security and Compliance Boundary
This release stores access tokens encrypted locally and intentionally excludes credentials from reports and repository files. Production rollout requires the organization to complete its own security review, provider configuration, consent, privacy, retention, accounting-policy, and regional compliance requirements. No live banking account or production Plaid credential was used during validation.
Validation
Three offline integration tests passed:
✓ Mocked Plaid exchange, encrypted token storage, and balanced journal posting
✓ Ledger-derived PDF and Excel management-pack generation
✓ Due-schedule execution and local output generation
Upgrade
pip install -r requirements.txt
python -m unittest tests/test_plaid_v2.py tests/test_reporting_v2.py -v
python build_exe.pyRefer to docs/V1_1_BANKING_AND_REPORTING.md for configuration, security boundaries, Windows scheduling, and operational setup.
FinAnalyzer Enterprise v2.0.0
🏢 FinAnalyzer Enterprise v2.0.0
Complete Commercial-Grade Rewrite
This is a major release — a complete rewrite of FinAnalyzer into an enterprise-grade financial management suite that competes with QuickBooks, Xero, Fathom, and Sage.
✨ New Features
🧮 Core Accounting Engine
- True double-entry bookkeeping with GAAP/IFRS compliance
- Journal entry posting with automatic debit/credit balance verification
- Hierarchical Chart of Accounts (parent-child relationships)
- Multi-entity/multi-company support for corporate groups
- Fiscal year management with period locking
- Year-end closing entries with retained earnings
- Multi-currency conversion with real-time exchange rates
🤖 AI/ML Analytics
- Cash flow forecasting (3, 6, 12 months) using Polynomial Regression
- Anomaly detection with IsolationForest for fraud identification
- 50+ institutional financial KPIs (Current Ratio, ROE, ROA, Debt-to-Equity, etc.)
- What-if scenario modeling with interactive sliders
- Budget vs Actual variance analysis
- Trend analysis with statistical significance
📊 Professional Reports
- Balance Sheet (Assets = Liabilities + Equity)
- Income Statement (P&L) with Revenue, COGS, Operating Expenses
- Cash Flow Statement
- Trial Balance with debit/credit verification
- Export to PDF (publication-grade via ReportLab)
- Export to Excel with automated SUM formulas (openpyxl)
💎 Modern Enterprise UI
- Beautiful Dark/Light themes (Fluent Design inspired)
- Collapsible sidebar navigation with professional icons
- Command palette (Ctrl+K) for power users
- Interactive Matplotlib charts embedded in Qt
- Summary cards with trend indicators and hover effects
- Sortable/filterable transaction tables
- Hierarchical tree view for Chart of Accounts
🔐 Enterprise Security
- bcrypt password hashing
- AES-256 Fernet encryption for data at rest
- Role-based access control (Admin, Accountant, Viewer)
- HMAC-SHA256 signed license keys
- Comprehensive audit trail logging
- Two-factor authentication support
📥 Data Management
- Import from CSV, Excel, OFX, QIF bank formats
- Bulk transaction processing
- Encrypted SQLite database (WAL mode, ACID compliant)
- Hot backup and restore functionality
- Connection pooling for high performance
🛠️ Tech Stack
- Python 3.11+ | PySide6 (Qt6) | SQLAlchemy 2.0
- scikit-learn | Matplotlib | Pandas | NumPy
- ReportLab | openpyxl | bcrypt | cryptography
📦 Installation
Download the binary below and run directly. No installation required.
For Windows users: Clone the repo and run python build_exe.py on Windows to generate the .exe file.
⚡ Quick Start
# From source
git clone https://github.com/Ali-Marandi/FinAnalyzer.git
cd FinAnalyzer
pip install -r requirements.txt
python main.py