if (RSPAMD_TASK_IS_PROCESSED(task)) {
/* Successful learn */
+ const char *learn_class = rspamd_task_get_autolearn_class(task);
msg_info_task("<%s> learned message as %s: %s",
rspamd_inet_address_to_string(session->from_addr),
- session->is_spam ? "spam" : "ham",
+ learn_class ? learn_class : (session->is_spam ? "spam" : "ham"),
MESSAGE_FIELD_CHECK(task, message_id));
rspamd_controller_send_string(conn_ent, "{\"success\":true}");
return TRUE;
task->err->message);
}
else {
+ const char *learn_class = rspamd_task_get_autolearn_class(task);
msg_info_task("<%s> learned message as %s: %s",
rspamd_inet_address_to_string(session->from_addr),
- session->is_spam ? "spam" : "ham",
+ learn_class ? learn_class : (session->is_spam ? "spam" : "ham"),
MESSAGE_FIELD_CHECK(task, message_id));
rspamd_controller_send_string(conn_ent, "{\"success\":true}");
}
return stcf->class_name;
}
+ /* For multiclass without explicit label mapping, use class_name directly */
+ if (stcf->class_name && !stcf->is_spam_converted) {
+ return stcf->class_name;
+ }
+
/* Fallback to legacy binary classification */
return stcf->is_spam ? "S" : "H";
}