syntax = "proto3";

package report;

option java_package = "com.yaoyicloud.message";
option java_outer_classname = "CSOProtos";

// 0. 报告基础信息（封面数据）
message ReportHeader {
  optional string report_id = 1; // 报告ID
  optional string entrusting_project_time = 2; // 委托项目时间
  optional string entrusting_company = 3; // 委托公司
  optional string service_company = 4; // 服务公司
  optional string drugs = 5; // 服务品种
  optional string task_finish_time = 6; // 任务完成时间
  optional int32 total_package_score = 7; // 积分包值
  optional int32 total_approved_score = 8; // 审核通过总值
//  map<string, string> drug_details = 9; // 产品列表（表格数据）
  optional string score_package_name = 10; // 积分包名称
  optional int32 task_user_names = 11; // 积分包推广人数
  optional int32 submited_task_score = 12; // 总提交积分
  optional string create_time = 13; // 创建时间
  optional string service_end_date = 14; // 完成时间
  optional bool sensitiveFlag = 15; // 是否脱敏
}
// 1. 产品介绍模块
message ProductIntroduction{
  map<string, string> drug_details = 9; // 产品列表（表格数据）
}
// 2. 推广明细
message PromotionDetails {
  // 2.1 推广人员任务信息
  map<string, string> user_tasks = 1;
  // 2.2 任务明细
  map<string, string> tasks = 2;

  // 2.3 专项任务汇总表相关
  map<string, string> customer_visit_list = 3; // 客户拜访明细
  optional string customer_visit_title = 4; // 客户拜访标题

  map<string, string> meeting_list = 5; // 会议举办明细
  optional string meeting_title = 6; // 会议举办标题

  map<string, string> task_type_51_52_53_list = 7; // 任务类型51/52/53明细
  optional string task_type_51_52_53_title = 8; // 任务类型51/52/53标题

  map<string, string> task_type_55_list = 9; // 任务类型55明细
  optional string task_type_55_title = 10; // 任务类型55标题

  map<string, string> task_type8_11_list = 11; // 任务类型8/11明细
  optional string task_type_8_11_title = 12; // 任务类型8/11标题

  map<string, string> task_type_9_10_list = 13; // 任务类型9/10明细
  optional string task_type_9_10_title = 14; // 任务类型9/10标题

  map<string, string> policy_info_collect_list = 15; // 政策信息收集明细
  optional string policy_info_collect_title = 16; // 政策信息收集标题

  map<string, string> competing_products_info_collect_list = 17; // 竞品信息收集明细
  optional string competing_products_info_collect_title = 18; // 竞品信息收集标题

  map<string, string> inventory_info_collect_list = 19; // 库存信息收集明细
  optional string inventory_info_collect_title = 20; // 库存信息收集标题

  map<string, string> task_type_16_list = 21; // 任务类型16明细
  optional string task_type_16_title = 22; // 任务类型16标题

  map<string, string> task_type_18_list = 23; // 任务类型18明细
  optional string task_type_18_title = 24; // 任务类型18标题

  map<string, string> task_type_15_list = 25; // 任务类型15明细
  optional string task_type_15_title = 26; // 任务类型15标题

  map<string, string> task_type45_list = 27; // 任务类型45明细
  optional string task_type45_title = 28; // 任务类型45标题

  map<string, string> task_type_54_list = 29; // 任务类型54明细
  optional string task_type_54_title = 30; // 任务类型54标题

  map<string, string> task_type74_list = 31; // 任务类型74明细
  optional string task_type74_title = 32; // 任务类型74标题

  map<string, string> task_type_75_list = 33; // 任务类型75明细
  optional string task_type_75_title = 34; // 任务类型75标题

  map<string, string> task_type_76_list = 35; // 任务类型76明细
  optional string task_type_76_title = 36; // 任务类型76标题

  map<string, string> task_type_78_79_list = 37; // 任务类型78/79明细
  optional string task_type_78_79_title = 38; // 任务类型78/79标题

  map<string, string> task_type_80_list = 39; // 任务类型80明细
  optional string task_type_80_title = 40; // 任务类型80标题

  map<string, string> task_type_81_list = 41; // 任务类型81明细
  optional string task_type_81_title = 42; // 任务类型81标题

  optional string task_type801_title = 43; // 任务类型801标题
  map<string, string> task_type801_list = 45; // 任务类型801明细

  map<string, string> task_type38_list = 46; // 任务类型38明细
  optional string task_type38_title = 47; // 任务类型38标题

  map<string, string> task_type39_40_41_list = 48; // 任务类型39/40/41明细
  optional string task_type39_40_41_title = 49; // 任务类型39/40/41标题

  map<string, string> task_type42_43_44_list = 50; // 任务类型42/43/44明细
  optional string task_type42_43_44_title = 51; // 任务类型42/43/44标题

  map<string, string> task_type46_list = 52; // 任务类型46明细
  optional string task_type46_title = 53; // 任务类型46标题

  map<string, string> task_type47_48_49_50_list = 54; // 任务类型47/48/49/50明细
  optional string task_type47_48_49_50_title = 55; // 任务类型47/48/49/50标题

  map<string, string> task_type_19_list = 56; // 任务类型19明细
  optional string task_type_19_title = 57; // 任务类型19标题

  map<string, string> task_type_34_35_36_list = 58; // 任务类型34/35/36明细
  optional string task_type_34_35_36_title = 59; // 任务类型34/35/36标题

  map<string, string> task_type_85_list = 60; // 任务类型85明细
  optional string task_type_85_title = 61; // 任务类型85标题

  map<string, string> task_type_86_list = 62; // 任务类型86明细
  optional string task_type_86_title = 63; // 任务类型86标题

  map<string, string> task_type_87_list = 64; // 任务类型87明细
  optional string task_type_87_title = 65; // 任务类型87标题

  map<string, string> task_type_56_57_list = 66; // 任务类型5657明细
  optional string task_type_56_57_title = 67; // 任务类型5657标题
}

