مدیریت فضای کاری
سیاهه حسابرسی
هر فضای کاری دارای یک تاریخچهٔ حسابرسی تغییرناپذیر در آدرس /app/audit است. نقشهای مدیر و مالک میتوانند ورودیها را مرور، فیلتر و بررسی کنند؛ نقشهای ویرایشگر و بیننده دسترسی ندارند.
چه مواردی ثبت میشود
برنامه برای هر اقدامی که وضعیت فضای کاری را بهطور اساسی تغییر دهد یا جنبههای انطباقی را نمایان کند، در جدول audit_logs ثبت میکند. نمونهها عبارتند از:
- دعوتنامههای اعضا، تغییرات نقش، حذف اعضا.
- اتصال / قطع اتصال یکپارچهسازیها (اسلک، تیمز، وبهوکها).
- خطاهای تحویل وبهوک یکپارچهسازی (تا آدرسهای خراب اسلک بدون نیاز به بررسی لاگها قابل مشاهده باشند).
- خروجی درخواستهای موضوع داده GDPR (
dsr.exported) و پاکسازیها (dsr.erased). - تغییرات پلن صورتحساب که از رابط مدیریت انجام شده است.
دایره لغات اقدامات
برنامه امروزه اقدامات حسابرسی زیر را ثبت میکند. برای نمایش یک شناسهٔ خاص، فیلد اقدام را در نوار ابزار فیلتر کنید (تطابق زیررشتهای — agent تمام ردیفهای agent.* را نشان میدهد).
agent.created/agent.updated/agent.deleted/agent.bulk_deleted— مالک فضای کاری یک دستیار فروش هوش مصنوعی را ایجاد / ویرایش / حذف میکند. حذف گروهی به ازای هر دستیار تحت تأثیر، یک ردیف ثبت میکند تا محدودهٔ بینفضاهای کاری قابل مشاهده باشد.agent.published/agent.republished/agent.rolled_back— چرخهٔ انتشار. زمانی که یک تغییر پیشنویس روی یک نسخهٔ زنده موجود دوباره منتشر میشود، republished ثبت میشود.source.created/source.deleted— منابع دانش متصل به یک دستیار فروش (آدرسهای خزش، فایلها، نوتین، گوگل داکس و غیره).workflow.created/workflow.updated/workflow.deleted/workflow.bulk_deleted— فرآیندهای خودکار واکنش اسکریپتی.member.invited/member.added/member.removed— دعوتنامه، افزودن مستقیم (زمانی که دعوتشونده قبلاً حساب Pitchbar داشته باشد) و حذف صندلی.api_token.created/api_token.revoked/api_token.forgotten/api_token.purged— چرخهٔ حیات توکن API فضای کاری. forgotten = حذف سخت (تک ردیف). purged = حذف سخت گروهی تمام ردیفهای لغو شده برای فضای کاری.platform_settings.updated— مدیر ارشد یک بخش از/settings/systemرا ذخیره کرده است. ستونafterنام بخش و لیستی از کلیدهای غیرحساس تغییر یافته را ثبت میکند؛ مقادیر مخفی (کلیدهای API، اسرار وبهوک، رمزهای عبور SMTP) قبل از نوشتن حذف میشوند تا ردیف حسابرسی نتواند اطلاعات ورود را نشت دهد.integration.webhook_secret_rotated— مدیر یک کلید مخفی تحویل وبهوک را تغییر داده است.dsr.exported/dsr.erased— انجام درخواست موضوع داده GDPR.impersonation.started/impersonation.stopped— مدیر ارشد از طرف یک عضو فضای کاری اقدام کرده است.
هنگامی که یک اقدام از زمینهای بدون کاربر احراز هویت شده (پردازشگر صف، دستور زمانبندیشده، پاسخ وبهوک) انجام میشود، فیلد after.system_origin ردیف یک نشانگر حمل میکند: console، webhook_or_queue یا background. از این برای تشخیص «سیستم این کار را انجام داد» از «ما فراموش کردیم عامل را ثبت کنیم» استفاده کنید.
هر ردیف شامل: شناسهٔ اقدام، نوع / شناسهٔ نهاد، کاربر عامل (یا سیستم در صورت فعالسازی توسط یک وظیفهی صف)، IP مبدأ، عامل کاربر و یک تصویر JSON before / after است.
فیلتر کردن
نوار ابزار موارد زیر را میپذیرد:
- اقدام — تطابق زیررشتهای (بدون در نظر گرفتن حروف بزرگ و کوچک)، بهعنوان مثال
dsrهر دو ردیف خروجی و پاکسازی را نشان میدهد. - نوع نهاد — منوی کشویی پر شده با انواع نهادهای متمایز موجود در لاگ فضای کاری شما، بنابراین فقط گزینههایی را مشاهده میکنید که واقعاً سابقه دارند.
- ایمیل عامل — تطابق دقیق با ایمیل کاربر؛ برای نمایش فقط ردیفهای آغازشده توسط سیستم، یک ایمیل ناشناس وارد کنید.
- از / تا — محدودهٔ
created_at. هر دو کران اختیاری هستند.
فیلترها ترکیب میشوند؛ صفحهبندی به مجموعه فیلتر فعال احترام میگذارد.
نگهداری
ردیفهای حسابرسی روزانه از طریق دستور زمانبندیشده audit:prune --days=365 هرس میشوند. نگهداری پیشفرض یک سال است — به اندازهای طولانی برای بررسی «چه چیزی دو فصل پیش تغییر کرد؟» اما محدود به گونهای که جدول بدون محدودیت رشد نکند. مشتریانی با الزامات انطباق سختگیرانهتر (SOC2، HIPAA، توقف طولانی GDPR) باید قبل از اجرای این هرس، لاگ حسابرسی خود را از طریق دستور artisan در بازههای زمانی خودشان خروجی بگیرند. با ارسال یک مقدار --days متفاوت در routes/console.php خود، بازه زمانی را لغو کنید.
# اجرای آزمایشی: گزارش آنچه هرس میشود، بدون تغییر.
php artisan audit:prune --days=365 --dry-run
# اعمال بازه نگهداری طولانیتر.
php artisan audit:prune --days=730
چرا ویرایش / حذف وجود ندارد
ردیفهای حسابرسی فقط اضافهشونده هستند. هیچ رابطی برای ویرایش یک ردیف وجود ندارد و پایگاه داده ستون updated_at در audit_logs ندارد. این عمدی است — یک لاگ انطباقی که قابل بازنویسی باشد، لاگ انطباقی نیست.
عملکرد
جدول روی (workspace_id, created_at) و (entity_type, entity_id) نمایه شده است. یک فضای کاری با دهها هزار ردیف همچنان اولین صفحه را در کمتر از ۵۰ میلیثانیه ارائه میدهد. در صورت نیاز به خروجی گروهی، مستقیماً از طریق دستور Artisan workspace:audit-export (برنامهریزی شده) از جدول پرسوجو کنید، نه از طریق اسکرپ کردن رابط کاربری.