FIX: lỗi màn hình đen trên docker
This commit is contained in:
@@ -3030,3 +3030,35 @@
|
||||
(3) `build_windows.bat` — `taskkill /F /T /IM` (tree).
|
||||
- **Các file ảnh hưởng:** main.py, src-tauri/src/lib.rs, build_windows.bat, wiki.md.
|
||||
- **Ghi chú/Test:** build lại exe + tauri → đóng app → Task Manager không còn daw_engine (cả tree) + không mở tab mới. Kill tay lúc này: `taskkill /F /T /IM daw_engine.exe`.
|
||||
|
||||
### [2026-08-08 09:40] Task: Docker compose không chạy — THIẾU .env (tạo ở task 08-07 nhưng chưa có file .env)
|
||||
- **Kiểm tra:** `docker-compose.prod.yml` (tạo task 08-07) — `env_file: .env` × 3 services (web/worker/beat) — NHƯNG **`.env` KHÔNG TỒN TẠI** (chỉ `.env.example` 516B) → `docker compose up` → lỗi `env file .env not found` → không chạy.
|
||||
- **FIX:**
|
||||
(1) TẠO `.env` (từ .env.example — REDIS_URL/CELERY/OPENAI/SECRET_KEY/IMAGE — SECRET_KEY đổi giá trị mặc định; ghi chú đổi trước production).
|
||||
(2) `docker-compose.prod.yml` — tối giản volumes: bỏ 3 volume chồng (sf_uploads/sf_processed/sf_db — sf_db bao cả storage) → **1 volume `sf_data:/app/app/storage`**.
|
||||
- **Lưu ý khác:** image `${IMAGE:-sonicforge-studio:latest}` — phải `docker build -t sonicforge-studio:latest .` TRƯỚC (hoặc set IMAGE=registry...); `docker-compose.prod.yml` dùng cho PRODUCTION (không mount source) — dev dùng `docker-compose.yml` cũ.
|
||||
- **Các file ảnh hưởng:** .env (mới), docker-compose.prod.yml, wiki.md.
|
||||
- **Ghi chú/Test:** `docker compose -f docker-compose.prod.yml up -d` — hết lỗi env file; nếu image chưa build → `docker build -t sonicforge-studio:latest .` trước.
|
||||
|
||||
### [2026-08-08 09:45] Task: FIX màn đen — 401 không mở màn login (dùng cached user sai)
|
||||
- **Log bản mới:** `GET /api/v1/auth/profile 401` + `/plugins/available 401` — root rỗng (màn đen).
|
||||
- **Kịch bản:** browser còn `sonic_token` CŨ (ký SECRET_KEY cũ — .env mới đổi secret) + `sonic_user` CACHED → `checkAuthStatus` profile 401 → `catch` DÙNG cached user → vào app "như đã login" → mọi API 401 (token đã bị xóa) → giao diện không dữ liệu = đen, KHÔNG mở login.
|
||||
- **FIX:**
|
||||
(1) `app.jsx checkAuthStatus catch` — phát hiện 401 (errMsg chứa 401/Unauthorized/Không xác thực) → BỎ QUA cached → xóa token + mở AuthModal(login); cached chỉ dùng khi lỗi MẠNG (offline).
|
||||
(2) `services/api.js` — 401 bất kỳ → `window.__onAuthFail()` (mở login ngay).
|
||||
(3) `app.jsx` — đăng ký `window.__onAuthFail` (setCurrentUser null + mở login).
|
||||
- **Các file ảnh hưởng:** app/static/js/app.jsx, app/static/js/services/api.js, app/templates/index.html (?v=202608080945), wiki.md. Build PASS.
|
||||
- **Ghi chú/Test:** hard refresh server → 401 → HIỆN MÀN ĐĂNG NHẬP (thay vì đen) → đăng nhập admin (DEFAULT_ADMIN_PASSWORD trong .env) → vào app. (User cũ có token hỏng → tự động về login.)
|
||||
|
||||
### [2026-08-08 09:50] Task: FIX màn đen (2) — 401 detail tiếng Việt không khớp matcher
|
||||
- **Vẫn đen sau 0945:** log `GET /api/v1/plugins/available 401` — checkAuthStatus catch — isAuthErr FALSE vì 401 detail của server (auth.py) = "Thiếu Token xác thực hoặc Token không hợp lệ" / "Token đã hết hạn hoặc không hợp lệ" — KHÔNG chứa '401'/'Unauthorized' → cached user vẫn được dùng → đen.
|
||||
- **FIX (app.jsx):** matcher thêm `errMsg.includes('Token')` (phủ cả 2 detail của auth.py).
|
||||
- **Các file ảnh hưởng:** app/static/js/app.jsx, app/templates/index.html (?v=202608080950), wiki.md. Build PASS.
|
||||
- **Ghi chú/Test:** hard refresh (Ctrl+Shift+R — nạp ?v=0950) → 401 → MÀN ĐĂNG NHẬP hiện → login admin/admin123 (hoặc DEFAULT_ADMIN_PASSWORD trong .env) → vào app.
|
||||
|
||||
### [2026-08-08 09:55] Task: FIX desktop — nhiều daw_engine + không tắt được + màn đen
|
||||
- **Lỗi:** mỗi lần mở app → spawn thêm daw_engine (cũ không tắt — kill thiếu /T hoặc Tauri crash không kịp kill) → nhiều instance → port 8000 chiếm → lần mở sau: window load vào server cũ / không bind được → MÀN ĐEN (giống docker — nhưng nguyên nhân khác: instance/port).
|
||||
- **FIX (main.py — entry daw_engine.exe):** SINGLE-INSTANCE — kiểm tra port 8000 (socket bind test) — NẾU ĐÃ CÓ server → `sys.exit(0)` (window dùng server đang chạy — không spawn thêm).
|
||||
- **SECRET_KEY:** đã ổn định (env > {STORAGE}/.secret_key persist > ephemeral) — không phải nguyên nhân.
|
||||
- **Các file ảnh hưởng:** main.py, wiki.md. (Cần build lại exe: pyinstaller engine.spec --clean --noconfirm → copy sidecar → npx tauri build.)
|
||||
- **Kill tay lúc này:** `taskkill /F /T /IM daw_engine.exe` (có /T — giết CẢ tree — PyInstaller onefile parent+child).
|
||||
|
||||
Reference in New Issue
Block a user