package analyzer import ( "context" "image" "materialanalyzer/internal/embedding" "materialanalyzer/internal/model" ) type ColorAnalyzer interface { Analyze(ctx context.Context, img image.Image) (model.VisualFeatures, model.ColorHistogram, error) } type TextureAnalyzer interface { Analyze(ctx context.Context, img image.Image) (model.TextureFeatures, error) } type StatisticsAnalyzer interface { Analyze(ctx context.Context, img image.Image, visual model.VisualFeatures, texture model.TextureFeatures) (model.CanonicalStatistics, error) } type SemanticAnalyzer interface { Analyze(ctx context.Context, imagePath string, product model.Product, visual model.VisualFeatures, texture model.TextureFeatures) (model.SemanticFeatures, error) } type EmbeddingAnalyzer interface { Embed(ctx context.Context, req embedding.Request) (embedding.Result, error) } type MaterialAdapter interface { Adapt(product model.Product, visual model.VisualFeatures, texture model.TextureFeatures, semantic model.SemanticFeatures) (map[string]interface{}, error) }