mirror of
https://github.com/Yuyi-Oak/BlueArchiveToolkit.git
synced 2026-09-18 08:54:55 +08:00
feat(bat): 补全工作流校验与调度过滤
新增 parse clear-cache 和 i18n validate,补齐 schedule 的作用域过滤与单轮执行上限,并将列表过滤参数暴露给 bat-api dashboard。同步 RPC、OpenAPI、用户文档和回归测试。 Refs #43
This commit is contained in:
@@ -249,10 +249,19 @@ type ScheduleMutationParams struct {
|
||||
Enabled *bool `json:"enabled,omitempty"`
|
||||
}
|
||||
|
||||
// ScheduleListParams filters the Rust-owned schedule store.
|
||||
type ScheduleListParams struct {
|
||||
ID string `json:"id,omitempty"`
|
||||
Group string `json:"group,omitempty"`
|
||||
Enabled *bool `json:"enabled,omitempty"`
|
||||
}
|
||||
|
||||
// ScheduleRunParams selects a schedule or runs every due enabled schedule.
|
||||
type ScheduleRunParams struct {
|
||||
ID string `json:"id,omitempty"`
|
||||
Force bool `json:"force,omitempty"`
|
||||
ID string `json:"id,omitempty"`
|
||||
Group string `json:"group,omitempty"`
|
||||
Force bool `json:"force,omitempty"`
|
||||
MaxRuns *uint64 `json:"max_runs,omitempty"`
|
||||
}
|
||||
|
||||
// Ack is returned by accepted daemon control methods.
|
||||
@@ -454,6 +463,10 @@ func (c *Client) ScheduleList(ctx context.Context) (json.RawMessage, error) {
|
||||
return c.rawData(ctx, "schedule.list", nil)
|
||||
}
|
||||
|
||||
func (c *Client) ScheduleListFiltered(ctx context.Context, params ScheduleListParams) (json.RawMessage, error) {
|
||||
return c.rawData(ctx, "schedule.list", params)
|
||||
}
|
||||
|
||||
func (c *Client) ScheduleAdd(ctx context.Context, params ScheduleMutationParams) (json.RawMessage, error) {
|
||||
return c.rawData(ctx, "schedule.add", params)
|
||||
}
|
||||
|
||||
@@ -298,6 +298,44 @@ func TestScheduleUpdateSendsMutationParams(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestScheduleRunSendsScopeAndMaxRuns(t *testing.T) {
|
||||
maxRuns := uint64(2)
|
||||
client := newTestClient(t, func(t *testing.T, req testRequest) testResponse {
|
||||
if req.Method != "schedule.run" {
|
||||
t.Fatalf("method = %s", req.Method)
|
||||
}
|
||||
var params ScheduleRunParams
|
||||
if err := json.Unmarshal(req.Params, ¶ms); err != nil {
|
||||
t.Fatalf("decode params: %v", err)
|
||||
}
|
||||
if params.ID != "nightly-pull" || params.Group != "res" || !params.Force ||
|
||||
params.MaxRuns == nil || *params.MaxRuns != maxRuns {
|
||||
t.Fatalf("params = %#v", params)
|
||||
}
|
||||
return testResponse{
|
||||
Result: testEnvelope{
|
||||
OK: true,
|
||||
Status: "ok",
|
||||
RequestID: "req-test-schedule-run",
|
||||
Data: map[string]any{"command": "schedule-run", "executed": []any{}},
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
raw, err := client.ScheduleRun(context.Background(), ScheduleRunParams{
|
||||
ID: "nightly-pull",
|
||||
Group: "res",
|
||||
Force: true,
|
||||
MaxRuns: &maxRuns,
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("ScheduleRun error: %v", err)
|
||||
}
|
||||
if !json.Valid(raw) {
|
||||
t.Fatalf("invalid raw JSON: %s", string(raw))
|
||||
}
|
||||
}
|
||||
|
||||
func TestApplicationErrorReturnsAPIError(t *testing.T) {
|
||||
client := newTestClient(t, func(t *testing.T, req testRequest) testResponse {
|
||||
if req.Method != "task.status" {
|
||||
|
||||
Reference in New Issue
Block a user