:::mermaid
flowchart TD
A["🔵 Bắt đầu: analyze_db_health"] --> B["Phân tích tham số health_type"]
B --> C{"Phân tích Health Types"}
C --> D["Tách theo dấu phẩy nếu nhiều"]
D --> E{"health_type = 'all'?"}
E -->|"Có"| F["Chạy tất cả kiểm tra"]
E -->|"Không"| G["Chạy kiểm tra đã chọn"]
F --> H["Health Check Router"]
G --> H
H --> I1{"index?"}
H --> I2{"connection?"}
H --> I3{"vacuum?"}
H --> I4{"sequence?"}
H --> I5{"replication?"}
H --> I6{"buffer?"}
H --> I7{"constraint?"}
I1 -->|"Có"| J1["Index Health:<br/>- Invalid indexes<br/>- Duplicate indexes<br/>- Bloated indexes"]
I2 -->|"Có"| J2["Connection Health:<br/>- Active connections<br/>- Idle connections<br/>- Mức sử dụng connection"]
I3 -->|"Có"| J3["Vacuum Health:<br/>- Dead tuples<br/>- Lần vacuum cuối<br/>- Rủi ro XID wraparound"]
I4 -->|"Có"| J4["Sequence Health:<br/>- Gần giá trị max<br/>- Rủi ro overflow"]
I5 -->|"Có"| J5["Replication Health:<br/>- Replication lag<br/>- Trạng thái Slot"]
I6 -->|"Có"| J6["Buffer Health:<br/>- Cache hit ratio<br/>- Table hit rates<br/>- Index hit rates"]
I7 -->|"Có"| J7["Constraint Health:<br/>- Invalid constraints<br/>- Broken FK refs"]
J1 --> K["Tổng hợp kết quả"]
J2 --> K
J3 --> K
J4 --> K
J5 --> K
J6 --> K
J7 --> K
K --> L["Tính điểm Health tổng thể"]
L --> M["Định dạng báo cáo Health:<br/>- Tóm tắt<br/>- Vấn đề phát hiện<br/>- Đề xuất"]
M --> N["Trả về kết quả"]
N --> O["🔴 Kết thúc"]
style A fill:#4CAF50,color:white
style O fill:#f44336,color:white
style E fill:#2196F3,color:white
style H fill:#9C27B0,color:white