Агуулгыг алгасах

Layout — launcher-ийн нүүр дэлгэц

Gerege App-ын launcher-ийн нүүр дэлгэцэд ямар апп, ямар дарааллаар, ямар гарчгийн доор харагдахыг оператор шийднэ (server-driven layout, openpay-ийн layout-ийн порт). Хөгжүүлэгч layout-ийг өөрчлөхгүй — апп чинь нүүрэнд хаана гарахыг оператортой тохирно. Энэ баримт нь хөгжүүлэгчид юу харагдахыг ойлгуулах, host/оператор талын хэрэгжүүлэгчид зориулагдсан.

1. Хувилбар

Layout нь хувилбартай: draft → published → archived. Нэг удаад нэг л published. Нийтлэхэд өмнөх нь archived болно; буцаах (rollback) нь архивласан хувилбарыг шинэ хувилбар болгон дахин нийтэлнэ — түүх зөвхөн өсдөг, «мягмар гарагт хүмүүс юу харсан бэ» гэдэгт үргэлж хариу бий.

2. Section-ууд

type Утга Талбар
featured Гараар сонгосон апп-уудын тууз, өгсөн дарааллаар items (slug)
grid Гарчигтай grid, өгсөн дарааллаар title, items, columns (анхдагч 4)
category Нэг ангиллын апп: items-д заасан нь эхэнд, бусад нь нэрээр category, items?, limit?
categories Ангиллын tile-ийн мөр, тус бүр хэдэн апп-тайг харуулна items (ангиллын код)

Section бүр id (^[a-z0-9][a-z0-9-]{0,39}$)-тэй. Хязгаар: ≤ 30 section, section-д ≤ 24 item, гарчиг ≤ 80, body ≤ 64 KB. Мэдэхгүй талбар → алдаа (бичгийн алдаа хадгалагдаж, чимээгүй үл тоомсорлогдохгүй).

Slug-уудыг нийтлэх (болон rollback) үед шалгана — draft нь review-д байгаа апп-ыг нэрлэж болно. Нийтлэгдсэний дараа түдгэлзүүлсэн апп хүн бүрийн уншилтад өөрөө алга болно.

3. Хүний тал — GET /api/v1/miniapp/layout?channel=ios|android|web

Хүний session-ээр. Нийтлэгдсэн layout-ийг, тухайн хүн тухайн төхөөрөмж дээр нээж болох апп-уудаар (нийтлэгдсэн + суваг таарсан; хүний өөрийн draft ороогүй) шүүж буцаана. Нийтлэгдсэн layout байхгүй бол default: true — апп-тай ангилал бүрийг агуулсан анхдагч layout.

{ "version": 7, "default": false, "sections": [
  { "id": "top", "type": "featured", "title": "Онцлох", "apps": [ { "slug": "esim", "name": "Аяллын eSIM", "…": "…" } ] },
  { "id": "cats", "type": "categories", "title": "Ангилал",
    "categories": [ { "category": "travel", "title": "Аялал", "count": 3 } ] } ] }

apps[] нь launcher-ийн жагсаалттай ижил publicApp (slug, нэр, icon, ангилал, төлөв, scope, холбогдсон эсэх …). Cache-Control: private, no-cache.

4. Операторын тал — /api/v1/miniapp/review/layouts

Зөвхөн MINIAPP_OPERATOR_TENANT_ID байгууллага (review-тэй ижил).

Method Зам
GET /review/layouts Бүх хувилбар
POST /review/layouts {sections, note?} → шинэ draft
GET · PATCH · DELETE /review/layouts/{id} Draft-ыг унших / засах / устгах
POST /review/layouts/{id}/publish Draft-ыг нийтлэх (slug бүр нийтлэгдсэн апп, category-д pin хийсэн нь тэр ангиллынх)
POST /review/layouts/{id}/rollback Архивласан хувилбарыг шинэ хувилбар болгон нийтлэх
GET /review/layouts/{id}/preview?channel= Аль ч хувилбарыг (draft ч) хүнд харагдах байдлаар