Beancount v3: چه چیز جدیدی دارد؟
نسخه 3 Beancount که در اواسط سال 2024 منتشر شد، نشاندهنده یک تکامل معماری قابل توجه برای ابزار محبوب حسابداری متنساده است. در حال ی که این نسخه سازگاری با نسخههای قبلی را برای فایلهای دفتر کل کاربران حفظ میکند، ساختار زیربنایی و ابزارهای همراه آن دستخوش تغییرات اساسی شدهاند. در ادامه به تفکیک آنچه در Beancount v3 جدید است، میپردازیم.
معماری ماژولارتر و بهینهتر
مهمترین تغییر در Beancount v3، حرکت به سمت یک اکوسیستم ماژولارتر است. چندین قابلیت کلیدی که قبلاً با هسته اصلی همراه بودند، به پروژههای مستقل و جداگانه تبدیل شدهاند. این امر باعث میشود هسته Beancount سبکتر شده و امکان توسعه متمرکزتر بر روی اجزای جداگانه فراهم شود.
اجزای کلیدی که اکنون بستههای جداگانه هستند، عبارتند از:
- beanquery: ابزار قدرتمند جستجوی SQL-مانند برای فایلهای دفتر کل شما، اکنون در بسته مستقل خود قرار دارد.
- beangulp: این خانه جدید چارچوب وارد کردن داده است که جایگزین ماژول قبلی
beancount.ingest
شده است. - beanprice: ابزاری اختصاصی برای دریافت قیمت کالاها و سهام.
این جداسازی به این معنی است که کاربران برای حفظ تمام قابلیتهایی که در نسخه 2 به آنها عادت داشتند، باید این بستهها را علاوه بر beancount
نصب کنند.
تغییرات در ابزارهای خط فرمان و جریانهای کاری
با توجه به معماری ماژولار جدید، تغییرات قابل توجهی در ابزارهای خط فرمان وجود دارد:
bean-report
حذف شده است: این ابزار حذف شده است. اکنون به کاربران توصیه میشود برای نیازهای گزارشگیری خود ازbean-query
(از بستهbeanquery
) استفاده کنند.- جریان کاری جدید واردکننده: دستورات
bean-extract
وbean-identify
از هسته حذف شدهاند. رویکرد جدید باbeangulp
مبتنی بر اسکریپت است. اکنون کاربران باید اسکریپتهای پایتون خود را برای مدیریت وارد کردن دادهها از منابع خارجی مانند صورتحسابهای با نکی ایجاد کنند.
بهبودهای گرامر (سینتکس) و ویژگیها
در حالی که اصول اصلی حسابداری بدون تغییر باقی ماندهاند، Beancount v3 انعطافپذیری مطلوبی را در گرامر (سینتکس) خود معرفی میکند:
- کدهای ارز انعطافپذیرتر: محدودیتهای قبلی در مورد طول و کاراکترهای نام ارزها کاهش یافته است. اکنون نمادهای ارز تککاراکتری پشتیبانی میشوند.
- پرچمهای تراکنش گسترشیافته: کاربران اکنون میتوانند از هر حرف بزرگ انگلیسی (A تا Z) به عنوان پرچم برای تراکنشها استفاده کنند که امکان دستهبندی دقیقتری را فراهم میکند.
مهمتر اینکه، این تغییرات سازگار با نسخههای قبلی هستند، بنابراین فایلهای دفتر کل Beancount v2 موجود شما بدون هیچ گونه تغییری کار خواهند کرد.
بازنویسی C++ و عملکرد
یکی از اهداف بلندمدت برای Beancount، بازنویسی اجزای حیاتی عملکرد آن در C++ بوده است. در حالی که این کار در حال انجام است، نسخه اولیه Beancount v3 هسته مبتنی بر C++ را شامل نمیشود. این بدان معناست که در حال حاضر، عملکرد v3 با v2 قابل مقایسه است. کد C++ برای ادغام در آینده، در یک شاخه توسعه جداگانه باقی میماند.
مهاجرت از v2 به v3
برای اکثر کاربران، مهاجرت از Beancount v2 به v3 نسبتاً ساده است:
- فایلهای دفتر کل: هیچ تغییری برای فایلهای
.beancount
شما لازم نیست. - نصب: شما باید بستههای جدید و جداگانه مانند
beanquery
وbeangulp
را با استفاده ازpip
نصب کنید. - اسکریپتهای واردکننده: اگر واردکنندههای سفارشی دارید، باید آنها را بهروزرسانی کنید تا از API جدید
beangulp
استفاده کنند. این عمدتاً شامل تغییر کلاس پایه واردکنندههای شما و تنظیم برخی امضاهای متد است. - Fava: رابط وب محبوب Beancount، Fava، برای سازگاری با v3 بهروزرسانی شده است. اطمینان حاصل کنید که آخرین نسخه Fava را برای تجربهای بینقص دارید.
در اصل، Beancount v3 یک نسخه بنیادی است که معماری پروژه را بهینهسازی میکند و آن را در بلندمدت ماژولارتر، آسانتر برای نگهداری و گسترش میسازد. در حالی که نیاز به برخی تنظیمات در جریانهای کاری کاربران، به ویژه در مورد وارد کردن دادهها دارد، اما زمینه را برای توسعه آینده این ابزار قدرتمند حسابداری فراهم میکند.