2.0 KiB
2.0 KiB
Upload Checklist Configuration Implementation Plan
For Hermes: Implement task-by-task with TDD and verify the Docker deployment contract.
Goal: Bổ sung tại trang quản lý công cụ chức năng admin upload/thay thế cặp file checklist .xlsx và rule config .json cho từng OS.
Architecture: Dùng mapping OS_CONFIG hiện có làm allowlist tên đích; không cho client tự chọn đường dẫn/tên file. Backend validate role admin, extension, JSON, tạo .bak, rồi ghi file vào config/. Đổi bind mount config sang read-write để chức năng hoạt động trong Docker.
Tech Stack: FastAPI, Jinja2, Docker Compose, Python stdlib JSON/file I/O.
Task 1: Add regression tests
- Create
tests/test_checklist_config_upload.py. - Assert route exists, admin authorization is required, safe OS mapping is used, JSON is validated, and Compose config mount is writable.
- Run test and confirm RED.
Task 2: Implement secure upload endpoint
- Modify
app/web_app_fastapi.py. - Add
POST /admin/checklists/upload. - Require admin session.
- Accept
os_type, optional checklist.xlsx, optional config.json; require at least one. - Resolve destination only from
OS_CONFIG. - Validate JSON before write; write temporary file then atomic replace; back up existing files.
- Redirect with PRG status message.
Task 3: Add admin UI
- Modify
app/templates/admin_tools.html. - Add admin-only card showing current file names/status and multipart upload form.
- Analyzer remains limited to tool upload and cannot change checklist/rules.
Task 4: Enable persistence in Docker
- Modify
docker-compose.ymlfrom./config:/app/config:roto./config:/app/config. - Keep
config/as the only writable configuration directory required by this feature.
Task 5: Verify
- Run regression tests, Python compile/AST, Jinja parse, JSON checks,
docker compose config, andgit diff --check. - Grok execution review; fix any blocking findings.