## 概述

- PPT是指 publish_parameter_t 这个结构体。
- INFO是指 ad_match_log_info_t 这个结构体
- 标`*`的表示字段需要记录日志。

## PPT

### 状态成员

ppt 记录多个广告位。做匹配时，ppt里有几个字段，记录状态。

- m_creative_matched_num 广告位开始匹配时，清零该成员。经常与 m_adpos_match_number 做比较，也与 m_ads_pos_sizes 做比较。
- m_ads_pos_index 当前做匹配的那个广告位的索引
- m_ads_pos_id_matched_index 数组下标，用于操作info数组。
- m_curr_ads_pos_id_matched_index 数组下标，指示当前正处理的 ad_match_log_info_t，与 m_ads_pos_id_matched_index 相似。
- m_deal_price 策略筛选过程临时存放的竞价价格值。当活动级别为 HIGH_LEVE_SPECILE 或 LOW_LEVE_SPECILE 时，价格为活动价格，否则为调整后的价格。
- m_is_validate 请求是否有效。
- m_keywords_matched_ids 广告条件里获取值，ctr class 为 ZHIZIYUN_KEYWORDS 时，做广告筛选。
- m_adpos_match_number 开始对一个广告位进行匹配时，初始化该字段。可能取值为：m_ads_pos_sizes，m_adpos_search_size。

### 固定值成员

初始化后不变

- `*m_timestamp` 每次广告匹配的时间戳，单位毫秒，实际精确到秒。
- m_time_segment 由上面的时间戳推算，当前时间在一周的第几个小时。该值用于广告定向。
- `*m_log_type` 当前 http 请求类型，比如匹配、展示、行为（点击、下载等等）、视频。
- `*m_match_type` 匹配类型。0 非匹配，1 普通匹配，2 搜索匹配。
- m_ads_pos_sizes 广告位需要的最大广告数，优先考虑 m_ads_pos_reqcnt 的值，即 url 传来的参数。若无此参数，则从共享内存获取。

### 参数值 url

- m_gps_long 目前只做了有效性检查，没有存下来，也没有参与匹配。
- m_gps_lat 同 m_gps_long
- `*m_ip_str` url 不传参时，初始化为127.0.0.1。dmp 预测需要，adsource 需要。推算出的地理位置信息做定向。
- m_ip_value ip 的数字形式，无特别作用，可干掉。
- `*m_ip` 由 ip 推算的地理位置信息。
- m_ad_poses 广告位的url参数原始信息，不记录日志，目前没什么用处。
- m_ads_pos_id_num 广告位总数。
- m_ads_pos_id 广告位ID数组。
- m_ad_pos_reqcnts url参数 reqcnt 字符串。不记录日志，目前没什么用处。
- m_ads_pos_reqcnt 每个广告位需要的最大广告数，从 url 参数 reqcnt 解析。
- m_ads_pos_width 一开始会从url里的参数解析，不过后续会被共享内存里的值覆盖。
- m_ads_pos_height 同上。
- m_source_adsource 广告追踪事件会用到。
- `*m_user_agent` url 参数 ua。获取到 ua 参数后，要 base64 decode。
- `*m_user_os url` 参数 dos。dmp 预测时需要。
- m_user_language url 参数 lan。未使用。
- `*m_user_device` url 参数 db。请求有效性检查要用到。
- `*m_user_dm` url参数 dt。请求有效性检查需要。dmp 预测需要。
- `*m_user_id` 参数 uid。请求有效性检查。adsource。广告过滤。dmp 预测。
- m_phone_number 参数 phone_number。无使用。
- m_key_words_no 参数 keywords 所含关键字数量。
- m_key_words 参数 keywords 分解的关键字数组。参与预测，广告筛选。
- `*m_source_key_words` 参数 keywords 原始值。参与 adsource，敏感词检测，返回串构造。
- `*m_apps_names` 参数 apps。参与广告筛选，dmp 预测。
- m_category_list 参数 category。参与广告筛选。
- `*m_orignal_adsourceid` 参数 original，似乎无用，待确认。
- `*m_dcs_display` 参数 dis，分辨率。参与 adsource，dmp 预测。
- m_dcs_width 参数 dis 分解出的分辨率值。无使用。
- m_dcs_height 同上。
- `*m_dcs_nt` 参数nt。参与 adsource，dmp 预测。
- m_hashvalue 参数 hashvalue。无使用。
- `*m_app_version` 参数 vc。参与 adsource，预测，筛选。
- m_force_flag 参数 force，目前未使用。
- m_https_flag 是否为 https 请求，根据 http 头获取，目前未使用。
- `*m_pkgname` 参数 pkgname。用于dmp预测。
- m_video_event_type 参数 type。视频类通知里才会出现。用于记录 kafka 日志。
- m_video_event_desc 视频类通知的类别描述。与 m_video_event_type 相关联。用于记录 kafka 日志。

### 配置值 -- 共享内存 redis

