کاتالوگ و معرفی تیم ساختمان
ماژول 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 و قواعد محصول از دسترسیها میآیند.