Implement classification redesign
This commit is contained in:
+10
-2
@@ -25,9 +25,14 @@ type ImportResult struct {
|
||||
State State `json:"state"`
|
||||
}
|
||||
|
||||
func addProposal(d *domain.Dataset, p classification.Proposal) error {
|
||||
func addProposal(d *domain.Dataset, p classification.Proposal, facts ...domain.Facts) error {
|
||||
if p.NewMerchant != nil {
|
||||
m := *p.NewMerchant
|
||||
if len(facts) > 0 {
|
||||
if alias := strings.Join(strings.Fields(facts[0].Counterparty), " "); alias != "" && !slices.Contains(m.Aliases, alias) {
|
||||
m.Aliases = append(m.Aliases, alias)
|
||||
}
|
||||
}
|
||||
if slices.ContainsFunc(d.Merchants, func(v domain.Merchant) bool { return v.ID == m.ID }) {
|
||||
return errors.New("proposed merchant ID already exists")
|
||||
}
|
||||
@@ -79,7 +84,10 @@ func (a *App) importFacts(ctx context.Context, s State, facts []domain.Facts, in
|
||||
p, e = a.classifier.Classify(ctx, t.Facts, s.Data, false)
|
||||
}
|
||||
if e == nil {
|
||||
e = addProposal(&s.Data, p)
|
||||
e = addProposal(&s.Data, p, t.Facts)
|
||||
if e == nil && p.Enrichment.MerchantID != "" {
|
||||
classification.LearnAlias(&s.Data, t.Facts, p.Enrichment.MerchantID)
|
||||
}
|
||||
}
|
||||
if e == nil {
|
||||
e = domain.ValidateEnrichment(s.Data, t.Facts, p.Enrichment)
|
||||
|
||||
Reference in New Issue
Block a user