package emailcli import ( "context" "fmt" ) // CreateAuditRule 创建审核规则。 // - RuleType: keyword / regex / domain // - Target: subject / body / to / from // - Action: RuleActionApprove / RuleActionReject / RuleActionToManual // - Priority: 数字越大优先级越高,未传时默认 0 // // POST /api/v1/audit-rules ServiceAuth func (c *Client) CreateAuditRule(ctx context.Context, req CreateAuditRuleReq) (*AuditRule, error) { return post[*AuditRule](c, ctx, "/api/v1/audit-rules", req) } // ListAuditRules 列出全部规则(不分页,按 Priority 降序)。 // // GET /api/v1/audit-rules ServiceAuth func (c *Client) ListAuditRules(ctx context.Context) ([]AuditRule, error) { return get[[]AuditRule](c, ctx, "/api/v1/audit-rules", nil) } // GetAuditRule 获取规则详情。 // // GET /api/v1/audit-rules/{id} ServiceAuth func (c *Client) GetAuditRule(ctx context.Context, id uint) (*AuditRule, error) { return get[*AuditRule](c, ctx, fmt.Sprintf("/api/v1/audit-rules/%d", id), nil) } // UpdateAuditRule 局部更新规则。 // // PUT /api/v1/audit-rules/{id} ServiceAuth func (c *Client) UpdateAuditRule(ctx context.Context, id uint, req UpdateAuditRuleReq) (*AuditRule, error) { return put[*AuditRule](c, ctx, fmt.Sprintf("/api/v1/audit-rules/%d", id), req) } // DeleteAuditRule 删除规则(软删除)。 // // DELETE /api/v1/audit-rules/{id} ServiceAuth func (c *Client) DeleteAuditRule(ctx context.Context, id uint) error { _, err := del[any](c, ctx, fmt.Sprintf("/api/v1/audit-rules/%d", id)) return err } // UpdateAuditRuleStatus 仅更新规则启停状态。status 使用 StatusEnabled/StatusDisabled 常量。 // // PUT /api/v1/audit-rules/{id}/status ServiceAuth func (c *Client) UpdateAuditRuleStatus(ctx context.Context, id uint, status int8) (*AuditRule, error) { return put[*AuditRule](c, ctx, fmt.Sprintf("/api/v1/audit-rules/%d/status", id), map[string]int8{"status": status}) } // TestAuditRule 用样本内容试跑规则命中,不真正发件。 // 返回的 Action 为 approve/reject/to_manual/none 之一。 // // POST /api/v1/audit-rules/test ServiceAuth func (c *Client) TestAuditRule(ctx context.Context, req TestAuditRuleReq) (*TestAuditRuleResp, error) { return post[*TestAuditRuleResp](c, ctx, "/api/v1/audit-rules/test", req) }