116 lines
5.5 KiB
Markdown
116 lines
5.5 KiB
Markdown
# 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)
|