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

Gerege Kiosk

Production · Давхарга 4 — Салбар продукт · Репо: gerege-kiosk-mn · geregekiosk.mn

Өөрөө үйлчлэх терминалын нэгдсэн платформ — eID-д суурилсан, AI-аар хүчирхэгжсэн. Олон нийтийн газарт байрлах терминалыг цахим үнэмлэхтэй холбож, иргэн дараалалд зогсох, ажилтантай уулзахгүйгээр лавлагаагаа авч, төлбөрөө төлж, баримтаа хэвлэж авах боломжийг олгоно. Ажлын цагаас хамаарахгүй, 24 цагийн үйлчилгээ.

Эзэмшил

Платформыг Gerege Kiosk ХХК эзэмшин ажиллуулна. Эх код нь хаалттай репод байрлах бөгөөд Gerege Systems-ийн дундын open-gerege-core суурин дээр бүтээгдсэн.

geregekiosk.mn дээр одоо Gerege Nexus үйлчилж байна

2026-08-07-нд шалгав: https://geregekiosk.mn/ нь Gerege Nexus-ийн байршуулалт (хуудасны гарчиг «Gerege Nexus», тайлбар нь Nexus-ийнх) буцааж байна. Домэйн өөрийн хүчинтэй гэрчилгээтэй, 38.180.243.183 дээр байрлана.

Иймд энэ хуудсанд бичигдсэн gerege-kiosk-mn дээрх зан төлөв нийтийн домэйнтой одоогоор таарахгүй байж болзошгүй. Терминал дээр ажиллаж буй хувилбарыг тухайн байршуулалтаас нь шалгана уу.

Гол санаа — нимгэн апп, зузаан суурь

Kiosk-ийн Go backend нь ганц файл. Танилт, RBAC, API gateway, AI pipeline, eID/SSO — бүх суурь чадвар github.com/gerege-systems/open-gerege-core модульд байрлана; энэ репо түүнийг хувилбараар нь татаж, өөрийн нэрээр асаана:

func main() {
    server.ServiceName = "gerege-kiosk"

    app, err := server.NewApp()
    if err != nil { /* … */ }

    // Аппын өөрийн маршрутыг энд нэмнэ:
    //   app.Router().Route("/api/xxx", xxx.Routes(app.Pool()))

    if err := app.Run(); err != nil { /* … */ }
}

Энэ нь Template Platform хуудсанд дурдсан fork синкийн техникийн өрийн шийдэл: өмнө нь суурь код репо бүрд хуулбарлагдаж, сайжруулалт бүрийг гараар зөөдөг байсан. Одоо Kiosk нь open-gerege-core-ын хувилбарласан хэрэглэгч — аюулгүй байдлын нөхөөс нэг цэгээс тархаж, go get open-gerege-core@latest нэг командаар шинэчлэгдэнэ.

Давхарга Хаана амьдардаг Хэн эзэмшдэг
Суурь backend (танилт, RBAC, AI, gateway, migration) open-gerege-core модуль Gerege Systems
Асаах цэг, брэнд, тохиргоо gerege-kiosk-mn/backend Gerege Kiosk ХХК
Frontend BFF, UI gerege-kiosk-mn/frontend Gerege Kiosk ХХК
Байршуулалт, edge vhost gerege-kiosk-mn/deploy Gerege Kiosk ХХК

Бүтэц

gerege-kiosk-mn/
├── backend/     # Go · open-gerege-core-ын нимгэн хэрэглэгч (cmd/api/main.go)
├── frontend/    # Next.js 15 BFF — Node 20, TanStack Query, mn/en/zh/ru
├── ios/         # SwiftUI жишиг клиент (BFF-ээр л харилцана)
└── deploy/      # compose, edge nginx vhost, дотоод DB-ийн TLS гэрчилгээ

Суурь backend нь Clean Architecture — handler → usecase → repository → domain, back-import байхгүй, ORM ашиглахгүй (pgx дээр гар бичмэл SQL).

