feat(kol): KOL workspace services (profile/package/prompt/asset/renderer)

This commit is contained in:
2026-04-17 09:19:30 +08:00
parent 76f5c73773
commit 6029b0b169
6 changed files with 1066 additions and 0 deletions
@@ -0,0 +1,36 @@
package app
import (
"context"
"fmt"
"github.com/geo-platform/tenant-api/internal/shared/objectstorage"
)
type KolPromptAsset struct {
storage objectstorage.Client
}
func NewKolPromptAsset(storage objectstorage.Client) *KolPromptAsset {
return &KolPromptAsset{storage: storage}
}
func (a *KolPromptAsset) assetKey(tenantID, promptID int64, revisionNo int) string {
return fmt.Sprintf("kol-prompts/%d/%d/%d.txt", tenantID, promptID, revisionNo)
}
func (a *KolPromptAsset) Put(ctx context.Context, tenantID, promptID int64, revisionNo int, content string) (string, error) {
key := a.assetKey(tenantID, promptID, revisionNo)
if err := a.storage.PutBytes(ctx, key, []byte(content), "text/plain; charset=utf-8"); err != nil {
return "", err
}
return key, nil
}
func (a *KolPromptAsset) Get(ctx context.Context, assetKey string) (string, error) {
content, err := a.storage.GetBytes(ctx, assetKey)
if err != nil {
return "", err
}
return string(content), nil
}