Merge RspamdSymbol into SpamTestDetail in OpenAPI spec

Add params field to SpamTestDetail, update RspamdResult.symbols to
reference SpamTestDetail instead of the now-removed RspamdSymbol schema,
and update Go code accordingly.
This commit is contained in:
nemunaire 2026-03-26 08:58:03 +07:00
commit 5c104f3c99
3 changed files with 8 additions and 23 deletions

View file

@ -926,6 +926,10 @@ components:
format: float
description: Score contribution of this test
example: -1.9
params:
type: string
description: Symbol parameters or options
example: "0.02"
description:
type: string
description: Human-readable description of what this test checks
@ -975,7 +979,7 @@ components:
symbols:
type: object
additionalProperties:
$ref: '#/components/schemas/RspamdSymbol'
$ref: '#/components/schemas/SpamTestDetail'
description: Map of triggered rspamd symbols to their details
example:
BAYES_HAM:
@ -986,25 +990,6 @@ components:
type: string
description: Full rspamd report (raw X-Spamd-Result header)
RspamdSymbol:
type: object
required:
- name
- score
properties:
name:
type: string
description: Symbol name
example: "BAYES_HAM"
score:
type: number
format: float
description: Score contribution of this symbol
example: -1.9
params:
type: string
description: Symbol parameters or options
example: "0.02"
DNSResults:
type: object

View file

@ -59,7 +59,7 @@ func (a *RspamdAnalyzer) AnalyzeRspamd(email *EmailMessage) *api.RspamdResult {
}
result := &api.RspamdResult{
Symbols: make(map[string]api.RspamdSymbol),
Symbols: make(map[string]api.SpamTestDetail),
}
// Parse X-Spamd-Result header (primary source for score, threshold, and symbols)
@ -129,7 +129,7 @@ func (a *RspamdAnalyzer) parseSpamdResult(header string, result *api.RspamdResul
if len(matches) > 2 {
name := matches[1]
score, _ := strconv.ParseFloat(matches[2], 64)
sym := api.RspamdSymbol{
sym := api.SpamTestDetail{
Name: name,
Score: float32(score),
}

View file

@ -131,7 +131,7 @@ func TestParseSpamdResult(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
result := &api.RspamdResult{
Symbols: make(map[string]api.RspamdSymbol),
Symbols: make(map[string]api.SpamTestDetail),
}
analyzer.parseSpamdResult(tt.header, result)