package usecase

import "context"

// PersonaSnapshot — 靈感 prompt 注入用的完整人設（不含 API key）。
type PersonaSnapshot struct {
	ID         string
	Name       string
	Brief      string
	Status     string
	DraftText  string
	Voice      string
	GuardAvoid []string
	MaxChars   int
	BanAiTone  bool
	// DimSummaries key like d1Tone → summary
	DimSummaries map[string]string
}

// BrandSnapshot + products for catalog injection.
type BrandSnapshot struct {
	ID          string
	DisplayName string
	Brief       string
	Audience    string
	Goals       string
	Products    []ProductSnapshot
}

type ProductSnapshot struct {
	ID      string
	Label   string
	Context string
	Tags    []string
	Pains   []string
}

// PersonaSource resolves current / requested persona.
type PersonaSource interface {
	ResolvePersona(ctx context.Context, ownerUID int64, personaID string) (*PersonaSnapshot, error)
}

// BrandCatalogSource lists brands and nested products for the owner.
type BrandCatalogSource interface {
	ListCatalog(ctx context.Context, ownerUID int64) ([]BrandSnapshot, error)
}
