github.com/gerege-systems/business-gerege-nexus

Gerege Nexus — Commerce distribution: бүтээгдэхүүн, нөөц, нэхэмжлэх, e-Barimt


Install
go get github.com/gerege-systems/business-gerege-nexus

Documentation

Gerege Business

Худалдаа-агуулах-нэхэмжлэхийн distribution: харилцагч, бүтээгдэхүүн, нөөц, нэхэмжлэх ба e-Barimt.

Энэ репо commerce-gerege-nexus нэртэй байснаа 2026-08-16-нд business-gerege-nexus болов. Бүтээгдэхүүний нэр нь Gerege Business, домэйн нь business.gerege.mn. Модулиудын ID (io.gerege.nexus.products г.м.) өөрчлөгдөөгүй — ID бол суулгацын мөр, каталогийн манифест, цэсний түлхүүр бүрийн барьдаг зүйл бөгөөд бүтээгдэхүүний нэр солигдсоноос болж өөрчлөгдөх ёсгүй.

Nexus платформ-ыг хамаарал болгон авдаг — go.mod-ын нэг мөр. Цөмийн код энд нэг ч мөр байхгүй.

main.go               платформыг асаахдаа гурван модулиа бүртгэнэ
modules/products/     бүтээгдэхүүний бүртгэл
modules/inventory/    агуулах, нөөц, хөдөлгөөн
modules/billing/      нэхэмжлэх, НӨАТ, e-Barimt
migrations/           энэ бүтээгдэхүүний схем, өөрийн goose хүснэгттэй
catalog/              манифестууд

Салгалт яагаад хамгийн сүүлд байсан бэ

Төлөвлөгөө contacts ба products хоорондын FK-г шалтгаан гэж бичсэн боловч хэмжихэд тийм FK байгаагүй: billing нь contact_name мөр хадгалдаг, гадаад түлхүүр биш. Жинхэнэ саад нь миграцын түүхийн орооцолдоон байв — платформын 00003 нь энэ бүтээгдэхүүний хүснэгтүүдийг contacts-тай нэг файлдаа, 00004 нь billing_invoices-ийг sessions, oauth2_clients-тай хамт үүсгэдэг. Хэрэглэгдсэн миграцыг буцаан бичих боломжгүй тул хүснэгтүүд энд дахин зарлагдсан; эх файлууд платформын түүхэнд байрандаа үлдэв. Дэлгэрэнгүйг migrations/00001_commerce.sql-ийн толгойгоос.

Хөгжүүлэлт

go build ./...
go test -race ./...

Байршуулалт

deploy/ — өөрийн образ ба compose стек. Шаардлага гарсан үед л нэмэгдсэн; өмнө нь энд "хэрэгтэй болоход нэмнэ" гэж бичээтэй байв.

deploy/Dockerfile           бүтээгдэхүүний binary + цөмийн migrate + миграцууд
deploy/docker-compose.yml   postgres, хоёр миграц, backend, бүрхүүл

Хоёр миграцын түүх, нэг санд. Цөмийнх (/app/db/migrations) ба энэ бүтээгдэхүүнийх (/app/db/commerce, MIGRATIONS_TABLE=goose_db_version_commerce). MIGRATIONS_TABLE сонголт биш: goose нэг хүснэгтэд нэг мөр бичдэг тул хоёулангийнх нь 00001 нэг мөр болно.

Каталог нь энэ binary ажиллуулж чадах бүхнийг жагсаана: цөмийн аппууд (pin хийсэн хувилбараар нь) ба энэ бүтээгдэхүүний дөрөв. Платформ өөрийн компилдсэн модулиудтай зөрчилдсөн каталог дээр асахаа болино — тиймээс catalog_test.go энэ репогийн дөрвийг барина; цөмийнхийг цөм өөрөө асахдаа шалгана. Цөмийг bump хийхдээ catalog/apps.json болон catalog/manifests/ доторх цөмийн аппуудыг тэр release-ийнхтэй тааруулах нь bump-ийн нэг хэсэг.

Портууд (App Store-той нэг хостод): postgres 5437, backend 8088, бүрхүүл 3016. Тусдаа сан, тусдаа volume, тусдаа nginx server block — нэг хост дээр хоёр бүтээгдэхүүн байх нь байршуулалтын шийдвэр, нэг санд байх нь архитектурын шийдвэр байх байсан бөгөөд тэрийг хийгээгүй.

Frontend

Дэлгэцүүд нь цөмийн бүрхүүлд (app/module/{products,inventory,billing}, app/pos/). Бүрхүүл нь нэг образ бүх суулгацад үйлчилдэг; хуудас нь эдгээр модульгүйгээр амьгүй — цэсэнд гарахгүй, API нь 403 хариулна. Шалтгааныг цөмийн docs/ECOSYSTEM_GIT_STRATEGY.md §2.3-аас.