模块介绍 / 今日规划 / 下班日报 / 团队摘要 生成成功后没有上报,也几乎不写「AI」日志。
流结束时的 usage 用了非阻塞发送,通道一满就被丢掉;很多服务商默认还不在流里带 usage。 现在每次真正打到模型的调用都会: 在本地日志(分类 AI,消息 AI 调用完成)写下 scene / prompt / completion / cached 登录后同步上报到后台日汇总
This commit is contained in:
10
team.go
10
team.go
@@ -619,16 +619,21 @@ func (a *App) generateTeamDigest(teamID int64, date string) {
|
||||
prompt := fmt.Sprintf("以下是团队「%s」%s 的 %d 份成员日报,请生成一份团队日报摘要(Markdown):\n"+
|
||||
"1. 今日完成事项汇总(合并同类项)\n2. 进行中的工作\n3. 风险与阻塞(没有则省略)\n4. 每位成员一句话点评\n5. 明日建议\n\n%s",
|
||||
teamName, date, n, sb.String())
|
||||
stream, e := provider.ChatStream(ctx, []ai.Message{
|
||||
digestMsgs := []ai.Message{
|
||||
{Role: "system", Content: "你是资深研发团队负责人助理,输出简洁、结构化的中文 Markdown 团队日报摘要,不要编造日报里没有的内容。"},
|
||||
{Role: "user", Content: prompt},
|
||||
})
|
||||
}
|
||||
stream, e := provider.ChatStream(ctx, digestMsgs)
|
||||
if e != nil {
|
||||
emitErr(e.Error())
|
||||
return
|
||||
}
|
||||
var out strings.Builder
|
||||
var usage *ai.Usage
|
||||
for chunk := range stream {
|
||||
if chunk.Usage != nil {
|
||||
usage = chunk.Usage
|
||||
}
|
||||
if chunk.Err != nil {
|
||||
emitErr(chunk.Err.Error())
|
||||
return
|
||||
@@ -647,6 +652,7 @@ func (a *App) generateTeamDigest(teamID int64, date string) {
|
||||
emitErr(e.Error())
|
||||
return
|
||||
}
|
||||
a.recordAIUsage(provider.Name(), "team_digest", usage, digestMsgs, content)
|
||||
a.store.Log("info", "团队", "团队日报摘要已生成", fmt.Sprintf("team=%d date=%s", teamID, date))
|
||||
a.emit("team:digest", teamDigestEvent{TeamID: teamID, Date: date})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user