Files
web-giao-ban/README.md
T

116 lines
5.5 KiB
Markdown
Raw Normal View History

# 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)