فهرست مستندات
عملیات جایگذاری در هاب#
انتشار یک Environment آن را برای کشف عمومی واجد شرایط میکند؛ اما آن Environment را در Hub قرار نمیدهد. جایگذاری یک تصمیم جداگانه و دستی برای گزینش محتوا است که پس از انتشار توسط مدیر Registry الامر انجام میشود. هیچ جایگذاری خودکاری پس از انتشار انجام نمیشود.
توسعهدهندهٔ بیرونی به دسترسی به monorepo الامر نیاز ندارد. او Environment را با
جریان عادی منتشر میکند و شناسهٔ پایدار env_... را به مدیر میدهد. مدیر سپس از
Admin Panel یا CLI با نام alamr استفاده میکند. هر دو سطح، API مدیریتی یکسان
Registry را فراخوانی میکنند.
مرز اختیار#
| مالک | مسئولیت |
|---|---|
| Environment هاب | هندسهٔ Zone، mesh لندمارکها، برچسبها، تعامل، مسیریابی و موجودی محدود اسلاتهای منطقی |
| Registry | تخصیص فعلی slotId -> environmentId، شرایط کاتالوگ، یکتایی، مجوز مدیر و تاریخچهٔ ممیزی |
| ناشر Environment | Environment با تألیف مستقل، revisionهای bundle تغییرناپذیر، backend اختیاری متعلق به ناشر و نمایش عمومی کاتالوگ |
تخصیص Registry هیچ هندسه یا لندمارک دلخواهی ایجاد نمیکند. Admin Panel و CLI فقط
میتوانند یک اسلات موجود از نوع manual را تغییر دهند. ساخت، جابهجایی یا حذف
اسلات همچنان به تغییر تألیفشده در Hub نیاز دارد. Zone وضعیت محلی برنامهٔ Hub
باقی میماند و موجودیت Registry یا Environment مستقل با مجوز جداگانه نیست.
تخصیص بهجای یک revision به شناسهٔ پایدار Environment اشاره میکند. بنابراین با انتشار revision فعال جدید، تا زمانی که Environment عمومی و واجد شرایط کاتالوگ بماند، نیازی به جایگذاری دوباره نیست.
موجودی و وضعیتهای فعلی#
موجودی اولیهٔ env_hub / sunlit-way سه اسلات رسمی fixed و اسلات خنثی
community-showcase-01 از نوع manual دارد.
| حالت | معنا | عملیات مجاز مدیر |
|---|---|---|
fixed | اتصال رسمی تألیفشده | فقطخواندنی؛ set، replace و clear با conflict رد میشوند |
manual | لندمارک خنثی تألیفشده که مقصد آن را Registry مدیریت میکند | set وقتی خالی است؛ replace یا clear وقتی تخصیص دارد |
هر اسلات عمومی یکی از وضعیتهای مشتقشدهٔ زیر را دارد:
| وضعیت | معنا | رفتار عمومی ورود |
|---|---|---|
open | اسلات manual تخصیص ندارد | لندمارک باز تألیفشده نمایش داده میشود؛ عملیات ورود ندارد |
occupied | تخصیص به revision فعال، منتشرشده، عمومی و واجد شرایط دقیق Environment حل میشود | شناسهٔ مقصد افشا و payload ورود متعلق به Registry استفاده میشود |
reserved | اسلات ثابت بدون تخصیص است، مقصد تخصیصیافته گمشده/فاقد شرایط است یا حقیقت جایگذاری در دسترس نیست | لندمارک رزروشدهٔ تألیفشده نمایش داده میشود؛ شناسهٔ مقصد و عملیات ورود ندارد |
مدل خواندن مدیر، assignedEnvironmentId، updatedBy و updatedAt را نگه
میدارد تا مدیر بتواند تخصیص reserved را عیبیابی کند. مدل عمومی فقط برای
occupied مقدار destinationEnvironmentId را افشا میکند و مقصد stale را
قابل ورود نشان نمیدهد.
پیششرطها#
- Environment مقصد یک revision فعال دارد که درخواست انتشار آن با visibility
برابر
publicدر وضعیتpublishedاست. - مقصد واجد شرایط کاتالوگ باقی مانده است: revision فعال و Pluginهای نصبشدهٔ آن block نشدهاند.
- مقصد خود
env_hubنیست و در همان Hub به اسلات دیگری تخصیص نیافته است. - اپراتور از حساب واقعی مدیر Registry استفاده میکند. توکن Project و عضویت عادی Project کافی نیست.
- هر عملیات set، replace یا clear دلیلی بین ۳ تا ۱۰۰۰ نویسه دارد.
Registry این invariantها را هنگام mutation دوباره بررسی میکند. پنهانکردن یک گزینه در Admin Panel فقط برای تجربهٔ کاربری است و جای authorization را نمیگیرد.
پیشبررسی اپراتور#
پیش از هر set یا replace، اپراتور وضعیت کامل مقصد را در یک گذر تأیید میکند:
- revision فعال منتشرشدهٔ دقیق و رکورد عمومی کاتالوگ آن حل میشود.
- Runtime و Presence محیط سالم است تا مقصد پس از جایگذاری واقعاً قابل ورود باشد.
- وضعیت فعلی اسلات و هر تخصیص موجود از فهرست مدیر خوانده میشود، نه حدس زده.
- دلیل mutation پیش از نوشتن مشخص است، چون هر mutation همراه آن ممیزی میشود.
جریان Admin Panel#
- با حساب مدیر Registry وارد Admin Panel پلتفرم شوید.
- از جایگاههای Hub مسیر
/placementsرا باز کنید. - تأیید کنید صفحه
env_hubوsunlit-wayرا نشان میدهد و mode، state، تخصیص فعلی و آخرین تغییر هر اسلات را بررسی کنید. - برای اسلات
manualیک Environment از موجودی عمومی و فعال انتخاب کنید، دلیل را وارد کنید و قرار دادن در Hub یا جایگزینی مقصد را بزنید. - برای حذف تخصیص دستی، دلیل جداگانه وارد کنید و خالیکردن جایگاه را بزنید.
- صفحه را دوباره بارگیری یا فهرست را مجدد دریافت کنید و وضعیت حاصل یعنی
occupied،openیاreservedرا تأیید کنید.
ردیف fixed کنترل تغییر ندارد. اگر فهرست placement قابل تأیید نباشد، Admin Panel همهٔ mutationها را غیرفعال میکند. اگر فقط موجودی Environmentهای واجد شرایط در دسترس نباشد، تخصیص و جایگزینی غیرفعال میشود؛ عملیات clear ممکن است وقتی رکورد placement احرازشده و نشست CSRF معتبر است همچنان در دسترس بماند.
جریان CLI#
با حساب مدیر احراز هویت کنید. CLI عمومی بهصورت پیشفرض از Registry پروداکشن استفاده میکند؛ هنگام کار با deployment دیگر، origin صریح مفید است:
alamr login --registry https://registry.al-amr.com
Hub و Zone پیشفرض را فهرست کنید:
alamr admin hubs list --json
شکل صریح فرمان چنین است:
alamr admin hubs list env_hub sunlit-way --json
اسلات دستی خالی را تخصیص دهید یا مقصد فعلی آن را جایگزین کنید:
alamr admin hubs set env_hub sunlit-way community-showcase-01 env_example \
--reason "Approved community showcase" --json
تخصیص را خالی کنید:
alamr admin hubs clear env_hub sunlit-way community-showcase-01 \
--reason "Showcase period completed" --json
فقط operandهای Hub و Zone در list مقدار پیشفرض دارند. set و clear همهٔ
شناسهها را صریح میخواهند تا اپراتور مقصد استنباطشدهای را تغییر ندهد. خروجی
ساختاریافته با قرارداد اعتبارسنجی میشود؛ پاسخ نامعتبر Registry بهجای موفقیت،
شکست محسوب میشود. set، replace و clear عملیات مستقلیاند: هرکدام هنگام اجرا بر
اساس وضعیت فعلی اسلات ارزیابی میشوند و تکرار همان clear اسلات را open نگه
میدارد و تغییر تخصیص دومی ایجاد نمیکند.
رفتار ممیزی و شکست#
set/replace رویداد hub.placement.set و clear رویداد
hub.placement.clear را مینویسد. رکورد ممیزی شامل مدیر، Hub، Zone، اسلات، مقصد،
دلیل و زمان است. mutation تخصیص و درج audit یک تراکنش Registry هستند؛ اگر نوشتن
audit شکست بخورد، تغییر placement commit نمیشود.
صفحهٔ فعلی Hub و فرمانهای admin hubs در CLI، feed ممیزی را رندر نمیکنند.
مدیر رویداد ذخیرهشده را از endpoint مدیریتی و احرازشدهٔ
GET /v1/admin/audit-logs بررسی و resourceId آن
(hubEnvironmentId:zoneId:slotId) و metadata را تطبیق میدهد.
conflictهای مورد انتظار شامل اسلات fixed، انتخاب خود Hub بهعنوان مقصد، مقصد فاقد شرایط، مقصد گمشده و مقصدی است که قبلاً جای دیگری تخصیص یافته است. این خطاها را با ویرایش شناسه یا سورس Hub دور نزنید. وضعیت انتشار/کاتالوگ را اصلاح یا Environment واجد شرایط دیگری انتخاب کنید، سپس همان فرمان دقیق را تکرار کنید.
Hub پاسخ عمومی placement و کاتالوگ عمومی Environment را در یک مرز refresh میخواند. اگر هر منبع شکست بخورد، view تخصیص حلشده پاک میشود و لندمارکهای مدیریتشدهٔ تألیفشده بهشکل reserved رندر میشوند. Hub هیچگاه به مقصد hard-codeشدهای برنمیگردد که عملیات clear مدیر را بیاثر کند.
تأیید اپراتور#
- collection را فهرست و تأیید کنید اسلات موردنظر
manualاست. community-showcase-01را به Environment عمومی و واجد شرایط set کنید وoccupiedهمراه شناسهٔ دقیق مقصد را تأیید کنید.- Hub را باز کنید و تأیید کنید لندمارک تألیفشده از payload ورود Registry استفاده میکند؛ نزدیکی بهتنهایی نباید navigation انجام دهد. پیش از تمامشدن جایگذاری، ورود واقعی به Environment جایگذاریشده را از Hub اثبات کنید.
- اسلات را clear و در refresh بعدی فهرست/خواندن،
openرا تأیید کنید. - برای شاهد منفی، مقصد تخصیصیافته را فاقد شرایط کنید و تأیید کنید اسلات بدون
مقصد عمومی یا عملیات ورود،
reservedمیشود. - feed ممیزی مدیر را برای دلیل متناظر set/clear بررسی کنید.
برای جریان مستقل بازبینی و انتشار، چرخهٔ انتشار و برای سطح کامل فرمانها مرجع CLI را ببینید.