Танилт — зөвхөн Gerege SSO

Нэвтрэх дэлгэц дээр ганц товч байна: Gerege SSO-оор нэвтрэх. Нууц үг, и-мэйл/OTP бүртгэл, шууд eID урсгал байхгүй.

graph LR
    C["Иргэн / терминал"] --> W["geregekiosk.mn<br/>Next.js BFF"]
    W --> A["Kiosk API"]
    A --> S["sso.gerege.mn<br/>Gerege SSO"]
    S --> E["eID Mongolia"]
    S -.->|"eID proxy"| A
  • OIDC RP урсгал/api/auth/sso/startsso.gerege.mn/sso/callback. Мобайлд PKCE public client (native) урсгал тусдаа.
  • Session — JWT access + refresh, refresh нь эргэлддэг (rotation); logout нь refresh-ийг хүчингүй болгож, access-ийг deny-list-д оруулна.
  • Токен браузерт хүрэхгүй — зөвхөн httpOnly cookie дотор, BFF-ээр дамжина.

Яагаад өөрөө eID RP биш вэ?

Экосистемийн хилийн дүрэм №2-ын дагуу Давхарга 3–4-ийн апп eID рүү шууд ханддаггүй. Kiosk нь eID RP credential эзэмшихгүй — бүх eID харилцаа Gerege SSO-гоор дамжина. Ингэснээр credential нэг газар баригдаж, аудитын мөр тасалддаггүй.

eID PKI профайл — proxy-оор

Нэвтэрсэн иргэний PKI самбарыг SSO-ийн eID proxy-оор татна. Kiosk нь хэрэглэгчийн SSO access token-оор дуудахад SSO өөрийн eID креденшлээр өгөгдлийг авч өгнө.

Юу Хаана харагдана
Нэгдсэн хураангуй /me/eid/id
Гэрчилгээ ба статус /me/eid/certificates
Холбоотой төхөөрөмж /me/eid/devices
Танилт/гарын үсгийн түүх /me/eid/logs
Холбоотой байгууллага, эрх бүхий гарын үсэг зурагчид /me/organizations

Proxy унтраалттай (SSO дээр eid-proxy үйлчилгээ идэвхгүй) эсвэл токен хүчингүй болсон тохиолдлыг UI тусад нь зохицуулна — 5xx болгож хаядаггүй.

Өөрөө OIDC provider

Kiosk нь SSO-ийн relying party байхын зэрэгцээ өөрөө identity provider болж чадна. OAUTH_ISSUER + state key тохируулагдсан үед өөрийн Go OAuth2/OIDC provider идэвхжинэ (Ory Hydra ашиглахгүй):

  • /oauth дор login · consent · logout дэлгэц,
  • oauth_clients хүснэгтэд RP бүртгэл, secret эргэлт,
  • эхний талын client-д consent алгасах, consent-ийг сануулах,
  • discovery, userinfo, id_token — гарын үсгийн түлхүүр шифрлэгдэн хадгалагдана.

Ингэснээр Kiosk-ийн эргэн тойрны жижиг апп-ууд «Sign in with Gerege Kiosk» хийж чадна.

Иргэн рүү харсан гадаргуу

Хэсэг Юу хийдэг
/me/dashboard Хувийн самбар
/me/services · /me/applications Үйлчилгээний каталог, хүсэлт ба түүний явц
/me/references Лавлагаа
/me/notifications Мэдэгдэл
/me/payments Төлбөр
/me/appointments Цаг захиалга
/me/organizations Байгууллага, гишүүнчлэл, эрх
/me/eid/sign Баримтад цахим гарын үсэг зурах
/me/integrations Гуравдагч холболт ба Gerege Space
/me/ai · /me/translate AI туслах, шууд орчуулга

Байгууллага үүсгэх/хайхад улсын бүртгэлээс Gerege Verify-ээр лавлана. Байгууллагын өгөгдөл Postgres RLS-ээр хэрэглэгч тус бүрт хамгаалагдана.

