ЦЗ Цахим Засаг
GitHub Нэвтрэх

POS ба хошууны драйвер

Эх сурвалж: FUELNET_PLAN.md §6 · Төлөв: төлөвлөгдсөн (Фаз 1) — сервер тал нь modules/forecourt-д аль хэдийн байна

Хошууны заалт байхгүй бол нөөц бодит биш, ваучер баталгаагүй, хяналт таамаг болно. Тиймээс POS бол платформын гоёл биш, суурь.

Яагаад өөрийн POS вэ

Монголын ШТС-ууд өнөөдөр дөрвөн янзын байдалтай. Дараах хуваарилалт нь Фаз 0-ийн техникийн тооллогоор баталгаажих таамаг:

ШТС-уудын дөрвөн ангилал A ангилал 20 хувь, B 25 хувь, C 35 хувь, D 20 хувь. C ба D нь талаас илүү хувийг эзэлдэг тул FuelNet-ийн өөрийн POS шаардлагатай. A · 20% B · 25% C · 35% D · 20% орчин үеийн POS хаалттай controller цахим, гар бичилт механик, интернэтгүй C + D = 55% — өөрийн POS-гүйгээр хамрагдахгүй
A-д интеграц, B-д гүүр, C-д FuelNet POS, D-д хөнгөн POS + импульс тоолуур.
Төлөв FuelNet-ийн хандлага
A. Орчин үеийн POS + forecourt controller (том сүлжээ) Интеграц — POS-ыг нь хэвээр үлдээж, API-аар өгөгдөл авна
B. Хуучин POS, controller-тэй ч хаалттай Гүүр — controller-т зэрэгцээ холбогдоно, эсвэл POS-ыг солино
C. Түгээгүүр цахим, гэхдээ зөвхөн гараар бичдэг FuelNet POS суулгана — гол зорилтот бүлэг
D. Механик/маш хуучин, интернэтгүй Хөнгөн POS + импульс тоолуур, офлайн горим

Бүх нийтийн хошууны адаптер

Гол дизайны шийдэл: цөм нь ганц дотоод интерфейстэй, брэнд бүр драйвер болно. Шинэ брэнд нэмэх нь нэг файл; цөм өөрчлөгдөхгүй.

Драйверын архитектур FuelNet POS нь pump.Driver интерфейсээр IFSF, брэндийн хувийн протокол, импульс тоолуурын гэсэн гурван бүлэг драйвертай холбогдоно. FuelNet POS — нэг binary ээлж · гүйлгээ · ваучер · e-Barimt · үнэ · тайлан pump.Driver интерфейс IFSF драйвер LON · TCP/IP Брэндийн протокол хувийн, зарим нь лицензтэй Импульс / тоолуур RS-485 · GPIO · гар оруулалт Gilbarco PSS · Doms PSS 5000 Scheidt & Bachmann Wayne DART · Tokheim UDC/TQC Tatsuno PDE · Censtar · Sanki Optical counter D бүлгийн ШТС
Физик давхарга нь RS-485/422/232, current loop, LON, Ethernet. Ирмэгийн төхөөрөмж эдгээрийг USB-serial болон LON-оор авч, MQTT/gRPC-ээр сервер рүү илгээнэ.

pump.Driver интерфейс

package pump

// Driver — түгээгүүрийн аль ч брэнд, аль ч протоколыг нэг хэлбэрт оруулна.
type Driver interface {
	Open(ctx context.Context, cfg Config) error
	Close() error

	// Төлөв — сул / эрх хүлээж буй / түгээж буй / дууссан / алдаатай
	Status(ctx context.Context, n NozzleID) (Status, error)

	// Эрх олгох. Ваучерийн лимитийг тоо хэмжээ эсвэл дүнгээр ХАТУУ тавина.
	Authorize(ctx context.Context, n NozzleID, limit Limit) (AuthID, error)
	Cancel(ctx context.Context, a AuthID) error

	// Явцын урсгал — дүрслэлд ба залилан илрүүлэлтэд
	Progress(ctx context.Context, a AuthID) (<-chan Delivery, error)

	// Дууссан гүйлгээ. POS унасан ч дараа нь эндээс сэргээж болно.
	Transactions(ctx context.Context, since Seq) ([]Transaction, error)

	// Тоолуурын нийт заалт — ээлжийн тулгалт ба reconciliation-ийн үндэс
	Totalizers(ctx context.Context) (map[NozzleID]Totalizer, error)

	// Үнийн самбар / хошууны үнийг алсаас солих (боломжтой бол)
	SetPrice(ctx context.Context, n NozzleID, p Money) error
}

