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

View file

@ -59,7 +59,7 @@ func (a *RspamdAnalyzer) AnalyzeRspamd(email *EmailMessage) *api.RspamdResult {
} }
result := &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) // 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 { if len(matches) > 2 {
name := matches[1] name := matches[1]
score, _ := strconv.ParseFloat(matches[2], 64) score, _ := strconv.ParseFloat(matches[2], 64)
sym := api.RspamdSymbol{ sym := api.SpamTestDetail{
Name: name, Name: name,
Score: float32(score), Score: float32(score),
} }

View file

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