Үйлчилгээний нэгдсэн регистр

Ring System-ийн R1 бүрэлдэхүүн — үйлчилгээний паспорт ба нотлох баримтын удирдлага:

  • үйлчилгээний каталог, хувилбар, нийтлэх/архивлах,
  • амьдралын үйл явдал (life events) — үйлчилгээг иргэний нөхцөл байдлаар бүлэглэх,
  • нотлох баримт (evidences) ба once-only самбар — иргэнээс аль хэдийн авсан бичиг баримтыг дахин нэхэхгүй байх зарчмын хэрэгжилтийг хэмжинэ.

Эрх нь хоёр түвшинтэй: registry.view (уншилт) ба registry.manage (бичилт).

API Gateway

Админаас удирддаг service catalog: services · routes · consumers · API key · policy, дээр нь хүсэлтийн телеметр (overview + logs).

Одоогийн хамрах хүрээ

Gateway нь одоогоор удирдлага ба телеметрийн давхарга. Тохируулсан route/policy-г бодит reverse-proxy болгон мөрдүүлэх (rate-limit, quota-г consumer түвшинд) ажил төлөвлөгөөнд байна.

Цахим гарын үсэг ба sign relay

  • PAdES — eID Mongolia-ийн /v3 интерфэйсээр PDF-д server талаас гарын үсэг зурна; байнгын Document-Signer гэрчилгээтэй (production-д fail-closed).
  • Sign relay — гуравдагч RP-ууд платформын eID креденшлээр дамжуулан гарын үсэг зурах гарц. Энэ маршрут нь web BFF-ээр биш, edge-ээс API рүү шууд (loopback порт) чиглэгддэг. Үр дүнг webhook-оор мэдэгдэнэ.

Иргэний PIN2-той хувийн гарын үсэг ба системийн Document-Signer гарын үсгийн ялгааг G-Sign хуудаснаас үзнэ үү.

AI туслах (Gemini)

SDK-гүй REST client дээр суурилсан pipeline:

Чадвар Тайлбар
Чат Текст ба дуут мессеж, function calling
STT Яриа → текст
TTS Текст → яриа (PCM→WAV)
Орчуулга Шууд урсгалт орчуулга

Гурван давхаргат system prompt: кодод хатуу суулгасан guardrail + админаас DB-ээр тохируулдаг хамрах хүрээ/заавар. Guardrail давхарга нь хэзээ ч тохируулагддаггүй.

search_knowledge tool нь хариултыг мэдлэгийн сангийн бодит өгөгдөлд тулгуурлуулна. Хайлт нь семантик — Gemini embedding + pgvector косинусын ойролцоолол, амжилтгүй бол ILIKE рүү ухарна.

