Từ điển thuật ngữ
Các thuật ngữ dùng xuyên suốt wiki. Giữ tên tiếng Anh như trong code, kèm giải thích tiếng Việt ngắn gọn. Nhóm theo chủ đề.
Nền tảng (Platform)
| Thuật ngữ | Nghĩa |
|---|---|
| EntityEvent | "Sự kiện nghiệp vụ" — một thông điệp báo rằng có một entity vừa thay đổi (tạo/sửa/xóa). Là xương sống event-driven của hệ thống. |
| EntityType | Loại entity (Account, Attendee, Invoice, Employee…), mỗi loại có một id số. |
| EventType / EntityActionType | Loại hành động trên entity (Create_Account, Update_Employee…), cũng có id số. |
| EventTypeId | Khóa định tuyến: worker dựa vào nó để biết event này cần xử lý ra sao. |
| entity-event-queue | Hàng đợi (Azure Queue) chứa các EntityEvent chờ worker xử lý. |
| Worker | Tiến trình chạy nền, đọc queue và xử lý (không phải request HTTP của người dùng). |
| Post-processor | Thành phần ở worker chạy "side effect" sau khi route event (sinh notification, sinh history…). Mỗi concern một post-processor độc lập. |
| Mapping registry | Tập các "mapping" nhỏ đăng ký sẵn; mỗi mapping quyết định một loại event có sinh ra notification/history hay không. |
| Idempotent | "Chạy nhiều lần cũng cho cùng kết quả". Quan trọng vì queue là at-least-once (có thể giao 1 event nhiều lần). |
| at-least-once | Đảm bảo giao ít nhất một lần — nên có thể bị lặp; hệ thống phải tự chống trùng. |
| Deterministic key | Khóa suy ra từ danh tính sự kiện (không random). Cùng sự kiện → cùng khóa → chống tạo bản ghi trùng. |
Communication (gửi tin)
| Thuật ngữ | Nghĩa |
|---|---|
| NotificationJob | "Một việc cần gửi thông báo" — bản ghi mô tả notification cần tạo (lưu ở Azure Table). Chưa phải email đã gửi. |
| NotificationScheduler | Hàng đợi (SQL) báo "có notification sẵn sàng để xử lý". |
| NotificationJobFactory | Nơi duy nhất được phép tạo NotificationJob, đảm bảo định dạng đồng nhất. |
| Scheduler → Generator → Distributor | Pipeline gửi 3 bước: chọn việc → render nội dung → gửi thật (email/push/SMS). |
| OutgoingMessage | Một bản ghi "tin gửi ra" cho **mỗi người nhận, mỗi kênh"; mang trạng thái gửi (Sent/Failed…). |
| UserMessage | Tin nhắn trong ứng dụng (in-app), một bản ghi cho mỗi người nhận. |
| MessagingJob | Điều phối payload lớn của campaign/report (SQL + Blob). |
| Campaign | Chiến dịch gửi hàng loạt tới nhiều người nhận. |
| Webhook & Tracker | Cập nhật trạng thái gửi (delivered/bounce) từ nhà cung cấp (SendGrid/Twilio) về OutgoingMessage. |
| Template | Mẫu nội dung có placeholder ({{...}}) được điền dữ liệu lúc render. |
History (lịch sử)
| Thuật ngữ | Nghĩa |
|---|---|
| EntityHistory | Bảng/projection ghi lại lịch sử thay đổi của entity (audit timeline hiển thị cho người dùng). |
| EntityEventLog | Audit thô của event — khác EntityHistory (khác bảng, khác đường đọc). |
| BookingHistory | Lịch sử riêng cho booking, không gộp vào EntityHistory. |
| HistoryEventKey | Khóa tất định (RowKey) cho dòng history do worker tạo → chống trùng khi retry. |
Subscription (đăng ký & thanh toán định kỳ)
| Thuật ngữ | Nghĩa |
|---|---|
| Subscription | "Gói đăng ký" — template sản phẩm: giá, lịch học, điều kiện booking. Có 2 loại: BookingAndBilling và BillingOnly. |
| Enrollment | "Ghi danh" — một khách hàng/attendee đăng ký vào một subscription; mang trạng thái runtime (Submitted/Approved/Confirmed…). |
| ConsumerEnrollment | API/luồng phía khách hàng cho enrollment & booking subscription. |
| BillingSchedule | Lịch thanh toán: các kỳ (period) cùng ngày bắt đầu/kết thúc và số tiền. |
| EnrollmentBillingSchedule | Lịch thanh toán đã được book cho một enrollment cụ thể (khác với lịch "khả dụng" của subscription term). |
| Invoice | Hóa đơn sinh ra theo lịch; có vòng trạng thái (Initialised → Generated → Approved…). |
| InvoiceScheduler | Bản ghi lên lịch xử lý một invoice (vd thời điểm phát hành). |
| Skip | Bỏ qua một kỳ thanh toán; reset invoice về Initialised và hủy lịch đang chạy. |
| Add-on / Discount | Dịch vụ thêm / giảm giá áp theo từng kỳ (period) của enrollment. |
| Term | "Kỳ học" (học kỳ); subscription được link tới term. |
| TermBooking / TermBookingOrder | Booking suất học trong một term (luồng booking "normal", khác subscription). Xem Booking. |
Booking (normal booking)
| Thuật ngữ | Nghĩa |
|---|---|
| TermBookingOrder | Yêu cầu booking đang xử lý (request/giỏ hàng); có vòng trạng thái Created→Submitted→… |
| TermBooking | Booking đã confirm (runtime chính thức); confirm copy line/extra/discount từ order. |
| ConsumerBooking | API/luồng phía khách cho normal booking (khác ConsumerEnrollment của subscription). |
| Discount rule | Quy tắc giảm giá tự động (sibling, early bird, attendee, profile); chồng theo Highest/HighestEachType. |
| CombinedBookingOption | Cấu hình ở ProgramCategory: gộp booking cùng ActionLogId xuyên course để edit chung. |
| ActionLogId | Khóa nhóm các booking đặt cùng một thao tác (dùng cho combined edit). |
| Quote / Accept | Thay vì confirm ngay: sinh quote (Quote) → khách accept (Accept) → confirm. |
| Billing Difference | Modal review chênh lệch tài chính, gate confirm khi edit booking đã confirm. |
| TermAttendance | Bản ghi điểm danh sinh khi confirm; deactivate khi cancel/remove. |
Finance (billing, invoice, accounting)
| Thuật ngữ | Nghĩa |
|---|---|
| Billing | Context tính tiền sinh từ Booking/Subscription; sở hữu payment option, split context và dữ liệu chuẩn bị invoice. |
| BillingPeriod | Kỳ/giai đoạn tài chính dùng để nhóm line, đặc biệt trong subscription billing schedule. |
| Invoice | Chứng từ phải thu gửi cho account/customer, gồm header, line, status, lock và scheduler. |
| CreditNote | Chứng từ điều chỉnh âm/hoàn giảm để cân bằng invoice khi cancel/edit hoặc giảm nghĩa vụ tài chính. |
| FinanceTransaction | Projection/read model phục vụ invoice manager, search, booking-number sync và đối soát. |
| InvoiceManager | Bề mặt admin để lọc, xem, lock và xử lý invoice/finance transaction. |
| Preview Billing Difference | Tính thử chênh lệch invoice/credit note khi edit booking đã confirm; không ghi DB. |
| Xero sync | Luồng đồng bộ chứng từ tài chính sang provider kế toán ngoài. |
| SubsidyAcceptance | Bản ghi trợ cấp hợp lệ theo attendee/date range; dùng cho eligibility và finance/payment context. |
Payment
| Thuật ngữ | Nghĩa |
|---|---|
| PaymentOption | Lựa chọn thanh toán nghiệp vụ/customer thấy: PayLater, PayNow, Direct Debit, Deposit... |
| PayLater | Cho flow tiếp tục với nghĩa vụ thanh toán xử lý sau hoặc pending. |
| PayNow | Thanh toán ngay qua card/checkout provider. |
| Windcave | Provider checkout/card, dùng redirect/result/webhook để cập nhật trạng thái. |
| DirectDebit | Thu tiền tự động qua customer token và batch debit. |
| Kiwi Direct Debit | Provider/luồng direct debit có customer create, BU scoping và provider sync riêng. |
| Deposit | Khoản trả trước một phần cho booking; không đồng nghĩa invoice đã paid full. |
| DirectPaymentBatch | Nhóm provider transaction/direct payment, gồm status, provider reference và retry/error. |
| AccountPaymentCustomer | Payment customer token theo account + BU + provider; phải scope theo BU. |
Master Data
| Thuật ngữ | Nghĩa |
|---|---|
| Enterprise | Tổ chức cấp cao, sở hữu custom URL và policy service area cấp enterprise. |
| BusinessUnit (BU) | Ranh giới dữ liệu/cấu hình chính của AIMY. |
| Org / Site | Cơ sở/site thuộc BU, nơi chương trình/session vận hành. |
| Account | Tài khoản gia đình/customer account; không sở hữu avatar. |
| Account Holder | Contact đại diện account; avatar/profile image thuộc Contact.ProfileImage. |
| Attendee | Trẻ/người tham gia được Booking/Subscription/Finance/Incident tham chiếu. |
| ProgramCategory | Loại chương trình như Term Care, Holiday, Class, Camp. |
| TermProgramSet (TPS) | Offering/course trong một term, giữ lịch, capacity và pricing context. |
| TermProduct | Session/slot cụ thể mà user chọn khi booking hoặc schedule tham chiếu. |
| System image | Ảnh/avatar built-in hoặc uploaded, chịu crop policy theo loại field. |
Staff (nhân sự)
| Thuật ngữ | Nghĩa |
|---|---|
| Roster | Lịch làm việc của nhân viên (theo tuần). |
| Leave | Nghỉ phép; có loại, có vòng duyệt (request → approve). |
| Timetable | Thời khóa biểu của staff. |
| TrackingCode | Mã phân loại; có TypeId Leave hoặc Shift. Form leave chỉ hiện code loại Leave. |
| Availability | Khả dụng/lịch rảnh của staff (tab trong hồ sơ). |
Incident Management
| Thuật ngữ | Nghĩa |
|---|---|
| Incident / Accident / Illness | Ba loại báo cáo sự việc; trong code là FormTypeId 101/102/103. |
| IncidentFormInstance | Cách gọi aggregate của một FormInstance có FormCategoryId = IncidentManagement. |
| Affected attendee | Attendee bị ảnh hưởng bởi incident, có role, ghi chú và body marker riêng. |
| Body marker | Dữ liệu đánh dấu vị trí trên cơ thể trong report, lưu dạng JSON. |
| GeneratedAttachment | PDF report do hệ thống sinh từ Reporting service, lưu Blob và có thể gắn vào acknowledgement. |
| FormAcknowledgement | Bản ghi customer contact cần nhận thông báo, acknowledge hoặc ký xác nhận. |
| NotificationOnly | Loại acknowledgement chỉ để gửi tin, không yêu cầu customer submit acknowledgement/signature. |
Chung
| Thuật ngữ | Nghĩa |
|---|---|
| BusinessUnit (BU) | Đơn vị kinh doanh — ranh giới phân tách dữ liệu/cấu hình (mỗi BU có settings riêng). |
| Site | Cơ sở/địa điểm thuộc BU. |
| Aggregate | Cụm entity được xử lý như một khối nhất quán (vd Enrollment, TermBooking). |
| Azure Table / Blob | Kho lưu trữ key-value (Table) và file lớn (Blob) của Azure; dùng song song với SQL. |
| PartitionKey / RowKey | Cặp khóa của một dòng trong Azure Table; quyết định cách phân vùng và tra cứu. |