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>
This commit is contained in:
2026-07-10 20:58:55 +08:00
parent 3653474355
commit 789f51b29e
38 changed files with 2165 additions and 135 deletions
+9 -7
View File
@@ -195,6 +195,7 @@ func toAPIProject(project design.Project) types.Project {
SnapshotId: project.SnapshotID,
Canvas: project.Canvas,
LastThreadId: project.LastThreadID,
BrandKitId: project.BrandKitID,
Viewport: toAPIView(project.Viewport),
Nodes: toAPINodes(project.Nodes),
Connections: toAPIConnections(project.Connections),
@@ -206,13 +207,14 @@ func toAPISummaries(items []design.ProjectSummary) []types.ProjectSummary {
resp := make([]types.ProjectSummary, 0, len(items))
for _, item := range items {
resp = append(resp, types.ProjectSummary{
Id: item.ID,
UserId: item.UserID,
Title: item.Title,
Brief: item.Brief,
Status: string(item.Status),
Thumbnail: item.Thumbnail,
UpdatedAt: formatTime(item.UpdatedAt),
Id: item.ID,
UserId: item.UserID,
Title: item.Title,
Brief: item.Brief,
Status: string(item.Status),
Thumbnail: item.Thumbnail,
BrandKitId: item.BrandKitID,
UpdatedAt: formatTime(item.UpdatedAt),
})
}
return resp