Gemini түр саатвал чат нь 5xx болохгүй — хэрэглэгчийн хэл дээрх уналтын хариу (degraded: true) буцаана. /ai/* маршрут нь IP тус бүр ~20 хүсэлт/мин хязгаартай.

Интеграци ба хадгалалт

  • Гуравдагч OAuth холболт — Google Drive · Google Meet · Dropbox. Токеныг AES-256-GCM-ээр шифрлэн хадгална; креденшл тохируулаагүй бол тухайн карт «Удахгүй» төлөвтэй идэвхгүй харагдана.
  • Gerege Space — апп-ын өөрийн SFTP хадгалалт, хэрэглэгч тус бүрт квоттой. SFTP host key-г баталгаажуулна (production-д заавал — эс бөгөөс fail-closed).

Эрх, удирдлага, аудит

  • RBAC — динамик role + эрхийн каталог, 4 шатлалт загвар (superadmin → admin → manager → user).
  • Super admin — тусдаа данс, MFA-тай onboarding урсгал (invite allow-list → Google → eID → и-мэйл OTP → TOTP + сэргээх код). Тусдаа хүснэгтэд хадгалагддаг тул нэг хүн eID админ ба super admin хоёулаа байж чадна.
  • Audit log — hash-chain холбоост, зөвхөн-нэмэх; админ унших + бүрэн бүтэн байдлыг шалгах endpoint-той.
  • Security events — ingest ба хяналтын самбар.
  • Сайтын харагдац — админ тохируулдаг accent / font / density / theme, дээр нь хэрэглэгч тус бүрийн override.

Аюулгүй байдал

Хяналт Хэрэгжилт
Өгөгдлийн тусгаарлалт Postgres RLS (ENABLE + FORCE); api нь superuser бус role-оор холбогдоно, boot үед мөрдөгдөж байгааг шалгана
Session httpOnly cookie, токен client JS-д хэзээ ч хүрэхгүй
CSRF Давхар хамгаалалт — custom header + origin шалгалт (BFF-ийн бүх mutating маршрут)
Толгойнууд CSP · HSTS · COOP/COEP/CORP, CORS allow-list
Хурдны хязгаар Нэвтрэлт ~5 хүсэлт/мин (4 KiB body cap), апп 50 r/s, /ai/* ~20/мин
DB холболт Production-д sslmode=verify-full — дотоод CA-тай TLS
Ажиглалтын endpoint Production-д /metrics ба /swagger bearer token-оор хаалттай
Прокси итгэл TRUSTED_PROXIES тохируулаагүй бол X-Forwarded-Forитгэхгүй (rate-limit/audit хуурахаас сэргийлнэ)

Экосистемийн нийтлэг шаардлагыг Аюулгүй байдал хуудаснаас үзнэ үү.

Ажиглалт

OpenTelemetry trace + Prometheus metrics + Zap структурт лог. Telemetry-д үйлчилгээ gerege-kiosk нэрээр харагдана.

Байршуулалт

Docker Compose стек: db (Postgres 16 + pgvector) · redis · migrate (нэг удаагийн) · api · web. Браузер зөвхөн web рүү хүрнэ; api/db/redis нь дотоод сүлжээнд үлдэж, нийтийн порт нээдэггүй.

Deploy-ын гурван шийдвэр анхаарал татна:

  1. Migration нь тусдаа алхамup -d-ийн хэсэг биш. Өмнө нь migrate дахин ажиллах бүрд api+web дахин үүсэж, код хөндөөгүй commit дээр ч секундын 502 өгдөг байсан.
  2. Юу ч өөрчлөгдөөгүй бол огт хөдлөхгүй — Docker build тогтвортой биш тул ижил кодоос ч шинэ image ID гардаг. Тиймээс HEAD өөрчлөгдөөгүй бол deploy бүхэлдээ алгасна.
  3. Өгөгдлийн үйлчилгээг deploy бүрд build хийхгүйdb дахин үүсэх нь бүх идэвхтэй DB холболтыг тасалдаг.

Edge nginx-ийн vhost-ыг энэ репо өөрөө эзэмшинэ — deploy бүрд conf.d руу суулгаж, nginx -t шалгаад reload хийнэ; тест унавал өмнөх конфиг буцаагдана. Энэ бол docs.gerege.mn, Developer Portal, Template Platform-тай нэг загвар.

Хэл

UI ба баримт Монгол · English · 中文 · Русский дөрвөн хэлээр. Frontend-ийн толь бичгийн бүрэн байдлыг тест мөрдүүлдэг — түлхүүр аль нэг хэлэнд дутвал CI унана.

Одоогийн төлөв

Production geregekiosk.mn дээр ажиллаж байна. Суурь платформын чадвар бүрэн өвлөгдсөн; терминалын салбарын онцлог урсгалууд үргэлжлэн нэмэгдэж байна.

Дараагийн алхмууд: gateway-ийн бодит enforcement, чатын streaming (SSE) хариу, nonce-д суурилсан CSP, DB-ийн автомат нөөцлөлт + сэргээлтийн тест, staging орчин.

Холбоотой хуудсууд