// 3. 推广总结
message PromotionSummary {
  optional string create_time = 1; // 发包时间
  optional string service_end_date = 2; // 完成时间
  optional string task_user_names = 3; // 推广人员列表
  optional int32 task_promotioner_quality_5_4_1_submittedCnt = 4; // 总提交任务数
  optional int32 task_promotioner_quality_5_4_1_approvedCnt = 5; // 审核通过任务数
  optional int32 submited_task_score = 6; // 总提交积分
  optional int32 total_approved_score = 7; // 审核通过积分
  repeated TaskStatisticsByType task_stats_by_type = 8;
  repeated TaskStatisticsByPerson task_stats_by_person = 9;
  repeated TaskTypeMeta task_type_metas = 10;
  map<string, int32> starTaskMap = 11; // 本次推广服务项目中完成最多的任务和任务次数
  map<string, bytes> userSubmittedScoreMap = 12; // 用户id和积分列表
}

// 4. 任务统计信息
message TaskStatistics {
  int32 count = 1; // 推广次数
  int64 score = 2; // 推广积分值
  repeated string promotioners = 3; // 推广人员ID集合
  map<string, int32> mpProductCount = 4; // 产品ID到数量的映射
}

// 5. 按任务类型的统计信息 (对应 mpTaskStat)
message TaskStatisticsByType {
  map<string, TaskStatistics> task_stats = 1; // 任务类型ID -> 统计信息
}

// 6. 按用户和任务类型的统计信息 (对应 mpTaskStatbyPerson)
message TaskStatisticsByPerson {
  map<string, TaskStatisticsByType> user_stats = 1; // 用户ID -> 用户任务统计
}

// 7. 任务类型的元数据（关联ID与名称）
message TaskTypeMeta {
  string task_type_id = 1; // 任务类型ID（主键）
  string parent_name = 2; // 父分类名（如“医疗终端客户拜访”）
  string child_name = 3; // 子任务类型名（如“医疗终端客户拜访”）
  string user_id = 4; // 推广人id
  string user_name = 5; // 推广人
}