syntax = "proto3"; package survey; option go_package = ".;survey"; message Empty{ } message FetchRequest { int64 page_no=1; // 页数 int64 page_size=2; // 每页记录数 map params=3; // 条件参数,key=val,eg key:category_id=?,vlaue=11 } message IdentRequest{ int64 id = 1; // 唯一ID string identity = 2; // 唯一码 } message VersionRequest { int64 version=1; // 时序版本号 } message SearchRequest { string keyword=1; //关键词 } message StatusReply{ int64 status = 1; // 状态码 string identity=2; // 标识码 string message=3; //状态说明 int64 timeseq=4; // 响应时间序列 } // 问卷基本信息 message SurveyItem { string id = 1; // 问卷ID string title = 2; // 问卷标题 string description = 3; // 问卷描述 string creator_id = 4; // 创建者ID string start_time = 5; // 开始时间 string end_time = 6; // 结束时间 bool is_active = 7; // 是否激活 bool is_anonymous = 8; // 是否匿名 repeated QuestionItem questions = 9; // 问题列表 repeated string tags = 10; // 标签 string style_config = 11; // 样式配置(JSON) } // 问题类型 enum QuestionType { SINGLE_CHOICE = 0; // 单选题 MULTIPLE_CHOICE = 1; // 多选题 TEXT = 2; // 文本题 SCALE = 3; // 量表题 RANKING = 4; // 排序题 DATE = 5; // 日期题 } // 问题定义 message QuestionItem { string id = 1; // 问题ID string survey_id = 2; // 所属问卷ID string title = 3; // 问题标题 string description = 4; // 问题描述 QuestionType type = 5; // 问题类型 bool is_required = 6; // 是否必答 repeated Option options = 7; // 选项(适用于选择题) int32 min_selections = 8; // 最少选择数(多选题) int32 max_selections = 9; // 最多选择数(多选题) int32 order = 10; // 问题顺序 string placeholder = 11; // 输入提示(文本题) } // 问题选项 message Option { string id = 1; // 选项ID string text = 2; // 选项文本 int32 order = 3; // 选项顺序 string image_url = 4; // 选项图片 int32 score = 5; // 选项分数(适用于量表) }