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