No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

45 líneas
984B

  1. package mapping
  2. import (
  3. "fmt"
  4. "strings"
  5. "qctextbuilder/internal/domain"
  6. )
  7. type Service interface {
  8. AssembleAIData(fields []domain.TemplateField, values map[string]string) (map[string]map[string]any, error)
  9. }
  10. type RawKeyService struct{}
  11. func New() *RawKeyService {
  12. return &RawKeyService{}
  13. }
  14. func (s *RawKeyService) AssembleAIData(fields []domain.TemplateField, values map[string]string) (map[string]map[string]any, error) {
  15. allowed := make(map[string]domain.TemplateField, len(fields))
  16. for _, f := range fields {
  17. if !f.IsEnabled || f.FieldKind != "text" {
  18. continue
  19. }
  20. allowed[f.Path] = f
  21. }
  22. out := make(map[string]map[string]any)
  23. for path, value := range values {
  24. if strings.TrimSpace(value) == "" {
  25. continue
  26. }
  27. f, ok := allowed[path]
  28. if !ok {
  29. return nil, fmt.Errorf("unknown or disabled field path: %s", path)
  30. }
  31. if out[f.Section] == nil {
  32. out[f.Section] = make(map[string]any)
  33. }
  34. out[f.Section][f.KeyName] = value
  35. }
  36. return out, nil
  37. }