Demo

ChangeLogService

Business reference (plugin + prefix + number) ပေါ်တွင် လုပ်ဆောင်ချက်မှတ်တမ်း ရေးသားပါသည် — create၊ update၊ reply၊ reaction။ Plugin-local audit feed မဖန်တီးရပါ။

Inject

TSXinject
1import { 2 ChangeLogService, 3 ContainerRegistryManager, 4 Inject, 5 Service, 6} from "@quan-erp/shared-backend-core"; 7 8@Service() 9export class MyPluginService { 10 @Inject(ChangeLogService, ContainerRegistryManager.BUILTIN_PLUGIN) 11 private changeLogService: ChangeLogService; 12}

Reference key

Entry တိုင်းကို အကွက် သုံးခုဖြင့် scope သတ်မှတ်ပါသည်။

  • pluginName — ပုံမှန်အားဖြင့် metadata.name
  • referencePrefix — entity အမျိုးအစား (ဥပမာ "SO", "currency")
  • referenceNumber — record id / code (string)

Write method များ

  • addChangeLog(params) — entry တစ်ခု ထည့်ပါသည်; replyToId ဖြင့် reply; passive: true ဖြင့် parent author သို့ အသိပေးပါသည်
  • addChangeLogs(params) — အစုလိုက် ထည့်သွင်းပါသည်
  • ChangeLogDto — message၊ pluginName၊ referencePrefix၊ referenceNumber မဖြစ်မနေ လိုအပ်ပါသည်
TSXaddChangeLog
1import { 2 ChangeLogService, 3 ContainerRegistryManager, 4 Inject, 5 Service, 6} from "@quan-erp/shared-backend-core"; 7import metadata from "../../module.metadata.json" with { type: "json" }; 8 9@Service() 10export class OrderChangeLogService { 11 @Inject(ChangeLogService, ContainerRegistryManager.BUILTIN_PLUGIN) 12 private changeLogService: ChangeLogService; 13 14 async onCreated(orderId: number, userId?: number) { 15 await this.changeLogService.addChangeLog({ 16 data: { 17 pluginName: metadata.name, 18 referencePrefix: "SO", 19 referenceNumber: String(orderId), 20 message: `Sales order #${orderId} created.`, 21 isCreatedBySystem: !userId, 22 createdBy: userId, 23 metadata: { action: "create" }, 24 }, 25 }); 26 } 27}

Read method

  • getChangeLogs({ pluginName, referencePrefix, referenceNumber, parentId?, skip, limit }) — feed
  • parentId မပေးပါက → root entries; parentId ပေးပါက → ထို entry အောက်ရှိ replies
  • reactions နှင့် replyCount ပါဝင်ပါသည်
TSXgetChangeLogs
1import { 2 ChangeLogService, 3 ContainerRegistryManager, 4 Inject, 5 Service, 6} from "@quan-erp/shared-backend-core"; 7import metadata from "../../module.metadata.json" with { type: "json" }; 8 9@Service() 10export class OrderChangeLogService { 11 @Inject(ChangeLogService, ContainerRegistryManager.BUILTIN_PLUGIN) 12 private changeLogService: ChangeLogService; 13 14 async list(orderId: number) { 15 return this.changeLogService.getChangeLogs({ 16 pluginName: metadata.name, 17 referencePrefix: "SO", 18 referenceNumber: String(orderId), 19 skip: 0, 20 limit: 20, 21 }); 22 } 23}

Reaction method များ

  • addReaction(params) — reaction ထည့်ပါသည်
  • removeReaction({ id, removeByUserId }) — user ၏ reaction ကို ဖယ်ရှားပါသည်

Frontend

Base frontend မှ ChangeLog component / hooks များကို detail စာမျက်နှာတွင် အသုံးပြုရပါသည်။