:::mermaid
flowchart TD
A["🔵 Bắt đầu: query_revenue"] --> B["Phân tích tham số"]
B --> C["Kiểm tra tham số"]
C --> D{"Định dạng billing_cycle hợp lệ?"}
D -->|"Không"| E["Trả về lỗi:<br/>Định dạng ngày không hợp lệ DD-MM-YYYY"]
D -->|"Có"| F["Xây dựng Query Filters"]
F --> G{"billing_cycle?"}
G -->|"Có"| H["Thêm filter billing_cycle"]
G -->|"Không"| I["Tiếp tục"]
H --> I
I --> J{"service_type?"}
J -->|"Có"| K["Thêm filter service_type:<br/>cloud_server, dbaas, cdn, etc."]
J -->|"Không"| L["Tiếp tục"]
K --> L
L --> M{"billing_plan?"}
M -->|"Có"| N["Thêm filter billing_plan:<br/>on_demand / subscription"]
M -->|"Không"| O["Tiếp tục"]
N --> O
O --> P{"email?"}
P -->|"Có"| Q["Thêm filter email"]
P -->|"Không"| R["Tiếp tục"]
Q --> R
R --> S{"aggregation?"}
S -->|"account"| T["GROUP BY account_id, email"]
S -->|"service"| U["GROUP BY service_type"]
S -->|"billing_plan"| V["GROUP BY billing_plan"]
T --> W["Xây dựng Query cuối cùng"]
U --> W
V --> W
W --> X["Thêm mệnh đề LIMIT"]
X --> Y["Thực thi Query"]
Y --> Z{"Query thành công?"}
Z -->|"Không"| AA["Trả về lỗi"]
Z -->|"Có"| AB["Tính tóm tắt:<br/>- Tổng doanh thu<br/>- Doanh thu TB<br/>- Số lượng"]
AB --> AC["Định dạng Response:<br/>- Dữ liệu rows<br/>- Thống kê tóm tắt"]
AC --> AD["Trả về kết quả"]
AD --> AE["🔴 Kết thúc"]
E --> AE
AA --> AE
style A fill:#4CAF50,color:white
style AE fill:#f44336,color:white
style D fill:#FF9800,color:white
style S fill:#2196F3,color:white
style Z fill:#FF9800,color:white
:::