You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

65 lines
3.8 KiB

syntax = "proto3";
option go_package = ".;pb";
// 任务类型(用户选择用于提醒的循环方式;服务端仅做记录,不自动触发)
enum TaskType {
TaskType_Once = 0; // 一次性提醒
TaskType_Daily = 1; // 每天重复
TaskType_Weekly = 2; // 每周重复
TaskType_Monthly = 3; // 每月重复
TaskType_Cron = 4; // 自定义 cron 表达式
}
// 任务状态(服务端仅记录用户的手动生命周期)
enum TaskStatus {
TaskStatus_Pending = 0; // 进行中
TaskStatus_Completed = 2; // 用户已确认完成
TaskStatus_Cancelled = 3; // 已取消
}
//用户任务记录表(仅记录,不做自动触发)
message DBTask {
uint64 id = 1; //@go_tags(`gorm:"primaryKey;autoIncrement" json:"id"`) 主键自增
string uid = 2; //@go_tags(`gorm:"size:50;index" json:"uid"`) 用户ID
string task_name = 3; //@go_tags(`gorm:"size:100" json:"task_name"`) 任务标题
string task_desc = 4; //@go_tags(`gorm:"size:500" json:"task_desc"`) 任务描述
TaskType task_type = 5; //@go_tags(`gorm:"default:0" json:"task_type"`) 任务类型(仅记录用户选择)
string trigger_time = 6; //@go_tags(`gorm:"size:40;index" json:"trigger_time"`) 用户希望的提醒时间(带时区的RFC3339字符串,如 2025-04-08T15:00:00+08:00)
string cron_expr = 7; //@go_tags(`gorm:"size:100" json:"cron_expr"`) cron表达式
int64 create_time = 8; //@go_tags(`gorm:"index" json:"create_time"`) 创建时间
int64 update_time = 9; //@go_tags(`json:"update_time"`) 更新时间
int64 finish_time = 10; //@go_tags(`gorm:"index" json:"finish_time"`) 完成时间
TaskStatus status = 11; //@go_tags(`gorm:"default:0;index" json:"status"`) 任务状态
string extra = 12; //@go_tags(`gorm:"size:2000" json:"extra"`) 扩展信息JSON
}
// 每日聊天总结状态
enum ChatSummaryState {
ChatSummaryState_Pending = 0; // 入队等待
ChatSummaryState_Processing = 1; // AI 处理中
ChatSummaryState_Done = 2; // 完成
ChatSummaryState_Failed = 3; // 失败
}
// 单条聊天消息(用于入库前拼接上下文)
message ChatMsg {
string speaker = 1; //@go_tags(`json:"speaker"`) 说话人(可为用户昵称或"me"/"him"等)
string content = 2; //@go_tags(`json:"content"`) 消息内容
int64 time = 3; //@go_tags(`json:"time"`) 消息时间戳(秒级,可选)
}
// 用户每日聊天总结表
// 唯一约束: (uid, summary_date) 同一用户同一天仅保留一条记录,重复提交按覆盖重算
message DBChatSummary {
uint64 id = 1; //@go_tags(`gorm:"primaryKey;autoIncrement" json:"id"`)
string uid = 2; //@go_tags(`gorm:"size:50;uniqueIndex:idx_chatsum_uid_date,priority:1" json:"uid"`) 用户ID
string summary_date = 3; //@go_tags(`gorm:"size:10;uniqueIndex:idx_chatsum_uid_date,priority:2;index" json:"summary_date"`) 总结日期 YYYY-MM-DD
string chat_content = 4; //@go_tags(`gorm:"type:longtext" json:"chat_content"`) 拼接后的聊天内容(服务端由 ChatMsg 列表拼接)
string chat_msgs = 5; //@go_tags(`gorm:"type:longtext" json:"chat_msgs"`) 原始 ChatMsg JSON(便于回查)
string summary = 6; //@go_tags(`gorm:"type:longtext" json:"summary"`) AI 生成的总结
ChatSummaryState state = 7; //@go_tags(`gorm:"default:0;index" json:"state"`) 状态
string error_msg = 8; //@go_tags(`gorm:"size:500" json:"error_msg"`) 失败原因
int64 create_time = 9; //@go_tags(`gorm:"index" json:"create_time"`)
int64 update_time = 10; //@go_tags(`json:"update_time"`)
int64 finish_time = 11; //@go_tags(`gorm:"index" json:"finish_time"`)
}