# DH-HIS Quản Lý Giao Ban Hằng Ngày (Golang Standalone) Ứng dụng độc lập (Single Binary Executable) viết bằng **Golang**, nhúng toàn bộ giao diện Web, cơ chế quản trị kết nối CSDL PostgreSQL bảo mật mã hóa AES-256, khay hệ thống (System Tray) cho Windows, và chức năng tự động kiểm tra/cập nhật phiên bản từ Gitea Package/Release. --- ## 🌟 1. Điểm nổi bật & Tính năng chính 1. **Chỉ 1 file duy nhất (Single Binary Executable)**: - Toàn bộ giao diện HTML, CSS, JavaScript, icon được nhúng trực tiếp vào file nhị phân qua `//go:embed`. - Không cần cài Node.js, không cần thư mục `node_modules` hay web server bên ngoài. - Dung lượng nhẹ: ~7.3 MB trên Windows (`.exe`) và ~6.8 MB trên Linux. 2. **Khay hệ thống (System Tray)**: - Chạy trên Windows có icon khay hệ thống, không hiện cửa sổ console đen (`-H windowsgui`). - Menu gồm: - 🌐 Mở Báo Cáo Giao Ban - ⚙️ Quản Trị & Cấu Hình - 📜 Xem Nhật Ký / Log App - 🔄 Kiểm Tra Cập Nhật - ❌ Thoát Ứng Dụng - Chạy trên Linux Server tự động chuyển sang chế độ Daemon / Service nền ổn định. 3. **Trang Quản Trị & Cấu Hình Kết Nối (`/admin`)**: - Tùy chỉnh Cổng Web (Port), đường dẫn quản trị. - Cấu hình kết nối PostgreSQL: Host, Port, User, Password, CSDL mặc định. - **Mã hóa AES-256-GCM**: Mật khẩu và Token được tự động mã hóa dạng `ENC(...)` khi lưu vào `config.json`, không lộ bản rõ. - Nút **"Thử Kết Nối (Test Connection)"** kiểm tra thông suốt CSDL ngay trên web. - Bảng quản lý danh sách CSDL các bệnh viện hiển thị trên dropdown. 4. **Nhật Ký Thời Gian Thực (Live Log Viewer)**: - Ring buffer 500 dòng log gần nhất lưu trong bộ nhớ và ghi ra `logs/app.log`. - Xem log trực tiếp trên trang quản trị có lọc theo cấp độ (INFO, WARN, ERROR, SQL) và tự động cuộn (Auto-scroll). 5. **Tự động kiểm tra & cập nhật phiên bản (Gitea Self-Update)**: - Kết nối với Gitea Releases / Generic Package Registry qua Token cá nhân. - Phát hiện phiên bản mới, xem ghi chú phát hành (*Release Notes*), tải và tự thay thế file binary đang chạy (*in-place binary replacement*). --- ## 🚀 2. Hướng dẫn biên dịch (Build) Chạy script biên dịch có sẵn: ```bash ./build.sh ``` Kết quả sinh ra 2 file: - `web-giao-ban`: File thực thi standalone cho Linux. - `web-giao-ban.exe`: File thực thi standalone cho Windows (chỉ cần copy sang máy Windows là click đúp chạy). --- ## 💻 3. Hướng dẫn sử dụng trên Windows 1. Copy file `web-giao-ban.exe` vào thư mục bất kỳ trên máy Windows (Ví dụ: `D:\DH-HIS\GiaoBan\`). 2. Nhấp đúp vào `web-giao-ban.exe` để chạy. 3. Icon chữ thập y tế màu xanh sẽ xuất hiện ở **Khay hệ thống (System Tray)** góc dưới bên phải màn hình. 4. Nhấp chuột phải vào icon khay hệ thống: - Bấm **"Mở Báo Cáo Giao Ban"** để mở trình duyệt xem số liệu. - Bấm **"Quản Trị & Cấu Hình"** để đổi thông số IP máy chủ hoặc CSDL. - Bấm **"Xem Nhật Ký / Log App"** để kiểm tra log hoạt động. - Bấm **"Kiểm Tra Cập Nhật"** để cập nhật phần mềm mới từ Gitea. - Bấm **"Thoát"** để dừng ứng dụng. --- ## 🐧 4. Quản lý dịch vụ trên Linux (Systemd Service) - **Xem trạng thái**: `./status.sh` hoặc `sudo systemctl status web-giao-ban` - **Khởi động**: `./start.sh` hoặc `sudo systemctl start web-giao-ban` - **Dừng dịch vụ**: `./stop.sh` hoặc `sudo systemctl stop web-giao-ban` - **Khởi động lại**: `./restart.sh` hoặc `sudo systemctl restart web-giao-ban` --- ## 🔒 5. Cấu trúc file cấu hình `config.json` File `config.json` được tự động sinh lần đầu tiên và mã hóa bảo mật: ```json { "server": { "port": 3000, "admin_path": "/admin", "admin_password": "ENC(...)" }, "database": { "host": "192.168.50.79", "port": 5437, "user": "postgres", "password": "ENC(...)", "default_db": "an_omon_full_04052026", "databases": [ { "id": "an_omon_full_04052026", "name": "BVĐK Ô Môn - Cần Thơ (33 GB - Chuẩn khoa phòng)" }, { "id": "tuan_dbgovap_full", "name": "BVĐK Gò Vấp - TP.HCM (65 GB - Dữ liệu lớn)" }, { "id": "binh_bvq12_062026052026042026032026022026", "name": "BV Quận 12 - TP.HCM (21 GB)" }, { "id": "bvq12_697", "name": "BV Quận 12 - Bản 697 (17 GB)" }, { "id": "an_dalieu_full_05082026", "name": "BV Da Liễu (31 GB)" } ] }, "updater": { "enabled": true, "gitea_url": "https://i.dh-his.com", "owner": "ongtrieuhau", "repo": "web-giao-ban", "token": "ENC(...)", "current_version": "v1.0.0" } } ``` --- ## 📦 6. Package & Release trên Gitea - **Repository**: [https://i.dh-his.com/ongtrieuhau/web-giao-ban](https://i.dh-his.com/ongtrieuhau/web-giao-ban) - **Generic Package**: [https://i.dh-his.com/ongtrieuhau/-/packages/generic/web-giao-ban/1.0.1](https://i.dh-his.com/ongtrieuhau/-/packages/generic/web-giao-ban/1.0.1) - **Release Assets**: [https://i.dh-his.com/ongtrieuhau/web-giao-ban/releases/tag/v1.0.1](https://i.dh-his.com/ongtrieuhau/web-giao-ban/releases/tag/v1.0.1) - `web-giao-ban.exe` (Windows x64) - `web-giao-ban-linux-amd64` (Linux x64)