Худалдаа-агуулах-нэхэмжлэхийн 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 — нэг хост дээр хоёр бүтээгдэхүүн байх нь байршуулалтын шийдвэр, нэг санд байх нь архитектурын шийдвэр байх байсан бөгөөд тэрийг хийгээгүй.
Дэлгэцүүд нь цөмийн бүрхүүлд (app/module/{products,inventory,billing},
app/pos/). Бүрхүүл нь нэг образ бүх суулгацад үйлчилдэг; хуудас нь эдгээр
модульгүйгээр амьгүй — цэсэнд гарахгүй, API нь 403 хариулна. Шалтгааныг
цөмийн docs/ECOSYSTEM_GIT_STRATEGY.md §2.3-аас.