جایی که لیست تسک ساده دیگر کافی نیست
بیشتر بوردهای پروژه یک عنوان، یک وضعیت، و شاید یک مهلت میدهند. تا وقتی کسی نیاز داشته باشد نرخ روزانه هر تسک را ردیابی کند، یا ستونی بخواهد که مجموع ساعت برآوردی کل یک اپیک را بدون باز کردن تکتک تسکها نشان دهد، همین کافی است. از آن نقطه به بعد یا تیم یک اکسل موازی میسازد که هفتهای یکبار از بورد عقب میماند، یا ابزار باید راهی برای اضافهکردن فیلدی بدهد که در طرح اصلی نبوده.
ده نوع فیلد، دو تای آنها خودشان محاسبه میشوند
فیلد سفارشی WKFGo انواع معمول را پوشش میدهد — متن، عدد، URL، تاریخ، دراپداون، چندانتخابی، چکباکس، کاربر — بهاضافهٔ دو نوع که اصلاً ورودی دستی نمیگیرند:
Rollup یک فیلد عددی را روی مجموعهای از تسکها جمع میزند: sum، avg، min، max یا count، روی فیلدهای عددی داخلی مثل story_points، progress یا estimated_time. یک rollup را روی زیرتسکهای یک اپیک بگذارید و خودش با تغییر آن تسکها دوباره محاسبه میشود — کسی لازم نیست یادش بماند بهروزش کند.
فرمول روی فیلدهای عددی خود تسک حساب میکند: عدد ثابت، + - * /، پرانتز، منفی یکطرفه، و شناسههایی که به فیلد عددی شناختهشده (شامل فیلدهای سفارشی دیگر) اشاره میکنند. estimated_time * 1.15 برای برآورد با حاشیهٔ اطمینان، یا progress / 100 * story_points برای امتیاز انجامشده، از همین جنس کاربردند.
چرا ارزیاب فرمول مهمتر از چیزی است که بهنظر میرسد
راه وسوسهانگیز ساخت «فیلد فرمول» این است که عبارت را مستقیم از eval همان زبان برنامهنویسی رد کنید. WKFGo عمداً این کار را نمیکند — ارزیاب فرمول یک پارسر recursive-descent کوچک و دستنویس است که فقط عدد ثابت، چهار عملگر پایه، پرانتز، و شناسههایی که به فیلد عددی واقعی روی تسک برمیگردند را میفهمد. هر چیز دیگر — فراخوانی تابع، شناسهٔ ناشناخته، توکن اضافه، نحو نادرست — قبل از ذخیرهٔ فیلد با خطای اعتبارسنجی رد میشود. هیچ سطح اجرای کدی برای فرار عبارت فرمول وجود ندارد، چون ارزیاب از اول برای اجرای کد ساخته نشده.
این یک مصالحهٔ آگاهانه است: نمیتوانید IF() یا دستکاری رشته در فیلد فرمول WKFGo بنویسید. در عوض فیلد فرمولی میگیرید که برای هر کاربری که مجاز به ویرایش تنظیمات پروژه است امن است، نه فقط ادمینهایی که به چیزی نزدیک به کنسول اسکریپت اعتماد شدهاند.
کجا واقعاً استفاده میشود
- برآورد وزندار — فیلد فرمولی که
estimated_timeرا با ضریب ثابت برای جدول زمانی بیرونی حاشیهدار میکند، در حالی که برآورد خام برای برنامهریزی داخلی همچنان قابل دیدن است. - جمع سطح پرتفوی — فیلد rollup روی تسک والد که
story_pointsرا روی هر زیرتسک متصل جمع میزند، تا لید بدون باز کردن اپیک اندازهٔ آن را ببیند. - تلاش وزندار به پیشرفت —
progress / 100 * story_pointsبهعنوان تخمین خشن «امتیاز واقعاً تحویلشده تا الان»، مفید در نمای burn-up بدون نیاز به محاسبهٔ جدا هر اسپرینت. - ردیابی نزدیک به هزینه — فیلد عددی نرخ روزانه ضرب در
estimated_timeدر یک فیلد فرمول، وقتی مالی سیگنال هزینهٔ خشن روی خود بورد میخواهد نه یک اکسل جدا. برای هرچیز فراتر از سیگنال خشن، ماژول مالی اختصاصی WKFGo جای درست است — فیلد فرمول تخمین سریع است، نه دفتر حساب.
راهاندازی
در تنظیمات پروژه → فیلدهای سفارشی، فیلدی اضافه کنید، نامش را بگذارید و نوع را انتخاب کنید. برای rollup، فیلد عددی برای جمع و روش تجمیع را انتخاب کنید. برای فرمول، عبارت را با نام نرمالشدهٔ فیلدهای عددی موجود بنویسید — همان نامی که به فیلد دادهاید به حروف کوچک تبدیل میشود و هر بخشی جز حرف/عدد لاتین به زیرخط تبدیل میشود؛ یعنی فیلدی به نام «Day Rate» در عبارت day_rate میشود. نام مرجع جدایی وجود ندارد — همان نام فیلد هم روی کارت نشان داده میشود و هم چیزی است که فرمول به آن ارجاع میدهد. یک نتیجهٔ عملی: فیلد عددی که نامش کاملاً فارسی باشد به چیز قابلاستفادهای نرمال نمیشود، پس هر فیلدی که قرار است از فرمول ارجاع داده شود باید حداقل بخشی از نامش با حروف لاتین باشد — حتی روی بوردی که بقیهاش فارسی است. فیلدهای اجباری و فهرست گزینههای دراپداون/چندانتخابی فرقی نمیکند فیلد دستی باشد یا محاسبهشونده. فیلدهای محاسبهشونده هرجا فیلد سفارشی معمولی نشان داده میشود ظاهر میشوند — روی کارت تسک و در خروجی — فقط فقطخواندنیاند، چون چیزی برای تایپکردن ندارند.
سوالات متداول
آیا فرمول میتواند به فیلد فرمول دیگری اشاره کند؟
خیر. در پیادهسازی فعلی، فرمول فقط سه فیلد داخلی story_points، progress و estimated_time و فیلدهای سفارشی از نوع number را میشناسد. خروجی یک فرمول دیگر وارد نقشهٔ مراجع نمیشود؛ بنابراین زنجیرهٔ فرمول و ارجاع دایرهای اصلاً ساخته نمیشود. اگر محاسبهٔ چندمرحلهای دارید، فعلاً آن را در یک عبارت بنویسید یا نتیجهٔ میانی را در یک فیلد عددی نگه دارید.
اگر تسکهای زیربنایی حذف شوند چه اتفاقی برای rollup میافتد؟ rollup از هر تسکی که الان با محدودهٔ آن تطبیق دارد دوباره محاسبه میشود — تسکهای حذفشده (شامل حذف نرم در سطل بازیافت) خودکار از جمع بیرون میروند.
سقفی برای تعداد فیلد سفارشی هر پروژه هست؟ در سرویس فعلی سقف محصولیِ صریحی اعمال نشده است، اما این به معنی نامحدودبودن عملی نیست. هر فیلد به فرم و خروجی تسکها سطح دیگری از تصمیم اضافه میکند. از مجموعهٔ کوچک شروع کنید و فیلدی را که در تصمیم، فیلتر یا گزارش استفاده نمیشود حذف کنید؛ آستانهٔ ثابت و علمی مثل «۲۰ فیلد» برای همهٔ تیمها وجود ندارد.
میشود بعد از اینکه تسکها داده دارند، نوع فیلد را عوض کرد؟ نه از مسیر ویرایش فعلی. نوع فیلد هنگام ساخت تعیین میشود و endpoint ویرایش فقط نام، گزینهها، پیکربندی، ترتیب و اجباریبودن را تغییر میدهد. برای تغییر نوع، فیلد تازه بسازید، داده را با یک مهاجرت کنترلشده منتقل و پس از نمونهبرداری از نتایج، فیلد قبلی را حذف کنید.
پایلوتی که ارزش فیلد را ثابت میکند
یک پروژه و حداکثر دو فیلد انتخاب کنید: یک ورودی عددی که تیم واقعاً در تصمیم روزانه بهروز میکند و یک rollup یا فرمول که همان عدد را به تصمیم تبدیل میکند. پیش از پایلوت بنویسید «چه کسی، در کدام جلسه، با دیدن این خروجی چه تصمیمی میگیرد». اگر بعد از دو هفته هیچ تصمیمی به آن وابسته نبود، فیلد را حذف کنید؛ دادهای که مصرفکننده ندارد فقط بدهی نگهداری است.
میتوانید این الگو را روی حساب رایگان امتحان کنید. برای مدلکردن هزینه، ظرفیت یا گزارش چندپروژهای، با تیم WKFGo صحبت کنید تا مشخص شود فیلد سفارشی کافی است یا ماژول مالی/گزارش انتخاب دقیقتری است.
آمادهاید عددهایی را ردیابی کنید که بورد بهطور پیشفرض نشان نمیدهد؟