47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
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)
|
||
}
|