Authorize нь лимитийг түгээгүүрт тавьдаг нь чухал: кассын мэдэглэлээр барьсан лимит бол лимит биш, зөвлөмж.

Хэрэгжүүлэлтийн дараалал

Ээлж Драйвер Шалтгаан
1 IFSF (LON + TCP/IP) Олон улсын стандарт, нэг драйвераар олон брэнд
2 Импульс/тоолуур + гар оруулалт D бүлгийг хамруулна — хамгийн олон, хамгийн хэрэгцээтэй
3 Gilbarco Two-Wire/CL, Wayne DART Монголд түгээмэл
4 Tokheim UDC/TQC, Tatsuno PDE Түгээмэл
5 Censtar, Sanki, Zcheng, Tokico Сүүлийн жилүүдэд шинээр суурилуулагдсан
6 Adast, Petrotec, Hectronic, Salzkotten, Nuovo Pignone Ховор, захиалгаар

Хууль зүйн анхаарал: зарим протокол (Gilbarco Two-Wire, Wayne DART) нь үйлдвэрлэгчийн өмч, NDA/лицензтэй. Хоёр зам: лиценз гэрээ байгуулах, эсвэл IFSF-д хөрвүүлдэг gateway (Doms PSS 5000 гэх мэт) ашиглах. Фаз 0-д хууль зүйн шалгалт заавал.

ATG — савны хэмжигчийн драйверууд

Ижил зарчмаар tank.Driver:

Брэнд / протокол Тэмдэглэл
Veeder-Root TLS-350 / TLS-450 (Serial + TCP) Дэлхийд хамгийн түгээмэл
Start Italiana SMT / Sensor Европ
Franklin Fueling (INCON) TS-5
OPW SiteSentinel
Modbus RTU/TCP (ерөнхий) Хятад, дотоодын хэмжигч
Гар хэмжилт (метршток) ATG-гүй ШТС-д ээлж тутам заавал

Савны түвшин нь 15°C-т шилжүүлэгдэж бүртгэгддэг. Монголын +35…−40°C-ийн далайцад ажиглалтын литрээр тооцвол улирал өөрөө 1–2% "хиймэл алдагдал" үүсгэж, бодит хулгайг дотроо нууна.

POS-ын чадамж

Түлшний хэсэг — хошуу бүрийн бодит цагийн төлөв, эрх олгох/цуцлах; prepay/postpay/бүрэн бак; ваучер уншиж лимитийг түгээгүүрт хатуу тавих; ээлж нээх/хаах, тоолуурын заалт, кассын тулгалт, зөрүүний тайлбар; савны үлдэгдэл, ус, дуусах прогноз; үнийн өөрчлөлт төвөөс, түүхтэй.

Худалдааны хэсэг — дэлгүүр, кофе, угаалга, тос. Шинээр бичихгүй: products + inventory + billing нь Gerege Business-аас хамаарлаар ирдэг.

Ажиллагааны шинж — офлайн эхлэл (интернэтгүй 72 цаг бүрэн ажиллана, локал SQLite, холбогдмогц sync); хямд төхөөрөмж (Android таблет эсвэл ямар ч x86 миникомпьютер); монгол хэл, том товч, бээлийтэй ажиллах UI (−30°C-т); бүх гүйлгээ hash chain-д.

Ирмэгийн агент

edge/ нь тусдаа binary — ШТС дээрх жижиг Linux төхөөрөмж эсвэл Android таблет дээр ажиллана. Сервертэй gRPC/MQTT-ээр ярина, тасарвал локал SQLite-д хуримтлуулж, холбогдмогц идемпотентоор нөхнө. POS-ын UI нь тэр агент дээрх локал вэб сервер (PWA) — интернэт байхгүй ч ажиллана.

Энэ репогийн /api/v1/fuelnet/forecourt нь түүний сервер тал: станц, сав, хошуу, ээлж, гинжлэгдсэн түгээлтийн бүртгэл, савны заалт, дохиолол.

ШТС-д ямар ашигтай вэ

Албадлага ганцаараа ажиллахгүй, тиймээс POS нь ШТС-д бодит ашиг өгөх ёстой:

  1. Ваучерийн урсгал → хэрэглэгч (хямралын үед хамгийн том хөшүүрэг)
  2. Ээлжийн тулгалт автомат → ажилчны хулгай багасна (ихэвчлэн 0.3–1% эргэлт)
  3. Савны дуусах прогноз → хоосон зогсох цаг багасна
  4. e-Barimt автомат → нягтлан бодох цаг хэмнэнэ
  5. Үнэ төлбөргүй эсвэл хамгийн бага — ТХТ-ийн санхүүжилтээр
  6. Олон салбарын нэгдсэн тайлан → сүлжээний эздэд