Files
moteva/server/internal/domain/brandkit/brand_kit.go
T
root 789f51b29e feat(server): add brand kit management and project binding
Add a brand kit domain with memory and postgres stores, a BrandKitService
for CRUD and resolution, and REST endpoints to list, upsert, and delete
brand kits. Projects can bind a brand kit whose resolved context and
reference images feed into the agent's long-term memory and design prompts.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 20:58:55 +08:00

39 lines
839 B
Go

package brandkit
import (
"context"
"encoding/json"
"errors"
"time"
)
var (
ErrInvalidInput = errors.New("invalid brand kit")
ErrNotFound = errors.New("brand kit not found")
ErrConflict = errors.New("brand kit conflict")
)
type Kit struct {
ID string
UserID string
Name string
Document json.RawMessage
IsDefault bool
CreatedAt time.Time
UpdatedAt time.Time
}
type Store interface {
List(ctx context.Context, userID string) ([]Kit, error)
Get(ctx context.Context, userID string, id string) (Kit, error)
GetDefault(ctx context.Context, userID string) (Kit, error)
Upsert(ctx context.Context, kit Kit) (Kit, error)
Delete(ctx context.Context, userID string, id string) error
Close() error
}
func Clone(kit Kit) Kit {
kit.Document = append(json.RawMessage(nil), kit.Document...)
return kit
}