- m_medias_id 从共享内存获取的广告位所属媒体。会赋值给 info 的媒体ID。
- m_ads_pos_type 需要的广告类型，如 banner，flow。从共享内存获取。
- m_adpos_pos_game 是否支持游戏类型的创意。从共享内存获取。
- m_adpos_search_size 搜索类广告位的最大广告数，从共享内存获取。当show type为1或者2，且有搜索词时，m_adpos_match_number 会被赋值为这个字段。
- m_adpos_show_type 广告位类型。从共享内存获取。
- m_adpos_match_force 匹配策略：1 精准； 2 精准&模糊； 3 精准&模糊&强制。从共享内存获取。
- m_callback_toutiao 是否给头条发 callback。从共享内存获取。
- m_distr 由redis配置获取，并摇骰子决定。
- m_adpos_match_levle 共享内存获取。
- m_adpos_page 共享内存获取。目前不使用。
- m_media_name 共享内存获取。用于判断非 appstore 媒体的广告填充。
- m_page 共享内存获取。dmp 预测需要，adsource 需要。
- m_adpos_slogon 共享内存获取。用于返回信息的字段 app_creative_title。

### 其他值

- m_ads_pos_ctr_class 广告位的预测模型ID。
- m_ads_pos_ctr_class_original 和 ZHIZIYUN_KEYWORDS 有关。
- m_ctr_type 展示、搜索、相关性。
- `*m_app_log_set_tag` 日志ID。比较绕，需要好好看看。
- `*m_refer_pub_log_id` 追踪信息使用。

### 注意

- m_ads_pos_sizes m_ads_pos_reqcnt m_adpos_match_number，注意关系。匹配数的判定有两级。
- CTR_CLASS_ZHIZIYUN_KEYWORDS 有特殊处理。
- 媒体信息有些冗余。
- PPT里混合了匹配和追踪，不太合理，应该分开。目前已基本分开，视频广告追踪目前还未分开。
- m_app_log_set_tag 等一些日志id比较绕。
- ppt和info，都在nginx pool里，初始化机制，导致成员不适合用c++ 复杂类型，比如 stl。

## INFO

- `*m_ads_pos_id` 用于 adsource，广告筛选。
- m_ad_show_pos 用于广告筛选。
- `*m_cutted_word` 切词匹配。
- `*m_matched_word` 匹配到的平台设置的关键词。
- `*m_matched_word_flag` 只记日志。
- `*m_medias_id` 用于 adsource。
- m_adpos_match_levle 有赋值但实际未使用。
- m_ads_pos_width 有赋值但实际未使用。
- m_ads_pos_height有赋值但实际未使用。
- m_ads_pos_type 有赋值但实际未使用。
- `*m_app_ad_log_id` 用于 adsource。
- m_ads_creative_width 有赋值但实际未使用。
- m_ads_creative_height 有赋值但实际未使用。
- m_strategy 标识匹配到的活动。
- m_creative 标识匹配到的创意。
- `*m_creative_id` 和 m_creative 比，冗余了。
- `*m_strategy_id` 和 m_strategy 比，冗余了。
- `*m_strategy_price` 和 m_strategy比，冗余了。
- `*m_deal_price` 策略的成交价格。用于 adsource，生成响应信息。
- `*m_pay_price` 未赋值但是记录日志。可考虑干掉。
- `*m_campaign_id` 用于 adsource。和 m_strategy 比，冗余了。
- m_app_creative_title 用于响应信息。show type 为1或2，才需要此字段。
- `*m_app_id` 用于 adsource，生成响应信息。和 m_creative 比，冗余了。
- `*m_source_app_id` 生成响应信息。和 m_creative 比，冗余了。
- `*m_source_product_id` 生成响应信息。和 m_creative 比，冗余了。
- `*m_adsource_id` 生成响应信息。
- `*m_creative_click_url` 匹配时，只记录日志。追踪信息，该字段存放 clickurl 参数，现计划PPT中分离追踪信息，所以现在该字段不存 clickurl 参数。
- m_match_creative_index 一个广告位的所有 info 数组的索引。
- `*m_is_matched` 该字段目前用的较少，某些关键代码，应该多使用该字段。
- `*m_voucher_flag` 是否优先消耗虚拟币。
- m_ctr_value 取自策略曝光值 m_strategy_roi_imprevalue，目前只有赋值，但没使用该字段。
- `*m_ctr_class` 用于adsource。最初赋值于ppt->m_ads_pos_ctr_class，等于 CTR_CLASS_RECOMMEND_RECOMMEND 时，对 m_voucher_flag 做特殊处理。之后，值等于 CTR_CLASS_ZHIZIYUN_KEYWORDS 时，赋值为 ppt->m_ads_pos_ctr_class_original。
- m_download_btn; // 取自 m_strategy->m_download_btn，目前只有赋值，但没使用该字段。生成响应时，实际使用到了 m_strategy->m_download_btn。因此可以废弃。
- m_adpos_slogon 取值于ppt->m_adpos_slogon。用于响应信息的 app_creative_title 字段。
