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
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"`)
|
|
}
|
|
|