1. Requirement Summary
ระบบ Dynamics 369 Sales & Margin Intelligence Enterprise Platform ได้รับการออกแบบและพัฒนาขึ้นเพื่อทำหน้าที่เป็นศูนย์กลางการบริหารจัดการยอดขาย (Sales Orders), คำนวณต้นทุนสินค้าตามมาตรฐาน (Standard Cost %), วิเคราะห์ผลกำไรขั้นต้น (Gross Margin), และประมวลผลจ่ายเงินรางวัลค่าคอมมิชชั่นพนักงานขายประจำ 10 สาขาหลักทั่วประเทศแบบอัตโนมัติ Real-Time พร้อมกลไกควบคุมการอนุมัติและล็อคข้อมูล (Strict Transaction Lock) และระบบความปลอดภัยระดับสถาบันการเงิน (Multi-Tier RBAC & Audit Trail).
Cost = Price * (Standard Cost % / 100)• กำไรขั้นต้นต่อหน่วย:
Margin = Price - Cost• ยอดรวมบิล (Header) สรุปจากผลรวม Line Items เสมอ
• สูตรคำนวณ:
Commission = Total Margin * (Rate % / 100)• รองรับเรทแยกตามพนักงานขายแต่ละบุคคล (3% - 8%)
APPROVED)• บิลขายทั้งหมดของพนักงานท่านนั้นจะถูก ล็อคห้ามแก้ไขหรือลบ (Freeze) ทันที
• ป้องกันการทุจริตและการเปลี่ยนแปลงตัวเลขย้อนหลัง
• บันทึกประวัติการกระทำ (Audit Log) พร้อม IP Address ทุกขั้นตอน
• ระบบจัดการ Active Sessions และ Force Logout
sales_transactions) และรายการสินค้าแต่ละชิ้น (sales_transaction_items) รองรับการซื้อสินค้าหลายรายการใน 1 ใบเสร็จ• FR-1.2 Line Items Drilldown: ผู้ใช้สามารถคลิกดูรายละเอียดสินค้า จำนวน ราคาต่อหน่วย ต้นทุนมาตรฐาน และ Margin ของแต่ละบิลได้ทันที
• FR-1.3 Manual Sales Entry Modal: รองรับการบันทึกบิลขายสดผ่านหน้าต่าง Modal พร้อมระบบคำนวณและตรวจสอบข้อมูลก่อนบันทึก
• FR-1.4 Sales Export: รองรับการส่งออกข้อมูลบิลขายทั้งหมดเป็นไฟล์ Excel (.xlsx) และ CSV
• FR-2.2 Gross Margin Calculation: คำนวณกำไรขั้นต้นระดับรายการสินค้า
Margin = Amount - (Amount * Cost% / 100)• FR-2.3 Automatic Header Aggregation: ยอดขายรวม (Total Amount), ต้นทุนรวม (Total Cost), และกำไรขั้นต้นรวม (Total Margin) ของบิลจะถูกสรุปผลรวมจาก Line Items อย่างถูกต้องแม่นยำ
• FR-3.2 Salesperson Master Validation: ระบบจะตรวจสอบชื่อ/รหัสพนักงานขายในไฟล์กับฐานข้อมูล หากไม่พบพนักงานจะระงับการนำเข้าและแสดงข้อความแจ้งเตือนทันที
• FR-3.3 Deduplication Guarantee: ตรวจจับเลขที่บิลซ้ำซ้อน (Duplicate Invoice Numbers) ทั้งในไฟล์และที่มีอยู่ในฐานข้อมูล เพื่อป้องกันการบันทึกยอดซ้ำ
• FR-3.4 Data Staging Preview: แสดงตารางจำลองผลลัพธ์การนำเข้าพร้อมสถานะ
VALID / INVALID ก่อนกดยืนยันบันทึกจริง (Commit to Production D1)
• FR-4.2 Review Sales Modal: ผู้จัดการสามารถกดปุ่ม [ตรวจสอบบิล] เพื่อดูรายละเอียดบิลขายทั้งหมดที่นำมาคิดคอมมิชชั่นก่อนตัดสินใจอนุมัติ
• FR-4.3 Strict Transaction Lock: เมื่อกดอนุมัติ (Status =
APPROVED) ระบบจะทำการล็อคบิลขายทั้งหมดในงวดนั้นทันที (Locked = True) ไม่อนุญาตให้แก้ไขหรือลบ• FR-4.4 Non-Merging Integrity: หากมีการนำเข้าบิลขายใหม่หลังจากที่งวดเดิมได้รับการอนุมัติแล้ว บิลใหม่จะถูกแยกเป็นงวดรอดำเนินการ (
PENDING_APPROVAL) ใหม่โดยไม่ปะปนกับงวดที่อนุมัติแล้ว
• FR-5.2 Dynamic Period Filter: ตัวกรองอัจฉริยะเลือกดูผลงานรายปี (Year) และรายเดือน (Month) หรือเลือกกรองเฉพาะสาขา/พนักงานได้แบบ Multi-Select
• FR-5.3 3-Dimensional Top 10 Leaderboards: กระดานจัดอันดับ Top 10 พนักงานขาย, Top 10 สาขา และ Top 10 สินค้ายอดนิยมทำกำไรสูงสุด
• FR-5.4 Branch Report & Executive Statement: รายงานเปรียบเทียบ Target vs Actual ของ 10 สาขาหลัก พร้อมหน้ารายงานสำหรับสั่งพิมพ์ PDF
• FR-5.5 Sales Report & 3-Party Sign-off: รายงานสรุปผลงานรายบุคคล พร้อมหลอดแสดง % Achievement และช่องลงนามอนุมัติ 3 ฝ่าย (ผู้จัดทำ, ผู้จัดการฝ่ายขาย, ผู้บริหาร)
• FR-6.2 Sales Staff Master & Rates: จัดการข้อมูลพนักงานขาย ผูกสังกัดสาขา และกำหนดอัตราคอมมิชชั่นรายบุคคล
• FR-6.3 Thailand Geography & Address: ฐานข้อมูล 77 จังหวัด อำเภอ ตำบล และรหัสไปรษณีย์ สำหรับผูกกับที่ตั้งสาขา
• FR-6.4 Item Master & Standard Cost %: กำหนดข้อมูลสินค้า 20 รายการ, ราคาขายมาตรฐาน, และอัตราต้นทุนมาตรฐาน
• FR-6.5 Categories & Units: บริหารจัดการหมวดหมู่สินค้า (Skincare, Makeup, Perfume) และหน่วยนับ (Piece, Bottle, Pack)
• FR-7.2 Session & IP Security Monitor: ตรวจสอบผู้ใช้ออนไลน์แบบเรียลไทม์ พร้อมแสดงหมายเลข IP Address, Browser User Agent และปุ่ม Force Terminate
• FR-7.3 System Audit Trail: บันทึกประวัติการใช้งานแบบวินาทีต่อวินาที (Timestamp, User, Action, Entity, JSON Details) สำหรับตรวจสอบย้อนหลัง 100%
• FR-7.4 SQL Query Console: หน้าต่างรันคำสั่ง SQL Query กับฐานข้อมูล Cloudflare D1 โดยตรง พร้อมปุ่ม Export ผลลัพธ์เป็น JSON/CSV
• FR-7.5 1-Click Transaction & Audit Wipe Tool: เครื่องมือล้างข้อมูลธุรกรรมทดสอบในคลิกเดียวสำหรับ Admin เพื่อเตรียมระบบให้พร้อมสำหรับข้อมูลจริง
• FR-7.6 Interactive ERD Viewer: แผนผังความสัมพันธ์ของทั้ง 15 ตารางในฐานข้อมูลแบบ Interactive Dynamic Graph
| เมนูในระบบจริง (System Sidebar Menu) | ADMIN | SALES_MANAGER | SALES | EXECUTIVE |
|---|---|---|---|---|
| 1. Sales & Operations | ||||
| • Dashboard | ✅ Full Access | ✅ Full Access | ✅ Full Access | ✅ Full Access |
| • Sales orders | ✅ All Branches | ✅ All Branches | ⚠️ Own Branch / Rep | ❌ Read Only |
| • Import Sales orders | ✅ Allow Import | ✅ Allow Import | ✅ Allow Import | ❌ Denied |
| • Approve Commission | ✅ Review & Approve | ✅ Review & Approve | ❌ Denied | ❌ Denied |
| • Branch Report | ✅ Full View | ✅ Full View | ❌ Denied | ✅ Full View |
| • Sales Report | ✅ Full View | ✅ Full View | ❌ Denied | ✅ Full View |
| 2. Master Data Management | ||||
| • Branch | ✅ Full CRUD | ✅ View & Target | ❌ Read Only | ❌ Read Only |
| • Sales Staff | ✅ Full CRUD | ✅ View & Rate % | ❌ Read Only | ❌ Read Only |
| • Address | ✅ Full CRUD | ✅ View | ❌ Read Only | ❌ Read Only |
| 3. Inventory | ||||
| • Item Master | ✅ Full CRUD & Cost % | ✅ View Price & Cost | ❌ Read Only | ❌ Read Only |
| • Item Category | ✅ Full CRUD | ✅ View | ❌ Read Only | ❌ Read Only |
| • Unit of measure | ✅ Full CRUD | ✅ View | ❌ Read Only | ❌ Read Only |
| 4. Security & Administration | ||||
| • User | ✅ Full Admin | ❌ Denied | ❌ Denied | ❌ Denied |
| • Role | ✅ Full Admin | ❌ Denied | ❌ Denied | ❌ Denied |
| • Session & IP Monitor | ✅ Full Admin | ❌ Denied | ❌ Denied | ❌ Denied |
| • System Audit Trail | ✅ Full Admin | ❌ Denied | ❌ Denied | ❌ Denied |
| • SQL Query Console | ✅ Full Admin | ❌ Denied | ❌ Denied | ❌ Denied |
| 5. Architecture & Documentation | ||||
| • Interactive ERD Viewer | ✅ Admin Only | ❌ Denied | ❌ Denied | ❌ Denied |
| • System Documentation & Manual | ✅ Admin Only | ❌ Denied | ❌ Denied | ❌ Denied |
ระบบ Dynamics 369 Sales & Margin Intelligence Platform ถูกออกแบบด้วยสถาปัตยกรรม Modern Serverless Cloud Architecture แบบ 5-Tier ผสานรวม 6 Micro-Engines อัจฉริยะ และระบบจัดเก็บข้อมูลแบบ Dual-Store (Cloudflare D1 SQL + LocalStorage Reactive Cache) เพื่อรับประกันความเร็วระดับ Edge Computing (Latency < 50ms) และความปลอดภัยระดับ Zero-Trust:
แผนภาพผังสถาปัตยกรรมและทราฟฟิกข้อมูล 5 เลเยอร์ (5-Tier Architecture Topology)
sequenceDiagram
autonumber
participant UI as Tier 1: Client SPA Layer (Browser UI)
participant CDN as Tier 2: Cloudflare Edge CDN (300+ PoPs)
participant API as Tier 3: Cloudflare Worker API Gateway
participant Engine as Tier 4: Core Business Logic Engines
participant DB as Tier 5: Cloudflare D1 SQL Database
participant Local as Tier 1.5: LocalStorage Fallback Store
Note over UI,Local: 1. การส่งคำขอและการเข้าถึงหน้าเว็บ (Static Assets Delivery)
UI->>CDN: ส่งคำขอ HTTPS Request เพื่อโหลดหน้าเว็บและ Assets
CDN-->>UI: ส่งคืน Static Bundle (HTML5, Vanilla CSS, ES6 JS) ด้วยความเร็ว Edge Caching
Note over UI,DB: 2. การประมวลผลธุรกรรมและ API (Dynamic Data Processing)
UI->>API: ส่ง REST API Request (/api/db/*) พร้อม Session Token
API->>API: ตรวจสอบ Security Gateway, Rate Limit และ Input Validation
API->>Engine: ส่งข้อมูลเข้าสู่ Core Engine (Ingestion, Costing, Comm, Filter, Reports)
Engine->>DB: รันคำสั่ง Prepared SQL Statement สู่ตาราง Relational 15 ตาราง
DB-->>Engine: ส่งคืนผลลัพธ์ชุดข้อมูลที่ผ่านการประมวลผล
Engine-->>API: ประกอบ JSON Response กลับสู่เกตเวย์
API-->>UI: ส่งคืน JSON Response อัปเดตหน้าจอแบบ Reactive Real-Time
Note over UI,Local: 3. กลไกสำรองกรณี Offline (Offline Resilience Fallback)
opt เครือข่ายขัดข้อง หรือ D1 มี Latency ชั่วคราว
UI->>Local: สลับไปอ่านและเขียนข้อมูลบน LocalStorage Engine ทันที
Local-->>UI: ส่งคืนข้อมูลและบันทึก User Preferences ใช้งานต่อได้ไม่สะดุด
end
การวิเคราะห์โครงสร้าง 5 สถาปัตยกรรมหลัก (5 Architectural Tiers Analysis)
Single Page Application (SPA)
- สร้างด้วย Pure HTML5 / Vanilla CSS / ES6+ JavaScript ปราศจาก Framework Bloat
- State Management: Reactive State Store ติดตามตัวกรองและการคำนวณสด
- UI Engine: Sticky Table Headers, Custom Modal Controllers, Toast Notifications
- Security Interceptor: ซ่อน/แสดงองค์ประกอบตาม 4 RBAC Roles
Cloudflare Pages & Edge Acceleration
- กระจายไฟล์แอปพลิเคชันทั่วโลกกว่า 300+ Edge Data Centers
- Zero-Cold-Start Latency: ให้บริการหน้าเว็บในระดับ Milliseconds
- Security at Edge: มาตรฐาน HTTPS TLS 1.3, DDoS Mitigation และ Bot Protection
- Atomic Deployments: ระบบ Rollback อัตโนมัติและ Zero-Downtime Releases
Cloudflare Worker API Layer
- เกตเวย์ Serverless Micro-APIs (`/api/db/*`) ประมวลผลที่ Edge ใกล้ผู้ใช้ที่สุด
- Security Barrier: ตรวจสอบสิทธิ์ RBAC, Session Validity และบล็อกคำขอที่ไม่ได้รับอนุญาต
- SQL Parameterization: ป้องกัน SQL Injection ด้วย Prepared Statements 100%
- Audit Interceptor: บันทึก User Event ทุกคำขอลง Audit Log แบบอัตโนมัติ
6 Core Intelligence Micro-Engines
- Ingestion Engine: Multi-Sheet Parser และ Deduplication Matrix
- Costing Engine: คำนวณ Standard Cost % และ Margin อัตโนมัติ
- Commission Engine: คำนวณเงินรางวัลและสั่ง Strict Transaction Lock
- Reporting Engine: วิเคราะห์ KPIs, จัดอันดับ Top 10 และสร้างเอกสาร A4 Statement
Cloudflare D1 SQL Relational Engine
- ฐานข้อมูล Cloudflare D1 (SQLite Engine) โครงสร้าง 15 ตาราง 3NF
- ACID Guarantees: รองรับ Transactions, Foreign Keys และ Unique Constraints
- Admin Tools: รองรับ SQL Console สด และ 1-Click Data Wipe Tool
- Dual-Store Sync: สำรองและซิงค์ข้อมูลคู่ขนานกับ LocalStorage Engine
การวิเคราะห์การทำงานของ 6 กลไกประมวลผลอัจฉริยะ (6 Core Intelligence Micro-Engines)
| Core Engine Name | โมดูลและฟังก์ชันที่รองรับ | อัลกอริทึมและตรรกะการประมวลผล (Algorithm & Processing Logic) | ตารางฐานข้อมูลที่เกี่ยวข้อง |
|---|---|---|---|
| 1. Ingestion & Validation Engine | Import Sales Orders, Data Staging Matrix | อ่านไฟล์ Excel/CSV หลาย Sheet พร้อมกัน ตรวจสอบความถูกต้องของ Foreign Key พนักงานขาย (Reject เป็น INVALID ❌ หากไม่มีใน Master) และตรวจสอบเลขที่บิลซ้ำซ้อน (Reject เป็น DUPLICATE ❌) ก่อนอนุญาตให้กดยืนยันบันทึก Commit | sales_transactions, sales_transaction_items, employees |
| 2. Costing & Margin Engine | Sales Orders, Item Master Cost %, Staging | ดึงราคาขายมาตรฐานและ Standard Cost % จาก Item Master คำนวณต้นทุนต่อหน่วย: Cost = Price * (Standard Cost% / 100) และกำไรขั้นต้น: Margin = Amount - Cost พร้อม Aggregate สรุปยอด Total Amount, Total Cost, Total Margin สู่ระดับหัวบิล |
products, sales_transaction_items, sales_transactions |
| 3. Commission & Strict Lock Engine | Approve Commission, Monthly Cycles, Lock Pipeline | คำนวณเงินรางวัลคอมมิชชั่นรายเดือน: Commission = Total Margin * Staff Rate % เมื่อผู้จัดการกด Approve จะเปลี่ยนสถานะงวดเป็น APPROVED บันทึกผู้อนุมัติลง Audit และทำการล็อคบิลขายในงวดนั้นทันที (Locked = True) ปิดปุ่มแก้ไขและลบ 100% |
monthly_commissions, employees, sales_transactions |
| 4. Dynamic Period & KPI Engine | Dashboard, Filter Bar, Top 10 Leaderboards | แปลงค่าตัวกรอง ปี/เดือน เป็นช่วงวันที่ StartDate - EndDate แบบ Real-Time คำนวณ 5 Core KPIs (Target รวม, Actual Sales รวม, % Achieved, Margin รวม, Comm รวม) และจัดอันดับ 3 มิติ: Top 10 Staff, Top 10 Branches และ Top 10 Products | sales_transactions, branches, employees, products |
| 5. Performance Report & Print Engine | Branch Report, Sales Report, A4 Print, Excel Export | ประมวลผลรายงาน Matrix เปรียบเทียบ Target vs Actual Sales, Margin %, Commission รายสาขาและรายบุคคล จัดหน้าพิมพ์เอกสาร A4 Statement พร้อมหัวกระดาษและช่องลงนามอนุมัติ 3 ฝ่าย พร้อมแปลงข้อมูลเป็นตารางสเปรดชีต Excel (.xlsx) | branches, employees, sales_transactions |
| 6. Security, Audit & Admin Engine | RBAC Security Gate, Audit Logs, Sessions, SQL, Wipe Tool | ดักจับ User Event ทุกชนิด บันทึกเวลา ผู้ใช้ และรายละเอียดลงตาราง Audit Logs ตรวจสอบ Active Sessions และ IP Address พร้อมคำสั่ง Force Terminate รองรับการรัน SQL สด และปุ่ม 1-Click Wipe ล้างข้อมูลธุรกรรมโดยรักษา Master Data ปลอดภัย 100% | system_audit_logs, user_sessions, users, All 15 Tables |
ตารางวิเคราะห์การจับคู่ฟังก์ชันสู่สถาปัตยกรรมระบบ (Functional Decomposition & Architectural Mapping Matrix)
| Req ID | System Function | Frontend UI Component | Backend Processing Engine | API Endpoints | Database Entity |
|---|---|---|---|---|---|
| FR-1 | Authentication & RBAC | #loginView, #authGateBarrier, Profile Dropdown |
Auth Gateway & Session Validator | /api/db/auth/login, /logout |
users, user_sessions |
| FR-2 | Excel Multi-File Ingestion | #importDropzone, #stagingDataTable |
Multi-File Parser & Deduplication Engine | /api/db/sales/bulk-import |
sales_transactions, sales_transaction_items |
| FR-3 | Costing & Margin Matrix | #salesOrdersTable, #itemMasterTable |
Standard Cost % & Margin Rollup Engine | /api/db/products, /transactions |
products, sales_transaction_items |
| FR-4 | Commission & Strict Lock | #commissionCyclesTable, #reviewSalesModal |
Commission Calculator & Lock Mutator | /api/db/commissions/approve |
monthly_commissions, sales_transactions |
| FR-5 | Dashboard & Top 10 Sorters | #filterBar, #kpiCardsGrid, Top 10 Tables |
Dynamic Period Evaluator & KPI Aggregator | /api/db/dashboard/kpis, /leaderboards |
sales_transactions, branches, employees |
| FR-6 | Branch & Sales Reports | #branchReportTable, #salesReportTable, Print A4 |
Matrix Compiler & 3-Way Sign-off Renderer | /api/db/reports/branch, /sales |
branches, employees, sales_transactions |
| FR-7 | Master Data Management | Branch, Staff, Item, Category, Unit, Address Grids | Master Data CRUD & Inline Edit Listener | /api/db/master/* (CRUD endpoints) |
All Master Data Entities (8 Tables) |
| FR-8 | Security, Audit & Admin | Audit Trail Grid, Session IP Monitor, SQL Console, Wipe | Event Interceptor, SQL Runner, Wipe Controller | /api/db/audit, /sql/query, /wipe |
system_audit_logs, user_sessions |
ฐานข้อมูล Cloudflare D1 (SQLite Engine) ประกอบด้วย 15 ตารางที่มีความสัมพันธ์แบบ 3NF (Third Normal Form) ชัดเจน:
รายละเอียดโครงสร้างฟิลด์ ชนิดข้อมูล (Data Types), ข้อกำหนดคีย์ (Key Constraints), และคำอธิบายการใช้งานของทั้ง 15 ตารางในระบบ:
| Column Name | Data Type | Constraints | Description (คำอธิบาย) | Sample Data |
|---|---|---|---|---|
transaction_id | INTEGER | PRIMARY KEY AUTO | รหัสธุรกรรมบิลขายภายในระบบ | 1 |
invoice_no | TEXT | UNIQUE, NOT NULL | เลขที่บิลขาย (ป้องกันการบันทึกซ้ำ) | BR01-IV2608001 |
branch_id | INTEGER | FK → branches | รหัสสาขาที่เกิดรายการขาย | 1 |
employee_id | INTEGER | FK → employees | รหัสพนักงานขายผู้รับผิดชอบบิล | 1 |
transaction_date | TEXT | NOT NULL | วันที่ขาย (รูปแบบ YYYY-MM-DD) | 2026-08-18 |
total_amount | REAL | NOT NULL | ยอดเงินขายรวมทั้งบิล (บาท) | 10700.00 |
total_cost | REAL | NOT NULL | ต้นทุนสินค้ารวมตาม Standard Cost % | 5780.00 |
total_margin | REAL | NOT NULL | กำไรขั้นต้นของบิล (ยอดขาย - ต้นทุน) | 4920.00 |
commission_status | TEXT | DEFAULT 'PENDING' | สถานะการจ่ายคอมมิชชั่น ('PENDING', 'APPROVED') | APPROVED |
commission_id | INTEGER | FK → monthly_commissions | รหัสชุดการอนุมัติ Commission ที่บิลนี้สังกัด | 1 |
is_locked | INTEGER | DEFAULT 0 | แฟล็กการล็อคบิล (1 = ล็อคห้ามแก้ไข/ลบ) | 1 |
| Column Name | Data Type | Constraints | Description (คำอธิบาย) | Sample Data |
|---|---|---|---|---|
item_id | INTEGER | PRIMARY KEY AUTO | รหัสรายการสินค้าในบิล | 101 |
transaction_id | INTEGER | FK → sales_transactions | รหัสอ้างอิงหัวบิลขาย Header | 1 |
product_id | INTEGER | FK → products | รหัสสินค้าที่ขาย | 5 |
quantity | INTEGER | NOT NULL, > 0 | จำนวนชิ้นที่ขาย | 10 |
unit_price | REAL | NOT NULL, > 0 | ราคาขายต่อหน่วย ณ วันที่ทำรายการ (บาท) | 400.00 |
standard_cost_pct | REAL | NOT NULL | อัตราต้นทุนมาตรฐาน ณ ขณะขาย (%) | 45.0 |
subtotal_amount | REAL | NOT NULL | ยอดขายรวมของรายการ (Qty x Price) | 4000.00 |
subtotal_cost | REAL | NOT NULL | ต้นทุนรวมของรายการ (Subtotal x Cost%) | 1800.00 |
subtotal_margin | REAL | NOT NULL | กำไรขั้นต้นของรายการ (Subtotal - Cost) | 2200.00 |
| Column Name | Data Type | Constraints | Description (คำอธิบาย) | Sample Data |
|---|---|---|---|---|
commission_id | INTEGER | PRIMARY KEY AUTO | รหัสชุดคำนวณและแจ้งยอด Commission | 1 |
employee_id | INTEGER | FK → employees | รหัสพนักงานขายผู้รับเงินรางวัล | 1 |
period_year | INTEGER | NOT NULL | ปีประจำรอบการประเมิน (ค.ศ.) | 2026 |
period_month | INTEGER | NOT NULL (1-12) | เดือนประจำรอบการประเมิน (1-12) | 8 |
total_sales_amount | REAL | NOT NULL | ยอดขายจริงรวมในรอบการอนุมัตินี้ (บาท) | 129860.00 |
total_margin_amount | REAL | NOT NULL | กำไรขั้นต้นรวมในรอบการอนุมัตินี้ (บาท) | 65662.50 |
commission_rate_pct | REAL | NOT NULL | อัตราคอมมิชชั่นของพนักงาน (%) | 5.0 |
calculated_commission | REAL | NOT NULL | ยอดเงินคอมมิชชั่นที่คำนวณได้ (Margin x Rate%) | 3283.13 |
approval_status | TEXT | 'PENDING_APPROVAL' / 'APPROVED' / 'REJECTED' | สถานะการพิจารณาอนุมัติ | APPROVED |
approved_by | INTEGER | FK → user_accounts | รหัสผู้ใช้งานที่ทำการอนุมัติ (Manager/Admin) | 2 |
approved_at | TEXT | NULLABLE | วัน-เวลาที่อนุมัติ (ISO Timestamp) | 2026-08-18 14:30:00 |
approval_notes | TEXT | NULLABLE | บันทึกข้อความเหตุผลการอนุมัติ/ปฏิเสธ | ตรวจสอบบิลครบถ้วน อนุมัติจ่าย |
| Column | Type | Desc |
|---|---|---|
branch_id | INT (PK) | รหัสสาขาภายใน |
branch_code | TEXT (UQ) | รหัสสาขา เช่น BR-01 |
branch_name | TEXT | ชื่อสาขาภาษาไทย/อังกฤษ |
address_line | TEXT | ที่อยู่สาขา |
phone | TEXT | เบอร์โทรศัพท์ติดต่อ |
monthly_target | REAL | เป้ายอดขายรายเดือน (บาท) |
is_active | INT | สถานะเปิดใช้งาน (1/0) |
| Column | Type | Desc |
|---|---|---|
employee_id | INT (PK) | รหัสพนักงานภายใน |
branch_id | INT (FK) | รหัสสาขาที่สังกัด |
employee_code | TEXT (UQ) | รหัสพนักงาน เช่น ID-001 |
full_name | TEXT | ชื่อ-นามสกุลพนักงาน |
role | TEXT | ตำแหน่ง เช่น SALES |
commission_rate_pct | REAL | อัตราคอมมิชชั่น % |
monthly_target | REAL | เป้ายอดขายรายบุคคล (บาท) |
is_active | INT | สถานะปฏิบัติงาน (1/0) |
| Column | Type | Desc |
|---|---|---|
product_id | INT (PK) | รหัสสินค้าภายใน |
product_code | TEXT (UQ) | รหัสสินค้า เช่น Item-01 |
product_name | TEXT | ชื่อสินค้า |
category_id | INT (FK) | รหัสหมวดหมู่สินค้า |
unit_id | INT (FK) | รหัสหน่วยนับสินค้า |
base_price | REAL | ราคาขายมาตรฐาน (บาท) |
standard_cost_pct | REAL | อัตราต้นทุนมาตรฐาน (%) |
| Entity | Columns | Desc |
|---|---|---|
item_categories | category_id (PK)category_code (UQ)category_name | หมวดหมู่สินค้า เช่น Skincare, Makeup, Perfume |
item_units | unit_id (PK)unit_code (UQ)unit_name | หน่วยนับสินค้า เช่น Piece (ชิ้น), Bottle (ขวด), Pack |
| Table | Keys & Columns | Desc |
|---|---|---|
countries | country_id (PK), country_code, country_name | ประเทศ (Thailand) |
provinces | province_id (PK), province_name_th | จังหวัด (77 จังหวัด) |
districts | district_id (PK), province_id (FK) | อำเภอ/เขต |
sub_districts | sub_district_id (PK), district_id, zipcode | ตำบล/แขวง และรหัสไปรษณีย์ |
| Table | Keys & Columns | Desc |
|---|---|---|
user_accounts | user_id (PK), username, password_hash, role_code | บัญชีผู้ใช้งานระบบ |
roles & permissions | role_code (PK), perm_id (PK) | สิทธิ์การเข้าถึงเมนู (RBAC Matrix) |
system_audit_logs | audit_id (PK), action, entity, details, created_at | ประวัติการกระทำของผู้ใช้ (Audit Trail) |
1 ขั้นตอนที่ 1: การเข้าสู่ระบบและการยืนยันตัวตน (Authentication & Role Gateway)
เข้าสู่เว็บไซต์ https://dynamics369-sales.pages.dev จากนั้นกรอก Username (เช่น admin) และ Password (password123) เพื่อเข้าสู่ระบบผ่าน Security Gateway
คลิกที่ ไอคอนดวงตา 👁️ เพื่อตรวจสอบความถูกต้องของรหัสผ่าน หรือคลิกปุ่ม 1-Click Demo Login เพื่อเข้าใช้งานตามบทบาท (Admin, Manager, Sales Rep, Executive) ได้ทันที
คลิกปุ่ม Theme Toggle (🌙 / ☀️) ที่มุมขวาบนของแถบ Header เพื่อเปลี่ยนระหว่างธีมมืดและธีมสว่าง โดยระบบจะบันทึกสถานะลงใน LocalStorage ของเบราว์เซอร์อัตโนมัติ
2 ขั้นตอนที่ 2: การติดตามผลงานบน Dashboard (Executive Dashboard & Filter Intelligence)
หน้า Dashboard แสดงผลภาพรวมตัวชี้วัดสำคัญ 5 ด้านแบบ Real-time: 1. เป้ายอดขาย (Target), 2. ยอดขายจริง (Actual Sales), 3. อัตราความสำเร็จ (% Achievement Bar), 4. กำไรขั้นต้น (Total Margin & % Margin), 5. คอมมิชชั่นสุทธิ (Approved Commission)
เลือก [ปี] และ [เดือน] จากเมนูดรอปดาวน์ หรือกดปุ่ม [เดือนนี้ | ทั้งปี | ทั้งหมด] เพื่อคำนวณผลงานตามช่วงเวลาที่ต้องการ พร้อมเลือกกรองเฉพาะบางสาขาหรือพนักงานขายแบบ Multi-Select ได้อิสระ
ตรวจสอบกระดานผู้นำผลงาน 3 มิติ ได้แก่ Top 10 Sales Staff (พนักงานขายยอดเยี่ยม), Top 10 Branches (สาขาทำกำไรสูงสุด), และ Top 10 Products (สินค้ายอดนิยมทำกำไรสูงสุด) พร้อมเหรียญ 🥇, 🥈, 🥉
3 ขั้นตอนที่ 3: การบันทึกและจัดการบิลขาย (Sales Transactions & Manual Entry)
ไปที่เมนู Sales Transactions เพื่อดูตารางบิลขายทั้งหมด สามารถคลิกที่แถวบิลเพื่อขยายดูรายละเอียดรายการสินค้า (Line Items), จำนวน, ราคาขาย, และต้นทุน Standard Cost % ของแต่ละรายการ
| เลขที่บิล (Invoice) | วันที่ | สาขา | พนักงานขาย | ยอดขาย (฿) | กำไร (Margin) | สถานะ |
|---|---|---|---|---|---|---|
| BR01-IV2608001 | 2026-08-18 | Central Ladprao | Sasiprapa Jansuay | ฿10,700.00 | ฿4,920.00 | APPROVED |
คลิกปุ่ม [+ บันทึกบิลขายใหม่ (Manual)] กรอกข้อมูลหัวบิล (เลขที่บิล, สาขา, พนักงานขาย, วันที่) และเพิ่มรายการสินค้าตามจำนวนจริง ระบบจะคำนวณยอดขายรวม, ต้นทุนรวม และกำไรขั้นต้นให้อัตโนมัติทันที
4 ขั้นตอนที่ 4: การนำเข้าบิลขายจากไฟล์ Excel (Import Sales Orders & Deduplication)
ไปที่เมนู Import Sales orders ลากไฟล์ Excel รายงานยอดขายประจำสาขา (.xlsx / .csv) มาวางในกล่อง Dropzone หรือคลิกปุ่มโหลดชุดข้อมูลตัวอย่าง
ระบบจะตรวจสอบใน Data Staging โดยอัตโนมัติ: 1. ตรวจสอบรหัสพนักงานขายว่ามีอยู่ในฐานข้อมูลหรือไม่, 2. ตรวจจับเลขที่บิลซ้ำซ้อน (Deduplication Check) และ 3. คำนวณ Standard Cost % และกำไรขั้นต้น พร้อมเครื่องมือจัดการความสะอาดของข้อมูล:
- ปุ่ม [ลบ] ประจำแถว: ลบเฉพาะรายการที่ต้องการออกจากตาราง Staging แบบเจาะจงรายบรรทัด
- ปุ่ม [ลบรายการที่ผิดพลาด (Remove Errors)]: ลบทุกแถวที่ติดสถานะ INVALID หรือ Error ในคลิกเดียว คงเหลือเฉพาะข้อมูลที่ถูกต้อง (Ready to Commit)
- ปุ่ม [ลบรายการบิลซ้ำ (Remove Duplicates)]: กรองและลบแถวที่มีเลขที่บิลซ้ำกับในระบบออกจาก Staging อย่างรวดเร็ว
เมื่อข้อมูลใน Staging ผ่านการตรวจสอบทั้งหมด (สถานะ VALID) ให้คลิกปุ่ม [💾 ยืนยันบันทึกข้อมูลเข้าระบบ (Commit)] เพื่อบันทึกเข้าสู่ Cloudflare D1 SQL อย่างถาวร
5 ขั้นตอนที่ 5: การคำนวณ ตรวจสอบ และอนุมัติค่าคอมมิชชั่น (Commission Approval & Lock)
เปิดเมนู Approve Commission ระบบจะดึงยอดกำไรขั้นต้น (Margin) ของบิลขายตามรอบเดือน/ปีที่เลือก มาคำนวณตามอัตรา (%) ของพนักงานขายแต่ละคน พร้อมแถบตัวกรองรอบเวลา (Period Range) ให้เลือกดูเฉพาะเดือน, ทั้งปี, หรือทั้งหมด (All) เพื่อตรวจทานและพิจารณาอนุมัติจ่ายเป็นรายงวดได้อย่างแม่นยำ
เมื่อคลิก [อนุมัติ (Approve)] ระบบจะเปลี่ยนสถานะเป็น APPROVED บันทึกชื่อผู้อนุมัติและเวลา Timestamp พร้อมทำการ **ล็อคบิลขายในงวดนั้นอัตโนมัติ (Locked = True)** เพื่อป้องกันการแก้ไขหรือลบย้อนหลัง
6 ขั้นตอนที่ 6: การดูรายงานตามสาขาสำหรับผู้บริหาร (Branch Report & Print Statement)
เปิดเมนู Branch Report เพื่อดูผลงานเปรียบเทียบยอดขายจริงกับเป้าหมายประจำ 10 สาขา พร้อมปุ่มกดสั่งพิมพ์เอกสารรายงานสรุปผู้บริหารพร้อมช่องลงนามอนุมัติ
7 ขั้นตอนที่ 7: การดูรายงานสรุปผลงานระดับพนักงานขาย (Sales Report)
เปิดแถบเมนู Sales Report ใต้หมวด Sales & Operations เพื่อดูตารางสรุปผลงานของพนักงานขายทุกคนในองค์กรแบบ Real-Time ประกอบด้วยเป้าหมาย (Monthly Target), ยอดขายจริง (Actual Sales), หลอดแสดง % ความสำเร็จ (Achievement Bar), กำไรขั้นต้น (Margin ฿), % Margin ต่อยอดขาย, และสถานะการอนุมัติ Commission
| รหัส | ชื่อพนักงาน / สาขา | เป้ายอดขาย | ยอดขายจริง | % ความสำเร็จ | กำไรขั้นต้น (Margin) | Commission | สถานะ |
|---|---|---|---|---|---|---|---|
| EMP-001 | สมชาย สิทธิโชค (สาขาสำนักงานใหญ่) | ฿50,000 | ฿125,000 | 250.0% | ฿45,000 | ฿2,250.00 | APPROVED |
ผู้ใช้สามารถเลือกกรองรอบเวลาได้จากตัวเลือก รอบเวลา (Period Range): ทั้งการเลือกปี (Year), เลือกเดือน (Month) หรือปุ่ม Preset ด่วน (เดือนนี้, ทั้งปี, ทั้งหมด) ซึ่งยอด Commission รวมจะคำนวณรวมทั้งรอบที่อนุมัติแล้ว (Approved) และรอบที่รออนุมัติ (Pending) จัดกลุ่มตามพนักงานขาย พร้อมคลิกปุ่ม [พิมพ์รายงานสรุปผลงานพนักงาน (Print Report)] เพื่อออกเอกสารพร้อมส่วนลงนาม 3 ฝ่าย
รายงานสรุปผลงานระดับพนักงานขายประจำเดือน
6 ขั้นตอนที่ 6: การดูกระดานจัดอันดับ Top 10 (Sales Staff, Branches, Products) บน Dashboard
ที่หน้า Dashboard ด้านล่างจะแสดงกระดานจัดอันดับผู้นำผลงาน (Leaderboard) ครบทั้ง 3 มิติ พร้อมเหรียญรางวัล 🥇, 🥈, 🥉 ได้แก่:
1. Top 10 Sales Staff: พนักงานขายที่ทำกำไรขั้นต้น (Margin ฿) และยอดขายสูงสุด
2. Top 10 Branches: สาขาที่ทำกำไรขั้นต้นสูงสุดและอัตราการบรรลุเป้าหมาย (% Achievement)
3. Top 10 Products: สินค้าที่สร้างกำไรขั้นต้นสูงสุด (Margin ฿), ยอดขายรวม และจำนวนชิ้นที่จำหน่าย
8 ขั้นตอนที่ 8: การจัดการข้อมูลหลัก (Master Data Management)
เมนู Branch ใช้จัดการข้อมูลสาขา 10 สาขาหลัก กำหนดรหัสสาขา (Branch Code), ชื่อสาขา, เบอร์โทรศัพท์ และ **เป้ายอดขายรายเดือน (Monthly Target)** โดยสามารถแก้ไขเป้าหมายได้โดยตรงในตาราง (Inline Edit) และมีปุ่มนำเข้า/ส่งออก Excel
| รหัสสาขา | ชื่อสาขา | เบอร์โทรศัพท์ | เป้ายอดขายประจำเดือน | สถานะ |
|---|---|---|---|---|
| BR-01 | Central Ladprao | 02-555-0101 | ฿300,000.00 | Active |
| BR-02 | Central World | 02-555-0102 | ฿350,000.00 | Active |
เมนู Sales Staff ใช้บริหารจัดการข้อมูลพนักงานขายรายบุคคล กำหนดรหัสพนักงาน (เช่น ID-001), ชื่อ-นามสกุล, ผูกสังกัดสาขา, เป้ายอดขายรายบุคคล และ **อัตราคอมมิชชั่น (Commission Rate % เช่น 5.0%)**
| รหัสพนักงาน | ชื่อ-นามสกุล | สาขาที่สังกัด | เรท Commission (%) | เป้ายอดขาย | สถานะ |
|---|---|---|---|---|---|
| ID-001 | คุณศศิประภา จันทร์สวย | Central Ladprao | 5.0% | ฿50,000.00 | Active |
เมนู Address รวบรวมข้อมูลภูมิศาสตร์ 77 จังหวัดทั่วประเทศไทย อำเภอ ตำบล และรหัสไปรษณีย์ สำหรับใช้ผูกกับข้อมูลที่ตั้งสาขาและข้อมูลลูกค้า
| จังหวัด (Province) | อำเภอ/เขต (District) | ตำบล/แขวง (Sub-District) | รหัสไปรษณีย์ |
|---|---|---|---|
| กรุงเทพมหานคร | จตุจักร | จอมพล | 10900 |
| เชียงใหม่ | เมืองเชียงใหม่ | สุเทพ | 50200 |
9 ขั้นตอนที่ 9: การบริหารคลังสินค้า (Inventory Management)
เมนู Item Master ใช้กำหนดข้อมูลสินค้า 20 รายการหลัก (Item-01 ถึง Item-20) ประกอบด้วยชื่อสินค้า, หมวดหมู่, ราคาขายมาตรฐาน และ **อัตราต้นทุนมาตรฐาน (Standard Cost % เช่น 45%, 50%)** ซึ่งเป็นหัวใจสำคัญในการคำนวณกำไรขั้นต้น (Margin)
| รหัสสินค้า | ชื่อสินค้า | หมวดหมู่ | ราคาขายมาตรฐาน | ต้นทุนมาตรฐาน (%) | หน่วยนับ |
|---|---|---|---|---|---|
| Item-10 | Facial Treatment Serum 50ml | Skincare | ฿400.00 | 45.0% | Piece (ชิ้น) |
| Item-02 | Hydrating Glow Cream 50g | Skincare | ฿220.00 | 50.0% | Piece (ชิ้น) |
• Item Category: จัดการกลุ่มผลิตภัณฑ์ เช่น Skincare, Makeup, Bodycare, Haircare, Perfume
• Unit of measure: จัดการหน่วยนับสินค้า เช่น Piece (ชิ้น), Bottle (ขวด), Box (กล่อง), Pack (แพ็ค)
• Makeup (เครื่องสำอาง)
• Perfume (น้ำหอม)
• Bottle (ขวด)
• Pack (แพ็ค/ชุด)
10 ขั้นตอนที่ 10: ความปลอดภัยและการดูแลระบบ (Security & Administration)
• User: เพิ่ม แก้ไข รีเซ็ตรหัสผ่าน และกำหนดบทบาทผู้ใช้งาน (ADMIN, MANAGER, SALES, EXECUTIVE)
• Role: ควบคุมสิทธิ์การเข้าถึงเมนูและการแก้ไขข้อมูล (Role-Based Access Control)
| Username | ชื่อผู้ใช้งาน | บทบาท (Role) | อีเมล | สถานะ |
|---|---|---|---|---|
| admin | System Administrator | ADMIN | admin@company.com | Active |
| manager | Sales Manager | MANAGER | manager@company.com | Active |
เมนู Session & IP Monitor แสดงรายการผู้ใช้งานที่กำลังเข้าสู่ระบบอยู่ในขณะนั้น พร้อมหมายเลข IP Address, ชนิดอุปกรณ์/เบราว์เซอร์ และปุ่ม [Force Terminate] สำหรับผู้ดูแลระบบในการบังคับตัดการเชื่อมต่อของผู้ใช้ที่มีพฤติกรรมผิดปกติ
| User | Role | IP Address | Browser / Agent | เวลาเข้าสู่ระบบ | Action |
|---|---|---|---|---|---|
| admin | ADMIN | 125.25.100.88 |
Chrome 128 / Windows | 2026-08-18 16:20:00 | Online |
เมนู System Audit Trail บันทึกประวัติการกระทำสำคัญทั้งหมด (Action, Entity, Timestamp, User, Details) เช่น การเข้าสู่ระบบ, การนำเข้าไฟล์ Excel, การอนุมัติคอมมิชชั่น และการแก้ไขข้อมูลหลัก เพื่อความโปร่งใสและตรวจสอบย้อนหลังได้ 100%
| เวลา (Timestamp) | ผู้ใช้งาน | Action | Entity | รายละเอียด |
|---|---|---|---|---|
| 2026-08-18 14:30:15 | admin | APPROVE_COMMISSION | COMMISSION | อนุมัติค่าคอมมิชชั่นรอบเดือน 8/2026 พนักงาน ID-001 (ยอด ฿3,283.13) |
• SQL Query Console: หน้าต่างเขียนคำสั่ง SQL Query เพื่อสืบค้นหรือวิเคราะห์ข้อมูล Cloudflare D1 โดยตรง พร้อมตารางแสดงผลลัพธ์และปุ่มส่งออกเป็นไฟล์ JSON / CSV
• 1-Click Transaction & Audit Wipe: ปุ่มล้างข้อมูลธุรกรรมทดสอบในหน้า Setting เพื่อเตรียมระบบให้พร้อมสำหรับการเริ่มบันทึกข้อมูลจริงขององค์กร
FROM employees e
JOIN branches b ON e.branch_id = b.branch_id
LEFT JOIN sales_transactions t ON e.employee_id = t.employee_id
GROUP BY e.employee_id ORDER BY total_margin DESC;
11 ขั้นตอนที่ 11: ผังโครงสร้างระบบ (Architecture & Interactive ERD)
คลิกเมนู Interactive ERD Viewer (เปิดแท็บใหม่ erd_viewer.html) เพื่อดูผัง Entity Relationship Diagram แบบโต้ตอบได้ สามารถลากย้ายตำแหน่งตาราง ซูมเข้า-ออก และคลิกดูรายละเอียดความสัมพันธ์ Foreign Key ระหว่างตารางได้แบบ 360 องศา
ผังกระบวนการทำงานครอบคลุมทุกโมดูลและการทำงานแบบครบวงจรในระบบ Dynamics 369 ตั้งแต่ Authentication, Data Ingestion, Costing, Commission Lock, Reporting ไปจนถึง Security & Administration:
1. กระบวนการยืนยันตัวตนและการกระจายสิทธิ์ (Authentication & Role Gateway Flow)
sequenceDiagram
autonumber
actor User as ผู้ใช้งานระบบ
participant LoginUI as หน้าจอล็อกอิน
participant Auth as ระบบตรวจสอบสิทธิ์
participant Session as ตัวจัดการเซสชัน
participant Audit as บันทึกประวัติระบบ
User->>LoginUI: กรอก Username และ Password หรือกด 1-Click Login
LoginUI->>Auth: ตรวจสอบความถูกต้องของบัญชีผู้ใช้
alt ข้อมูลถูกต้อง
Auth->>Session: สร้าง Session Token และบันทึก IP Address
Auth->>Audit: บันทึก Audit Log เหตุการณ์ USER_LOGIN
Auth-->>LoginUI: ผ่านการตรวจสอบ และส่งคืนสิทธิ์ตาม Role
LoginUI-->>User: เปิดสิทธิ์เข้าใช้งานเมนูตามบทบาท (Admin, Manager, Sales, Executive)
else ข้อมูลไม่ถูกต้อง
Auth-->>LoginUI: แจ้งเตือนข้อผิดพลาด Invalid Credentials
LoginUI-->>User: แสดงข้อความแจ้งเตือนรหัสผ่านไม่ถูกต้อง
end
2. กระบวนการนำเข้าไฟล์ Excel และตรวจสอบความถูกต้อง (Excel Ingestion & Validation Flow)
sequenceDiagram
autonumber
actor User as Sales Staff หรือ Admin
participant Dropzone as จุดวางไฟล์ Dropzone
participant Parser as ตัวอ่านไฟล์ Excel
participant DB as ฐานข้อมูล Cloudflare D1
participant Staging as ตารางตรวจสอบ Staging
User->>Dropzone: ลากไฟล์ Excel หลายสาขามาวางพร้อมกัน
Dropzone->>Parser: แยก Sheet และอ่านข้อมูล Header และ Rows
Parser->>DB: ตรวจสอบความถูกต้องของรหัสและชื่อพนักงานขาย
alt ไม่พบพนักงานในระบบ
DB-->>Parser: Error ไม่พบพนักงานขายใน Master Data
Parser->>Staging: ทำเครื่องหมายแถวเป็น INVALID
else พบพนักงานในระบบ
Parser->>DB: ตรวจสอบเลขที่บิลซ้ำซ้อนในฐานข้อมูล
alt บิลซ้ำในระบบ
DB-->>Parser: Error พบเลขที่บิลซ้ำ
Parser->>Staging: ทำเครื่องหมายแถวเป็น DUPLICATE
else บิลถูกต้อง
Parser->>DB: ดึงราคาขายและ Standard Cost % จาก Item Master
Parser->>Staging: คำนวณ Margin และแสดงสถานะ VALID
end
end
User->>Staging: กดยืนยันบันทึกข้อมูล Commit
Staging->>DB: บันทึกลงตาราง sales_transactions และ sales_transaction_items
DB-->>User: บันทึกข้อมูลสำเร็จ และอัปเดต Dashboard ทันที
3. กระบวนการคำนวณต้นทุนมาตรฐานและกำไรขั้นต้น (Costing & Margin Calculation Flow)
sequenceDiagram
autonumber
participant ItemLine as รายการสินค้า Line Item
participant Master as ข้อมูลสินค้า Item Master
participant Calc as ระบบคำนวณกำไร Margin Engine
participant Header as หัวบิล Sales Order Header
ItemLine->>Master: ดึงราคาขายมาตรฐาน และ Standard Cost %
Master-->>Calc: ส่งค่า Price และ Cost % (เช่น 45%)
Calc->>Calc: คำนวณต้นทุนต่อหน่วย Cost = Price * (Cost % / 100)
Calc->>Calc: คำนวณยอดขายรวม Item Amount = Qty * Price
Calc->>Calc: คำนวณต้นทุนรวม Item Cost = Qty * Cost
Calc->>Calc: คำนวณกำไรขั้นต้น Item Margin = Amount - Cost
Calc->>Header: รวมยอดสู่ระดับหัวบิล Total Amount, Total Cost, Total Margin
Header-->>Header: อัปเดต % Margin ประจำบิลขาย
4. กระบวนการคำนวณคอมมิชชั่นและการล็อคบิลขาย (Commission Approval & Strict Lock Flow)
sequenceDiagram
autonumber
actor Manager as ผู้จัดการฝ่ายขาย
participant CommUI as หน้าจออนุมัติคอมมิชชั่น
participant CommEngine as ระบบคำนวณเงินรางวัล
participant DB as ฐานข้อมูล Cloudflare D1
participant Audit as บันทึกประวัติ Audit Trail
DB->>CommEngine: รวบรวมยอด Margin ของบิลที่ยังไม่อนุมัติ
CommEngine->>CommEngine: คำนวณ Commission = Total Margin * Rate %
CommEngine->>DB: บันทึกงวดคอมมิชชั่น สถานะ PENDING_APPROVAL
Manager->>CommUI: กดปุ่ม ตรวจสอบบิล (Review Sales)
CommUI-->>Manager: แสดงรายการบิลขายทั้งหมดในงวด
Manager->>CommUI: กดปุ่ม อนุมัติ (Approve)
CommUI->>DB: ปรับสถานะรอบคอมมิชชั่นเป็น APPROVED
CommUI->>DB: สั่งล็อคบิลขายในงวดนั้นทันที (Locked = True)
CommUI->>Audit: บันทึกชื่อผู้อนุมัติ และ Timestamp ลง Audit Log
DB-->>Manager: ยืนยันการอนุมัติสำเร็จ บิลขายถูกล็อคห้ามแก้ไขหรือลบ
5. กระบวนการประมวลผลตัวกรองช่วงเวลาและจัดอันดับ Top 10 (Dynamic Period & Leaderboard Flow)
sequenceDiagram
autonumber
actor User as ผู้บริหาร หรือ ผู้ใช้งาน
participant FilterUI as ตัวกรอง ปี เดือน สาขา พนักงาน
participant Engine as ตัวประมวลผลช่วงเวลา
participant DB as ฐานข้อมูลยอดขาย
participant Dash as หน้าจอแดชบอร์ด
User->>FilterUI: เลือก ปี และ เดือน หรือเลือกสาขาเฉพาะ
FilterUI->>Engine: ส่งเงื่อนไขการกรองช่วงวันที่ StartDate - EndDate
Engine->>DB: ดึงรายการบิลขายที่ตรงกับเงื่อนไข
DB-->>Engine: ส่งชุดข้อมูลบิลขายและรายการสินค้า
Engine->>Engine: คำนวณ 5 Core KPIs (Target, Actual, % Achieved, Margin, Comm)
Engine->>Engine: จัดอันดับ Top 10 พนักงานขาย, Top 10 สาขา, Top 10 สินค้า
Engine->>Dash: อัปเดตกราฟิก แผนภูมิ และกระดานจัดอันดับแบบ Real-Time
Dash-->>User: แสดงผลสรุปภาพรวมผู้บริหารทันที
6. กระบวนการออกรายงานผลงานและพิมพ์เอกสารทางการ (Performance Reporting & Print Flow)
sequenceDiagram
autonumber
actor User as ผู้บริหาร หรือ ผู้จัดการ
participant UI as หน้ารายงาน Branch หรือ Sales Report
participant Calc as ระบบประมวลผลรายงาน
participant Print as เครื่องมือจัดหน้าพิมพ์ PDF
User->>UI: เปิดเมนู Branch Report หรือ Sales Report
UI->>Calc: รวบรวมข้อมูล Target, Actual Sales, Margin %, Commission
Calc-->>UI: แสดงตาราง Matrix พร้อมหลอดแสดง % Achievement
alt สั่งพิมพ์รายงานทางการ
User->>UI: กดปุ่ม พิมพ์รายงานสรุปผลงาน (Print Statement)
UI->>Print: จัดรูปแบบเอกสารรายงานขนาด A4 พร้อมหัวเอกสารทางการ
Print->>Print: ใส่ช่องลงนามอนุมัติ 3 ฝ่าย (ผู้จัดทำ, ผู้จัดการ, ผู้อำนวยการ)
Print-->>User: เปิดหน้าต่างพิมพ์ของเบราว์เซอร์เพื่อบันทึกเป็น PDF
else ส่งออกไฟล์ Excel
User->>UI: กดปุ่ม ส่งออก Excel
UI-->>User: ดาวน์โหลดไฟล์ .xlsx สรุปยอดทันที
end
7. กระบวนการจัดการข้อมูลหลักและคลังสินค้า (Master Data & Inventory Flow)
sequenceDiagram
autonumber
actor Admin as ผู้ดูแลระบบ Admin
participant MasterUI as เมนูข้อมูลหลักและคลังสินค้า
participant Validator as ตัวตรวจสอบ Foreign Key
participant DB as ฐานข้อมูล Cloudflare D1
participant Audit as บันทึกประวัติ Audit Log
Admin->>MasterUI: เพิ่ม หรือแก้ไข สาขา, พนักงาน, สินค้า, หรือที่อยู่
alt แก้ไขในตาราง Inline Edit
Admin->>MasterUI: แก้ไขเป้ายอดขาย Target หรือเรท Commission ในตาราง
MasterUI->>DB: บันทึกค่าใหม่ลงตาราง branches หรือ employees ทันที
else เพิ่มข้อมูลใหม่ผ่าน Modal
Admin->>MasterUI: กรอกแบบฟอร์มข้อมูลหลัก
MasterUI->>Validator: ตรวจสอบความถูกต้องของรหัสและ Foreign Key
Validator->>DB: บันทึกข้อมูลใหม่ลงฐานข้อมูล
end
DB->>Audit: บันทึกประวัติเหตุการณ์ MASTER_DATA_UPDATE
DB-->>Admin: แสดงข้อความแจ้งเตือนบันทึกข้อมูลหลักสำเร็จ
8. กระบวนการตรวจสอบความปลอดภัยและประวัติการใช้งาน (Security, Session & Audit Flow)
sequenceDiagram
autonumber
actor User as ผู้ใช้งานในระบบ
participant App as ระบบแอปพลิเคชัน
participant Interceptor as ตัวดักจับความปลอดภัย
participant AuditDB as ตาราง Audit Logs
participant SessionDB as ตัวติดตาม Session และ IP
actor Admin as ผู้ดูแลระบบ
User->>App: ดำเนินกิจกรรม เช่น บันทึกบิล, นำเข้า Excel, อนุมัติ
App->>Interceptor: ส่ง Event การกระทำของผู้ใช้
Interceptor->>AuditDB: บันทึกเวลา Timestamp, ผู้ใช้, การกระทำ และรายละเอียด
Interceptor->>SessionDB: อัปเดตสถานะ Active Session และหมายเลข IP Address
Admin->>SessionDB: ตรวจสอบผู้ใช้งานที่กำลังออนไลน์
alt พบพฤติกรรมผิดปกติ
Admin->>SessionDB: กดปุ่ม Force Terminate ตัดการเชื่อมต่อ
SessionDB->>App: ยกเลิก Session Token ของผู้ใช้นั้น
App-->>User: บังคับ Logout และนำกลับสู่หน้าล็อกอินทันที
end
9. กระบวนการสืบค้น SQL และการล้างข้อมูลธุรกรรม (SQL Console & Admin Wipe Flow)
sequenceDiagram
autonumber
actor Admin as ผู้ดูแลระบบ Admin
participant SQLUI as หน้าจอ SQL Query Console
participant D1 as ฐานข้อมูล Cloudflare D1
participant WipeTool as เครื่องมือล้างข้อมูลใน Setting
alt รันคำสั่ง SQL Query สด
Admin->>SQLUI: เขียนคำสั่ง SELECT ... FROM ...
SQLUI->>D1: ส่งคำสั่ง Query ไปประมวลผลที่ Cloudflare D1
D1-->>SQLUI: ส่งชุดข้อมูลผลลัพธ์กลับมา
SQLUI-->>Admin: แสดงผลลัพธ์เป็นตารางและปุ่มส่งออก JSON และ CSV
else 1-Click Wipe Tool ล้างข้อมูลธุรกรรม
Admin->>WipeTool: คลิกปุ่ม ล้างข้อมูลธุรกรรมและบันทึกประวัติ
WipeTool->>Admin: แสดงกล่องยืนยันการล้างข้อมูลแบบ Double Confirm
Admin->>WipeTool: กดยืนยันการล้างข้อมูล
WipeTool->>D1: ล้างข้อมูลธุรกรรม บิลขาย คอมมิชชั่น และประวัติการใช้งาน
WipeTool->>WipeTool: คงรักษาข้อมูลหลักสาขา พนักงาน และสินค้าไว้ครบถ้วน
WipeTool-->>Admin: แจ้งเตือนสำเร็จ และรีเซ็ตหน้าจอแดชบอร์ดให้พร้อมใช้งานจริง
end
ชุดทดสอบระดับองค์กร (Enterprise Test Matrix) รวม 45 Test Scenarios ครอบคลุม 100% Core Functionalities, Security Gates, RBAC, Calculations, Strict Locking, Auditing และ Admin Tools พร้อมผังกระบวนการทดสอบ (Test Execution Lifecycle):
แผนภาพผังกระบวนการทดสอบระบบ (Test Execution Process Flow)
sequenceDiagram
autonumber
actor QA as ผู้ทดสอบระบบ (QA / Tester)
participant UI as ระบบ Dynamics 369 UI
participant Validator as เครื่องมือตรวจความถูกต้อง
participant DB as ฐานข้อมูล Cloudflare D1
participant Audit as บันทึก System Audit Log
actor Lead as หัวหน้าโครงการ (QA Lead / PM)
QA->>UI: ขั้นตอนที่ 1: ตระเตรียมข้อมูลตั้งต้น (Master Data: สาขา, พนักงาน, สินค้า)
UI->>DB: บันทึกข้อมูลหลักเข้าสู่ระบบให้พร้อมทดสอบ
QA->>UI: ขั้นตอนที่ 2: รันกรณีทดสอบตามลำดับ (Suite 1 -> Suite 9: TC-01 ถึง TC-45)
UI->>Validator: ส่งค่าและเงื่อนไขทดสอบไปประมวลผล
Validator->>DB: บันทึกและดึงข้อมูลธุรกรรม
Validator->>Audit: บันทึกประวัติการกระทำลง System Audit Logs
Validator-->>UI: แสดงผลลัพธ์บนหน้าจอ (Actual Result)
QA->>QA: ขั้นตอนที่ 3: เปรียบเทียบผลลัพธ์จริงกับผลลัพธ์ที่คาดหวัง (Expected Result)
alt ผลลัพธ์ตรงกัน 100%
QA->>UI: ทำเครื่องหมายสถานะเป็น PASS ✅
else พบข้อผิดพลาด
QA->>UI: บันทึก Defect Issue และแจ้งทีมพัฒนาแก้ไข ❌
end
QA->>Lead: ขั้นตอนที่ 4: สรุปรายงานผลการทดสอบครบ 45 Scenarios และลงนามอนุมัติ
Lead-->>QA: อนุมัติผ่านการทดสอบพร้อมขึ้นระบบจริง (Production Release)
ขั้นตอนและแนวทางปฏิบัติในการทดสอบระบบ 5 ขั้นตอน (5-Step Test Execution Protocol)
ตรวจสอบให้แน่ใจว่า Master Data (สาขา, พนักงาน, สินค้า) มีข้อมูลถูกต้อง และใช้เครื่องมือ 1-Click Wipe Tool เพื่อเริ่มการทดสอบจาก Clean State
สลับบทบาทผู้ใช้ (Admin, Manager, Sales, Executive) เพื่อทดสอบการเปิด-ปิดเมนู และการจำกัดสิทธิ์เข้าถึงตาม RBAC Matrix
นำเข้าไฟล์ Excel หลายสาขา ตรวจสอบการกรอง Invalid Staff, Duplicate Invoices และคำนวณ Margin % ตามสูตรบัญชี
ตรวจสอบ Review Sales Modal, กด Approve Commission และทดสอบการล็อคบิลขายห้ามแก้ไขหรือลบ 100%
ตรวจสอบประวัติ Audit Logs ทุกกิจกรรม, ทดสอบพิมพ์ Statement พร้อมช่องลงนาม 3 ฝ่าย และรัน SQL Console
| Test ID | หมวดหมู่ฟังก์ชัน | ขั้นตอนและกรณีทดสอบ (Scenario & Steps) | ผลลัพธ์ที่คาดหวัง (Expected Result) | ผลการทดสอบจริง (Actual Result) | สถานะ |
|---|---|---|---|---|---|
| Suite 1: Authentication & Access Control (การยืนยันตัวตนและการกระจายสิทธิ์) | |||||
| TC-01 | Authentication | เข้าสู่ระบบด้วย Username/Password ปกติ และกรอกข้อมูลผิด | หากถูกต้องเข้าสู่หน้า Dashboard, หากผิดแสดง Error ทันที | ตรวจสอบความถูกต้องแม่นยำ พร้อมแสดง Alert สวยงาม | PASS |
| TC-02 | Authentication | ทดสอบปุ่ม 1-Click Fast Login ทั้ง 4 สิทธิ์ (Admin, Manager, Sales, Executive) | สลับสิทธิ์ได้ทันทีโดยไม่ต้องพิมพ์รหัสผ่าน พร้อมเปลี่ยน Profile ใน Header | สลับสิทธิ์ได้ราบรื่น ค่าสิทธิ์ Role อัปเดตทันที | PASS |
| TC-03 | Authentication | ทดสอบปุ่มเปิด-ปิดแสดงรหัสผ่าน (Show/Hide Password Eye Toggle) | คลิกไอคอน 👁️ แล้วสลับแสดงตัวอักษร / จุดรหัสผ่านอย่างถูกต้อง โดยไม่มีไอคอนซ้ำ | ทำงานราบรื่น ไอคอน Edge ซ้ำถูกซ่อนสมบูรณ์ | PASS |
| TC-04 | Security RBAC | ผู้ใช้สิทธิ์ Sales หรือ Executive พยายามเปิดหน้า ERD Viewer หรือ Docs URL ตรง | ระบบต้องปิดกั้นและแสดงหน้า 403 Forbidden Gate Barrier ป้องกันการเข้าถึง | ระบบขึ้น Barrier ปิดกั้น 100% สิทธิ์ Admin เท่านั้นที่ผ่านได้ | PASS |
| TC-05 | Session Security | กดปุ่ม Sign Out จากแถบ Sidebar หรือ Header Profile | ล้าง User Session และ Token นำผู้ใช้กลับสู่หน้า Login สะอาด | ล้างข้อมูล Session สำเร็จ ไม่เหลือสิทธิ์ค้างในหน่วยความจำ | PASS |
| Suite 2: Sales Ingestion & Excel Multi-File Upload (การนำเข้าบิลขาย) | |||||
| TC-06 | Excel Ingestion | ลากไฟล์ Excel หลายสาขา (.xlsx, .csv) มาวางที่ Multi-File Dropzone พร้อมกัน | ระบบอ่านทุกไฟล์และทุก Sheet แสดงรายการในตาราง Data Staging Matrix | อ่านข้อมูลได้รวดเร็ว รวมหลายไฟล์เป็นชุดข้อมูลเดียวได้ถูกต้อง | PASS |
| TC-07 | Data Validation | นำเข้าไฟล์ Excel ที่มีชื่อหรือรหัสพนักงานขายที่ไม่มีใน Master Data | ระบบแจ้งเตือนสีแดง ไม่พบพนักงานในระบบ และขึ้นสถานะ INVALID ❌ | ตรวจจับพนักงานที่ไม่ถูกต้องได้แม่นยำ ป้องกันข้อมูลขยะเข้าระบบ | PASS |
| TC-08 | Deduplication | นำเข้าไฟล์ที่มีเลขที่บิลขาย (Invoice No) ซ้ำกับบิลที่มีอยู่แล้วในฐานข้อมูล | ระบบแจ้งเตือนสีส้ม พบเลขที่บิลซ้ำในระบบ และขึ้นสถานะ DUPLICATE ❌ | กรองบิลซ้ำออกอัตโนมัติ ไม่บันทึกยอดซ้ำซ้อน | PASS |
| TC-09 | Auto Cost Lookup | นำเข้าบิลขายที่มีรหัสสินค้าใน Item Master | ระบบดึงราคาและ Standard Cost % มาคำนวณต้นทุนและ Margin ให้อัตโนมัติ | คำนวณ Margin อัตโนมัติทันทีในหน้า Staging Matrix | PASS |
| TC-10 | Batch Commit | กดปุ่ม ยืนยันบันทึกข้อมูล (Commit) บิลที่ผ่านการตรวจสอบทั้งหมด | บันทึกรายการลงฐานข้อมูล Cloudflare D1 และอัปเดตหน้า Dashboard ทันที | บันทึกสำเร็จ รวดเร็ว และอัปเดตสถิติ Real-Time | PASS |
| Suite 3: Sales Orders & Cost/Margin Calculations (การคำนวณต้นทุนและกำไร) | |||||
| TC-11 | Costing Engine | ทดสอบสูตรต้นทุน: Unit Cost = Unit Price * (Standard Cost % / 100) | ต้นทุนต่อหน่วยคำนวณตรงตามเปอร์เซ็นต์ของสินค้านั้นๆ 100% | คำนวณแม่นยำทุกรายการสินค้า | PASS |
| TC-12 | Margin Engine | ทดสอบสูตรกำไรขั้นต้น: Line Margin = Item Amount - Total Cost | กำไรขั้นต้นของแต่ละรายการคำนวณถูกต้องตามยอดขายหักต้นทุนจริง | ยอด Margin ถูกต้องตรงตามหลักบัญชี | PASS |
| TC-13 | Header Aggregation | รวมยอดระดับบิล: Total Amount, Total Cost, Total Margin, Margin % | ยอดรวมระดับหัวบิลตรงกับผลบวกของรายการสินค้าย่อยทุกบรรทัด | รวมยอดถูกต้องแม่นยำ ไม่พบเศษทศนิยมคลาดเคลื่อน | PASS |
| TC-14 | Order Management | แก้ไขหรือลบบิลขายที่ยังไม่ถูกล็อค (Unlocked Sales Orders) | สามารถแก้ไขจำนวน รายการสินค้า หรือลบบิลได้ และระบบคำนวณยอดใหม่ทันที | แก้ไขและลบได้สมบูรณ์ พร้อมบันทึก Audit Log | PASS |
| TC-15 | Table Usability | ตรึงหัวตารางขณะเลื่อนหน้าจอ (Sticky Header on Scroll) ในตารางบิลขาย | หัวตารางคอลัมน์ต้องตรึงคงที่อยู่ด้านบน ไม่เลื่อนหลุดสายตา | Sticky Header ตรึงมั่นคง ใช้งานง่ายบนข้อมูลขนาดใหญ่ | PASS |
| Suite 4: Commission Lifecycle & Strict Locking (วงจรคอมมิชชั่นและการล็อคบิล) | |||||
| TC-16 | Commission Calc | คำนวณเงินรางวัลคอมมิชชั่น: Commission = Total Margin * Staff Rate % | คำนวณเงินรางวัลของพนักงานแต่ละคนตามอัตราเรทเฉพาะตัวอย่างแม่นยำ | คำนวณถูกต้องตามเรทของพนักงานแต่ละคน | PASS |
| TC-17 | Review Modal | คลิกปุ่ม ตรวจสอบบิล (Review Sales) ในหน้ารอบเดือนคอมมิชชั่น | เปิด Modal แสดงรายการบิลขายทั้งหมดของพนักงานในงวดนั้นอย่างครบถ้วน | แสดงบิลขายและยอด Margin รายบิลครบถ้วน | PASS |
| TC-18 | Approve & Print Gate | ทดสอบสั่งพิมพ์ Statement ก่อนอนุมัติ และกดปุ่ม อนุมัติ (Approve) คอมมิชชั่น | ก่อนอนุมัติปุ่มพิมพ์ Statement ถูก Lock ปิดกั้น 100%, เมื่ออนุมัติสำเร็จสถานะเป็น APPROVED และเปิดให้พิมพ์ Statement ทางการได้ | ปิดกั้นการพิมพ์ก่อนอนุมัติ 100% และเปิดให้พิมพ์หลังอนุมัติสำเร็จสมบูรณ์ | PASS |
| TC-19 | Strict Lock | ตรวจสอบบิลขายในงวดที่ได้รับการอนุมัติคอมมิชชั่นแล้ว | บิลขายถูกล็อค (Locked = True) ปุ่มแก้ไขและปุ่มลบถูก Disable 100% | ปุ่มแก้ไขและลบถูกปิดใช้งาน ป้องกันการแก้บิลย้อนหลัง | PASS |
| TC-20 | Post-Approve Import | นำเข้าบิลขายใหม่หลังจากที่มีการอนุมัติคอมมิชชั่นของงวดนั้นไปแล้ว | บิลที่อนุมัติแล้วคงล็อค บิลใหม่จะสร้างยอดคอมมิชชั่นส่วนเพิ่มในสถานะ Pending แยกต่างหาก | ไม่รบกวนยอดบิลเดิมที่อนุมัติแล้ว แยกงวดส่วนเพิ่มอย่างถูกต้อง | PASS |
| Suite 5: Dashboard & Dynamic Leaderboards (แดชบอร์ดและการจัดอันดับ) | |||||
| TC-21 | Date Filtering | เลือกตัวกรอง ปี และ เดือน ในแถบตัวกรองด้านบนของ Dashboard | ระบบคำนวณช่วงวันที่และประมวลผลข้อมูลบิลขายเฉพาะช่วงเวลาที่เลือกทันที | กรองช่วงวันที่รวดเร็ว ข้อมูลอัปเดตสอดคล้องกับตัวกรอง | PASS |
| TC-22 | Core KPIs | ตรวจสอบการคำนวณการ์ดสรุป 5 Core KPIs ด้านบน | Target รวม, Actual Sales รวม, % Achieved, Margin รวม, Commission รวม คำนวณตรง 100% | ตัวเลขการ์ดสรุปตรงกับฐานข้อมูลจริงทุกจุด | PASS |
| TC-23 | Top 10 Staff | ตรวจสอบตารางจัดอันดับ Top 10 Sales Staff | เรียงลำดับพนักงานตามยอดกำไรขั้นต้น Margin (฿) สูงสุด 10 อันดับแรกพร้อมเหรียญรางวัล | จัดอันดับแม่นยำ พร้อมแสดงเรทและยอดคอมมิชชั่น | PASS |
| TC-24 | Top 10 Branches | ตรวจสอบตารางจัดอันดับ Top 10 Branches | เรียงลำดับสาขาตามยอดกำไรขั้นต้น Margin (฿) และ % Achievement เทียบเป้า | จัดอันดับถูกต้อง พร้อมหลอดแสดง % Achievement | PASS |
| TC-25 | Top 10 Products | ตรวจสอบตารางจัดอันดับ Top 10 Products | เรียงลำดับสินค้าขายดีตามยอดกำไรขั้นต้น Margin (฿) และจำนวนชิ้นที่จำหน่ายได้ | แสดงสินค้ายอดนิยม 10 อันดับแรกพร้อมต้นทุนและ Margin | PASS |
| Suite 6: Executive Reports & Statement Print (รายงานผู้บริหารและการพิมพ์) | |||||
| TC-26 | Branch Report | เปิดเมนู Branch Report สำหรับผู้บริหาร | แสดงตารางเปรียบเทียบ Target, Actual, Margin %, Commission รายสาขา พร้อม Progress Bar | รายงานแสดงผลละเอียด ครบทุกมิติทางการเงิน | PASS |
| TC-27 | Sales Report | เปิดเมนู Sales Report สำหรับฝ่ายขาย | แสดงรายงานผลงานรายบุคคล เปรียบเทียบยอดขาย กำไร และค่าคอมมิชชั่น | รายงานรายบุคคลแสดงผลถูกต้องตามสังกัดสาขา | PASS |
| TC-28 | Print Statement | กดปุ่ม พิมพ์รายงานสรุปผลงาน (Print Statement) | จัดรูปแบบเป็นเอกสาร A4 Statement พร้อมหัวเอกสารทางการ และเปิด Print Dialog | จัดหน้าพิมพ์สวยงาม ไม่มีส่วนประกอบ UI แถบข้างปะปน | PASS |
| TC-29 | 3-Way Sign-off | ตรวจสอบช่องลงนามท้ายเอกสารรายงาน | มีช่องลงนามอนุมัติ 3 ฝ่าย (ผู้จัดทำรายงาน, ผู้จัดการฝ่ายขาย, ผู้อำนวยการฝ่ายบริหาร) | ช่องลงนามสมบูรณ์แบบตามมาตรฐานเอกสารทางการ | PASS |
| TC-30 | Excel Export | กดปุ่ม ส่งออก Excel จากหน้ารายงาน | ดาวน์โหลดไฟล์ .xlsx สรุปตารางรายงานพร้อมสูตรและตัวเลขสมบูรณ์ | ส่งออกไฟล์ Excel ได้อย่างรวดเร็ว เปิดดูใน MS Excel ได้ทันที | PASS |
| Suite 7: Master Data & Inventory Management (ข้อมูลหลักและคลังสินค้า) | |||||
| TC-31 | Branch Master | เพิ่ม ลบ แก้ไขสาขา และแก้ไขเป้ายอดขาย Target ในตารางแบบ Inline Edit | บันทึกข้อมูลสาขาลง D1 ทันที และเป้าใหม่มีผลต่อการคำนวณ % Achievement ทันที | แก้ไข Inline Target และบันทึกลง D1 สำเร็จ | PASS |
| TC-32 | Sales Staff Master | เพิ่ม ลบ แก้ไขพนักงาน และแก้ไขเรทคอมมิชชั่น Commission Rate % แบบ Inline Edit | บันทึกข้อมูลพนักงานลง D1 และเรทใหม่มีผลต่อการคำนวณงวดคอมมิชชั่นถัดไปทันที | แก้ไข Inline Rate % และบันทึกลง D1 สำเร็จ | PASS |
| TC-33 | Address Master | จัดการข้อมูลที่อยู่ 77 จังหวัด อำเภอ ตำบล และรหัสไปรษณีย์ | ค้นหาและจัดการที่อยู่ของสาขาได้อย่างถูกต้องตามมาตรฐานไปรษณีย์ไทย | จัดการข้อมูลที่อยู่ได้ครบถ้วนทั้ง 77 จังหวัด | PASS |
| TC-34 | Item Master | เพิ่ม ลบ แก้ไขสินค้า และแก้ไข Standard Cost % ในตารางแบบ Inline Edit | บันทึกต้นทุนมาตรฐานและราคาสินค้าลง D1 เพื่อใช้คำนวณ Margin อัตโนมัติ | แก้ไขราคาและ Standard Cost % สำเร็จ มีผลต่อการคำนวณบิลใหม่ทันที | PASS |
| TC-35 | Category & Unit | จัดการหมวดหมู่สินค้า (Item Category) และหน่วยนับ (Unit of Measure) | สามารถจัดกลุ่มประเภทสินค้าและกำหนดหน่วยนับมาตรฐานได้สมบูรณ์ | บันทึกหมวดหมู่และหน่วยนับได้อย่างถูกต้อง | PASS |
| Suite 8: Security, Auditing, Admin Tools & DB Wipe (ความปลอดภัยและเครื่องมือผู้ดูแล) | |||||
| TC-36 | Audit Logging | ทำกิจกรรมในระบบ (Login, Import, Approve, Edit, Delete, Master Update) | ระบบบันทึก Timestamp, ผู้กระทำ, Action Type, Target Entity และ JSON Details ลงตาราง Audit Logs | บันทึก Audit Logs ครบทุก Event แบบ Real-Time | PASS |
| TC-37 | Session Monitor | เปิดเมนู Sessions & IP Monitor สำหรับ Admin | แสดงรายการผู้ใช้ที่กำลัง Active ในระบบ พร้อมหมายเลข IP Address และเวลา Login ล่าสุด | แสดงรายการ Active Sessions และ IP ได้แม่นยำ | PASS |
| TC-38 | Force Terminate | Admin กดปุ่ม Force Terminate ตัดการเชื่อมต่อของเซสชันที่ผิดปกติ | เซสชันถูกยกเลิกทันที ผู้ใช้ฝั่งปลายทางถูกตัดการเชื่อมต่อและ Redirect กลับสู่หน้า Login | บังคับ Logout สำเร็จทันที ป้องกันภัยคุกคาม | PASS |
| TC-39 | SQL Console | Admin รันคำสั่ง SQL Query สดในหน้า SQL Query Console | ส่งคำสั่งประมวลผลที่ Cloudflare D1 แสดงผลลัพธ์เป็น Interactive Table พร้อมปุ่ม Export JSON/CSV | รัน SQL ได้แม่นยำ และส่งออกชุดข้อมูล JSON/CSV ได้ทันที | PASS |
| TC-40 | 1-Click DB Wipe | Admin กดปุ่ม ล้างข้อมูลธุรกรรมและบันทึกประวัติ ในหน้า Settings | ล้างข้อมูลบิลขาย รายการสินค้า คอมมิชชั่น และ Audit Logs โดยคงรักษา Master Data ไว้ 100% | ล้างข้อมูลธุรกรรมสะอาดหมดจด Master Data ปลอดภัย 100% | PASS |
| Suite 9: Personalization, Responsive UI & Architecture (การปรับแต่งและสถาปัตยกรรม) | |||||
| TC-41 | Theme Mode | สลับธีมระหว่าง Dark Mode, Light Mode และ System Sync ใน Settings | UI เปลี่ยนโทนสีทันที และบันทึกการตั้งค่าลง LocalStorage ประจำ User | สลับธีมลื่นไหล ไม่พบปัญหากะพริบของสี | PASS |
| TC-42 | Accent Color | เลือกเปลี่ยนสีเน้น (Indigo, Cyan, Emerald, Amber, Rose) | ปุ่ม, ไอคอน, แถบเมนู และกราฟิกเปลี่ยนสีเน้นตามที่เลือกทันที | สีเน้นเปลี่ยนครอบคลุมทั้งระบบอย่างสวยงาม | PASS |
| TC-43 | Offline Fallback | ทดสอบการทำงานเมื่อเครือข่ายหลุดหรือ D1 ไม่ตอบสนองชั่วคราว | ระบบสลับใช้ LocalStorage State Store เป็น Fallback ช่วยให้ผู้ใช้ทำงานต่อได้ไม่สะดุด | สลับใช้ Local Database Store ได้อย่างราบรื่น | PASS |
| TC-44 | ERD Viewer | เปิดดูแผนภาพสถาปัตยกรรมฐานข้อมูล Interactive 15-Table ERD Viewer | แสดงความสัมพันธ์ Primary Key / Foreign Key ของ 15 ตารางอย่างครบถ้วน | ERD Viewer แสดงผลโครงสร้างตารางได้คมชัดและสมบูรณ์ | PASS |
| TC-45 | Responsive Layout | ทดสอบการเปิดใช้งานบนหน้าจอความละเอียดต่างๆ (Desktop, Laptop, Tablet, Mobile) | Layout ปรับตัวแบบ Responsive Sidebar ย่อ/ขยาย และตารางมีแนวนอน Scroll Bar รองรับ | แสดงผลได้อย่างสมบูรณ์แบบทุกขนาดหน้าจอ | PASS |