feat: 增加管理员 AI 模型配置 (#200)

This commit is contained in:
chengma
2026-08-14 09:49:11 +08:00
parent ad44f83ea6
commit 018da3f732
24 changed files with 1546 additions and 8 deletions
+31
View File
@@ -570,6 +570,13 @@ func TestMainPagesReturnOK(t *testing.T) {
}
})
}
aiSettingsRequest := httptest.NewRequest(http.MethodGet, "/settings/ai", nil)
addAuth(aiSettingsRequest)
aiSettingsResponse := httptest.NewRecorder()
router.ServeHTTP(aiSettingsResponse, aiSettingsRequest)
if aiSettingsResponse.Code != http.StatusOK || !strings.Contains(aiSettingsResponse.Body.String(), "AI 模型配置") {
t.Fatalf("管理员 GET /settings/ai = %d,响应:%s", aiSettingsResponse.Code, aiSettingsResponse.Body.String())
}
pddRequest := httptest.NewRequest(http.MethodGet, "/pdd", nil)
addAuth(pddRequest)
@@ -608,6 +615,30 @@ func TestMainPagesReturnOK(t *testing.T) {
if usersResponse.Code != http.StatusForbidden {
t.Fatalf("采购员 GET /users = %d,期望 403", usersResponse.Code)
}
aiDeniedRequest := httptest.NewRequest(http.MethodGet, "/settings/ai", nil)
aiDeniedRequest.AddCookie(&http.Cookie{Name: "cmautobuy_session", Value: buyerToken})
aiDeniedResponse := httptest.NewRecorder()
router.ServeHTTP(aiDeniedResponse, aiDeniedRequest)
if aiDeniedResponse.Code != http.StatusForbidden {
t.Fatalf("采购员 GET /settings/ai = %d,期望 403", aiDeniedResponse.Code)
}
buyerPageRequest := httptest.NewRequest(http.MethodGet, "/shopee", nil)
buyerPageRequest.AddCookie(&http.Cookie{Name: "cmautobuy_session", Value: buyerToken})
buyerPageResponse := httptest.NewRecorder()
router.ServeHTTP(buyerPageResponse, buyerPageRequest)
buyerCSRF := findResponseCookie(t, buyerPageResponse, "cmautobuy_csrf")
for _, path := range []string{
"/settings/ai/save", "/settings/ai/secret", "/settings/ai/secret/clear",
"/settings/ai/test", "/settings/ai/enable", "/settings/ai/disable",
} {
request := postFormRequest(path, url.Values{"csrf_token": {buyerCSRF.Value}}, buyerCSRF)
request.AddCookie(&http.Cookie{Name: "cmautobuy_session", Value: buyerToken})
response := httptest.NewRecorder()
router.ServeHTTP(response, request)
if response.Code != http.StatusForbidden {
t.Fatalf("采购员 POST %s = %d,期望 403", path, response.Code)
}
}
for _, client := range []model.Client{
{ClientID: "CLIENT-LIVE", Name: "真实采购机", Capabilities: `{"purchase_mode":"live"}`},
{ClientID: "CLIENT-DRY", Name: "未就绪机", Capabilities: `{"purchase_mode":"dry_run"}`},