پرش به محتویات

کاتالوگ و معرفی تیم ساختمان

ماژول buildingteams گزینه‌های مسئولیت، انتخاب مسئولیت‌ها و انتساب افراد را نگهداری می‌کند. این تغییر فقط معرفی مسئولیت در کاتالوگ را تکمیل می‌کند؛ اعمال Permission، Role Template قابل ویرایش، خدمات و اعلان‌ها را پیاده‌سازی نمی‌کند.

قرارداد و رفتار

GET /api/v1/buildings/{buildingId}/team/role-options همچنان 200 با {items: [...]} می‌دهد. برای ۱۳ نقش شناخته‌شده، presentation شامل عنوان انتخاب، گروه با کد/عنوان/ترتیب، ترتیب ردیف و accessSummary دارای عنوان، فهرست و راهنما اضافه شده است. همه متن‌ها en و fa دارند.

presentation در OpenAPI اختیاری است تا Client قدیمی و نقش سفارشی یا آینده سازگار بمانند. برای نقش ناشناخته حذف می‌شود؛ داده قدیمی باقی می‌ماند و دسترسی ساختگی تولید نمی‌شود. گروه‌بندی Front بر اساس group.code و ترتیب group.order و presentation.order است. ترتیب و محتوای فیلدهای قدیمی پاسخ عوض نشده است.

این داده شرح اطلاع‌رسانی مسئولیت محصول است و نباید برای فعال‌کردن Action، محاسبه Permission مؤثر یا اعلام آماده‌بودن ماژول مصرف شود. متن مدیر ساختمان دسترسی مالی را مشروط می‌کند. نسخه فعلی Authorization هنوز از سیاست اجرایی موجود استفاده می‌کند؛ همگام‌سازی کامل Role Templateها و ماژول‌های عملیاتی خارج این تغییر است.

مالکیت و مرز تراکنش

  • کد، عنوان قدیمی، Cardinality و قفل از کاتالوگ پایگاه داده در Repository خوانده می‌شوند.
  • Adapter HTTP مالک متن نمایشی در role_presentation.go و DTO پاسخ است؛ هیچ تصمیم Authorization در این نگاشت وجود ندارد.
  • Application پیش از خواندن Repository، team.view را برای Account و Building بررسی می‌کند.
  • این GET فقط خواندنی است؛ تراکنش نوشتن، Migration، دعوت، اعلان و Audit دامنه‌ای جدید ندارد.
  • رئیس و اعضا کدهای مستقل و Cardinality مستقل دارند. ادمین قفل‌شده باقی می‌ماند.
  • متون مشترک از متن پنل تیم پیروی می‌کنند.

امنیت، خطا و اتصال ضعیف

پاسخ no-store است. خواندن به عضویت و Role فعال همان ساختمان نیاز دارد؛ عدم احراز هویت 401، نبود دسترسی نقش 403، نبود Scope معتبر 404 و خطای Dependency 503 از Problem Details دوزبانه موجود استفاده می‌کنند. داده اشخاص یا Permissionهای شخص دیگری در کاتالوگ وجود ندارد.

نمایش پنل درخواست شبکه اضافی ایجاد نمی‌کند و Query کاتالوگ همان یک Query قبلی است. هیچ ادعای بهبود Latency بدون اندازه‌گیری مطرح نیست. Retry محدود روی GET و خطای موقت با قواعد استاندارد مجاز است؛ بازکردن Sheet هیچ POST یا PATCH ایجاد نمی‌کند.

آزمون و بازگشت

آزمون‌ها ۱۳ نقش و چهار گروه، ترتیب، ترجمه، مدیر مالی مشروط، استقلال رئیس و اعضا، حفظ فیلدهای قبلی، خروجی خالی، نقش ناشناخته، ایزوله‌بودن Slice پاسخ و مسیر HTTP مجاز/ممنوع/خارج Tenant را پوشش می‌دهند.

Rollback فقط بازگشت Binary است؛ داده یا Migration جدید وجود ندارد. Front باید نبود presentation در نسخه قدیمی را مدیریت کند.

ردیابی

نیاز نقطه اجرا آزمون
BR-SET-06F، OBM-UF-04، WF-17 role_presentation.go؛ TeamRolePresentation در OpenAPI TestRoleSelectionPresentationMatchesApprovedGroups
BR-SET-06I، WF-18 accessSummary و متن مرکزی پنل TestRoleSummaryExplainsConditionalAccessAndIsIsolatedPerResponse
حفظ Cardinality و قرارداد mapRoleOptions TestRolePresentationPreservesLegacyContractAndCardinality
عدم افشای Tenant و Deny پیش‌فرض Team.RoleOptions و Authorizer موجود TestRoleOptionsRouteAuthorizationAndPresentation
نبود متن برای نقش آینده حذف presentation ناشناخته TestUnknownRoleKeepsLegacyFieldsWithoutInventedAccess

منبع ماشینی قرارداد backend/api/openapi/building-onboarding.yaml است. قواعد عمومی از استانداردهای Backend و قواعد محصول از دسترسی‌ها می‌آیند.