Demo

Plugin ဖန်တီးခြင်း

အဆုံးမှအဆုံး recipe ဖြစ်ပါသည် — @quan-erp/cli ဖြင့် scaffold လုပ်ပြီး၊ အမည်နှင့် @quan-erp/* ဗားရှင်းများကို ကိုက်ညီအောင် ညှိကာ၊ feature ပထမဆုံး ထည့်သွင်းပြီး၊ watch ဖြင့် available-plugins သို့ ရေးသားကာ၊ base stack တွင် Install လုပ်ရပါသည်။

ပန်းတိုင်

plugins/ အောက်တွင် တည်ဆောက် / ထည့်သွင်း / menu·route မှတ်ပုံတင်နိုင်သော plugin folder တစ်ခု ရရှိရန် ဖြစ်ပါသည်။

  • Folder တစ်ခု — module.metadata.json + backend/ + frontend/
  • Folder အမည် === metadata.name === package identity
  • available-plugins → Install ပြီးနောက် installed-plugins

1. လိုအပ်ချက်များ

Scaffold မလုပ်မီ Quark ERP project နှင့် လည်ပတ်နေသော base stack လိုအပ်ပါသည်။

  • quan-erp new-project ဖြင့် project ဖန်တီးပြီးသား ဖြစ်ရပါမည်
  • @quan-erp/cli — npm i -g @quan-erp/cli
  • Base — quan-erp base:dev
  • Node.js 18+ (20+ LTS ကို အကြံပြုပါသည်)
  • kebab-case အမည် ရွေးချယ်ပါ (ဥပမာ fleet-management)
TSQuick check
quan-erp help quan-erp base:dev # if base is not already up

2. Plugin scaffold

ဗလာ plugin အတွက် CLI ကို အသုံးပြုပါ။ Menu / page / API ပုံစံ လိုအပ်ပါက sample-es ကို ကူးယူပါ။

  • quan-erp new / new-plugin — greenfield အတွက် သင့်လျော်ပါသည်
  • sample-es — IPlugin / register / api / page အကိုးအကား
  • Layout — backend/ + frontend/ + module.metadata.json ထားရှိရပါမည်
TSOption A — quan-erp new
1# From project root 2quan-erp new 3# or: quan-erp new-plugin 4# optional: quan-erp new-plugin --version latest 5# Prompts: name, description, module entry object, version 6# Creates plugins/<name>/{backend,frontend,module.metadata.json}
TSOption B — copy sample-es
cp -R plugins/sample-es plugins/my-plugin # Then rename packages + metadata.name (next section)

3. အမည်များ ကိုက်ညီအောင် ညှိခြင်း (အရေးကြီး)

ဤ string များ မတူညီပါက watch / install / DI အမှားများ ဖြစ်နိုင်ပါသည်။ Scaffold ပြီးတိုင်း စစ်ဆေးရပါမည်။

  • name — API prefix / menu / @Inject အတွက် ထူးခြားသော id
  • pluginVersion — available-plugins/<name>/<version>/
  • requiredBasedVersion — base / @quan-erp/* နှင့် ကိုက်ညီရပါမည်
  • moduleEntryObject — root @Module class အမည်
  • pluginDependencies — အရင် load ရမည့် plugin များ
TSIdentity checklist
1plugins/<name>/ # folder 2module.metadata.json → "name": "<name>" 3backend/package.json → "@quan-erp-plugins/<name>-backend" 4frontend/package.json → "@quan-erp-plugins/<name>-frontend" 5@Module({ name: metadata.name, ... }) # backend root module
JSONmodule.metadata.json
1{ 2 "name": "my-plugin", 3 "type": "", 4 "pluginVersion": "1.0.0", 5 "description": "My first plugin", 6 "moduleEntryObject": "Module", 7 "requiredBasedVersion": "1.0.0", 8 "pluginDependencies": {} 9}

4. @quan-erp/* ဗားရှင်း ကိုက်ညီအောင် ညှိခြင်း

Backend နှင့် frontend ၏ @quan-erp/* မှီခိုမှုများသည် base image / BASE_VERSION နှင့် တူညီရပါမည်။

  • sample-es သို့မဟုတ် အလုပ်လုပ်နေသော plugin မှ ဗားရှင်း pin ကို ကူးယူပါ
  • ဗားရှင်း ပြောင်းလဲပြီးနောက် backend / frontend တွင် npm install လုပ်ပါ
  • မှီခိုမှု ပြောင်းလဲပြီးနောက် quan-erp watch ကို run ပါ
SHInstall deps
cd plugins/my-plugin/backend && npm install cd ../frontend && npm install cd ../../.. # back to project root

5. ပထမဆုံး feature ထည့်သွင်းခြင်း

ပထမ ပြောင်းလဲမှုကို သေးငယ်အောင် ထားရှိပါ — backend တွင် entity + service + controller တစ်ခု၊ frontend တွင် page + api hook + menu/route တို့ ဖြစ်ပါသည်။

  • Backend — IPlugin၊ feature folder၊ entity၊ root @Module
  • Frontend — register(AppRegistry): Axios၊ menu.add၊ route.add
  • API — React Query hooks; page များသည် hook သာ import လုပ်ရပါမည်
  • Table / HTTP path ကို plugin အမည်ဖြင့် namespace လုပ်ရပါမည်
  • အခြား plugin ၏ src/ ကို import မလုပ်ရပါ

6. quan-erp watch ဖြင့် တည်ဆောက်ခြင်း

Project root မှ watch က backend + frontend ကို base/available-plugins/<name>/<version>/ သို့ compile လုပ်ပါသည်။

  • Argument သည် plugins/ အောက်ရှိ folder အမည် ဖြစ်ပါသည်
  • available-plugins တွင် backend/ frontend/ metadata ရှိမရှိ စစ်ဆေးပါ
  • Install ပြီးသား ဖြစ်ပါက watch က installed မိတ္တူကိုလည်း refresh လုပ်ပါသည်
TSTerminal
quan-erp watch my-plugin # one-shot production build quan-erp build:prod my-plugin

7. ERP UI မှ Install

Watch က available-plugins သို့သာ ထားရှိပါသည်။ Shell က installed-plugins ကို တင်သွင်းပါသည်။

  • Modules UI မှ Install လုပ်ပါ
  • installed-plugins/<name>/ ရှိမရှိ စစ်ဆေးပါ
  • Browser ကို hard-refresh လုပ်ပြီး menu/route ကို စစ်ဆေးပါ
  • မပေါ်ပါက Troubleshooting → frontend not loaded ကို ကြည့်ပါ