1. 播放器歌词效果
This commit is contained in:
Binary file not shown.
@@ -63,7 +63,7 @@ type Danmaku struct {
|
||||
ID uint `gorm:"primaryKey;comment:主键ID" json:"id"`
|
||||
Name string `gorm:"column:name;size:50;not null;default:'';comment:发送者姓名" json:"name"`
|
||||
Content string `gorm:"column:content;type:text;not null;comment:祝福内容" json:"content"`
|
||||
Color string `gorm:"column:color;size:20;not null;default:champagne;comment:弹幕颜色key" json:"color"`
|
||||
Color string `gorm:"column:color;size:32;not null;default:champagne;comment:弹幕颜色key" json:"color"`
|
||||
Source string `gorm:"column:source;size:20;not null;default:danmaku;comment:来源 danmaku|rsvp" json:"source"`
|
||||
RsvpID *uint `gorm:"column:rsvp_id;comment:关联回执ID" json:"rsvp_id"`
|
||||
Status string `gorm:"column:status;size:20;not null;default:pending;index;comment:审核状态 pending|approved|rejected" json:"status"`
|
||||
@@ -116,15 +116,21 @@ func saveModerationCache(typ, content, status, reason string) {
|
||||
}
|
||||
|
||||
var danmakuColorWhitelist = map[string]struct{}{
|
||||
"champagne": {},
|
||||
"blush": {},
|
||||
"apricot": {},
|
||||
"gold": {},
|
||||
"lilac": {},
|
||||
"sky": {},
|
||||
"mauve": {},
|
||||
"slate": {},
|
||||
"ink": {},
|
||||
"champagne": {},
|
||||
"blush": {},
|
||||
"apricot": {},
|
||||
"gold": {},
|
||||
"lilac": {},
|
||||
"sky": {},
|
||||
"mauve": {},
|
||||
"slate": {},
|
||||
"ink": {},
|
||||
"gradSunset": {},
|
||||
"gradChampagne": {},
|
||||
"gradBlush": {},
|
||||
"gradOcean": {},
|
||||
"gradAurora": {},
|
||||
"gradEmber": {},
|
||||
}
|
||||
|
||||
func normalizeDanmakuColor(color string) string {
|
||||
@@ -636,7 +642,6 @@ func main() {
|
||||
return
|
||||
}
|
||||
var body struct {
|
||||
Name string `json:"name"`
|
||||
Style string `json:"style"`
|
||||
}
|
||||
if err := c.ShouldBindJSON(&body); err != nil {
|
||||
@@ -647,7 +652,7 @@ func main() {
|
||||
c.JSON(400, gin.H{"error": "请选择祝福风格"})
|
||||
return
|
||||
}
|
||||
text, err := sparkClient.GenerateBlessing(body.Name, body.Style)
|
||||
text, err := sparkClient.GenerateBlessing(body.Style)
|
||||
if err != nil {
|
||||
c.JSON(500, gin.H{"error": err.Error()})
|
||||
return
|
||||
|
||||
@@ -18,30 +18,34 @@ func NormalizeStyle(style string) (string, bool) {
|
||||
return s, ok
|
||||
}
|
||||
|
||||
func (c *Client) GenerateBlessing(name, style string) (string, error) {
|
||||
func (c *Client) GenerateBlessing(style string) (string, error) {
|
||||
styleKey, ok := NormalizeStyle(style)
|
||||
if !ok {
|
||||
return "", fmt.Errorf("无效的祝福风格")
|
||||
}
|
||||
label := BlessingStyles[styleKey]
|
||||
guest := strings.TrimSpace(name)
|
||||
guestHint := "宾客未署名"
|
||||
if guest != "" {
|
||||
guestHint = "宾客姓名:" + guest
|
||||
}
|
||||
|
||||
styleGuide := map[string]string{
|
||||
"classic": "用文言雅致、含蓄温润的古风表达,可适度用典故意象,忌生僻堆砌。",
|
||||
"modern": "用简洁真诚的现代汉语,自然得体,适合婚礼现场朗读。",
|
||||
"funny": "轻松幽默、俏皮可爱,但保持祝福善意,不低俗。",
|
||||
"roast": "损友互怼口吻,先轻度调侃再真心祝福,尺度友好不人身攻击。",
|
||||
"classic": "文言雅致、含蓄温润;可点到意象(花月、琴瑟、白首),忌生僻堆砌与整段文言文。",
|
||||
"modern": "口语真诚、干净利落;像朋友当面说的话,不鸡汤、不口号堆叠。",
|
||||
"funny": "俏皮轻松、会心一笑;可玩梗但保持善意,忌低俗与尴尬烂梗。",
|
||||
"roast": "损友口吻:先轻怼一句再落真心祝福;尺度友好,不人身攻击、不揭隐私。",
|
||||
}
|
||||
|
||||
sys := "你是婚礼祝福文案助手。只输出一条中文祝福正文,不要标题、不要解释、不要引号包裹。"
|
||||
user := fmt.Sprintf(`请写一条婚礼祝福。
|
||||
风格:%s(%s)
|
||||
%s
|
||||
要求:30到60个汉字;积极祝福新人;不要出现违法、色情、歧视或辱骂内容。`, label, styleGuide[styleKey], guestHint)
|
||||
sys := `你是婚礼短祝福文案助手。
|
||||
只输出一条可直接填写的中文祝福正文。
|
||||
禁止:标题、序号、引号包裹、解释说明、表情符号、英文、话题标签。
|
||||
禁止:出现任何真实姓名、网名、称呼占位(如某某、X先生/女士)、新郎新娘具体姓氏。
|
||||
称呼统一用「你们」「新人」等泛称即可。
|
||||
文案要有意境:有画面感与余韵,可用轻巧意象(光、风、茶、路、灯火、四季等)点染,忌空泛套话与意象堆砌。`
|
||||
|
||||
user := fmt.Sprintf(`请写一条送给婚礼新人的短祝福。
|
||||
风格:%s
|
||||
写法:%s
|
||||
意境:先落一两处可感的画面或氛围,再落到真诚祝福,读完有余味。
|
||||
篇幅:28~48个汉字,一两句说完。
|
||||
内容:祝福婚姻美满、相守与日常,语气自然,适合弹幕或回执留言。
|
||||
请直接输出祝福正文。`, label, styleGuide[styleKey])
|
||||
|
||||
return c.Chat([]Message{
|
||||
{Role: "system", Content: sys},
|
||||
|
||||
Reference in New Issue
Block a user