feat: connect chat to managed model providers

This commit is contained in:
thanhnv
2026-07-10 17:40:44 +09:00
parent ef51c90d91
commit adce7717f7
9 changed files with 708 additions and 21 deletions
@@ -97,14 +97,37 @@ rebuild image Control Panel từ source mới nhất.
Đây là case đã chạy đầy đủ nhất.
### Kết nối và tải model lần đầu
1. Mở `/chat`, trong cột **Governance context** chọn
**Manage model connections**.
2. Với model local, bấm **Kết nối & tải model** tại `Ollama Local`. Endpoint mặc
định trong Docker là `http://host.docker.internal:11434`.
3. Với OmniRoute, giữ endpoint
`http://host.docker.internal:20128/v1` rồi bấm kết nối. Local gateway không
bắt buộc key; nếu production gateway có authentication thì cấu hình key ở
backend trước khi triển khai.
4. Với OpenAI/Codex API hoặc Anthropic/Claude API, nhập **API key**, không nhập
mật khẩu tài khoản ChatGPT/Claude. CASAN gọi Models API chính thức để tải
danh sách model mà key đó được phép dùng.
5. Chọn **Model mặc định**, đóng bảng kết nối, rồi chọn model cụ thể ngay trong
selector **Model** của Chat.
API key chỉ được gửi khi kết nối/reconnect, sau đó được mã hóa AES-256 theo
tenant trong CASAN state store. UI không có chức năng đọc lại key. Nếu bấm
**Disconnect**, bản ghi kết nối và secret tương ứng bị xóa.
Đăng nhập bằng tài khoản người dùng qua `codex login` hoặc Claude Code OAuth là
luồng đăng nhập riêng của các CLI đó. CASAN Chat không sao chép token đăng nhập
đã cache từ Codex/Claude Code; đây là ranh giới an toàn có chủ ý.
### Hỏi đáp trên evidence
1. Mở `/chat`.
2. Chọn Agent `Evidence Reader`.
3. Chọn Skill `evidence-summary`.
4. Chọn model:
- `local` để dùng Ornith/Ollama trên máy Mac;
- `omniroute` nếu key và gateway đã được truyền vào container.
4. Chọn model đã tải, ví dụ `Ollama Local · ornith:9b` hoặc
`OmniRoute Gateway · auto/best-coding`.
5. Hỏi: `Summarize the remaining production gaps and cite the evidence.`
CASAN sẽ quét câu hỏi, lấy context trong whitelist, gọi model nếu provider sẵn