Name Last Update
app-buyers Loading commit data...
config Loading commit data...
data Loading commit data...
libs Loading commit data...
models Loading commit data...
other Loading commit data...
tasks Loading commit data...
utils Loading commit data...
.eslintignore Loading commit data...
.eslintrc Loading commit data...
.gitignore Loading commit data...
Dockerfile Loading commit data...
README.md Loading commit data...
app-buyers.js Loading commit data...
app.js Loading commit data...
dev.js Loading commit data...
docker.sh Loading commit data...
package.json Loading commit data...
process.json Loading commit data...
temp.js Loading commit data...
yarn.lock Loading commit data...

环境配置

系统要求: nodejs@10.3.0+、yarn、pm2

运行方式:

  1. 执行 yarn安装项目依赖
  2. pm2 start process.json

配置文件config/index.js:

loggers:日志文件配置

database:ufo数据库配置

monitorReport:上报地址

爬虫

比价爬虫

spider-task

描述:根据/config/skns.json文件的skn爬取对应毒的价格数据。

执行频率:15分钟/次

步骤:

  1. 获得ufo尺码最新列表,作为之后爬取到的数据的尺码对应关系。
  2. 检查skns.json文件是否有更新,如果有更新则清理一次channel_sku_compare表中被删除的skn记录,避免skn从比价范围移除后依然有比价记录的情况。
  3. 轮训爬取毒的价格数据,并从尺码记录中得到尺码对应关系,插入或者更新channel_sku_compare,最后插入channel_sku_compare_record表。

ps: 其中如果skn是乐高产品,则强制毒的尺码关系对应到ufo的F码

calc-task

描述:每天根据channel_sku_compare_record表计算过去24小时skn的平均价

执行频率:每天10点15分执行一次

步骤:

  1. 获取过去24小时channel_sku_compare_record表数据
  2. 计算每个skn在过去24小时的平均价,去头去尾
  3. 更新channel_sku_compare表的channel_average_price平均价字段

clear-task

描述:定时清理超过三天的比价记录表channel_sku_compare_record数据

执行频率:每天23点59分执行

价格曲线

price-task

描述:全量更新毒和神箭手的数据维护到本地数据库

频率:每天1点10分执行

步骤:

  1. 循环调用毒接口获取毒数据写入本地数据库:db/du.json
  2. 调用神箭手批量接口获取数据写入本地数据库:db/shenjian.json

price-line-task/incre-relation-task

描述:维护毒、神箭手、ufo的关联数据

频率:每天2点10分执行

步骤:

  1. 获取本地数据库毒和神箭手的数据
  2. 获取ufo在上架的商品数据
  3. 根据货号匹配三个数据源的关系数据,并插入db/product-relation.json

price-line-task/price-day-task

描述:爬取ufo、毒、神箭手价格并根据比例计算价格曲线数据-当日

频率:2小时/次

步骤:

  1. 获取ufo的尺码数据,作为之后尺码对应关系
  2. 根据三个数据源的对应关系数据表:db/product-relation.json,循环获取三个数据源的skn数据。毒:调用毒接口获取数据(spider/du.js)、神箭手:调用神箭手接口获取数据库(spider/shenjian.js)、ufo:直接读数据库查询数据(spider/ufo.js)
  3. 拿到三端数据的价格之后根据预设比例计算曲线价格:(ufo:神箭手:毒:0.5:0.2:0.3、ufo:神箭手:0.7:0.3、ufo:毒:0.7:0.3、神箭手:毒:0.7:0.3、只有一种价格时以这个价格为准)
  4. 得到曲线价格收插入price_trend_day表

ps: 调用神箭手接口获得的数据需要进一步处理才能得到颜色尺码价格,需要先在数据的sku.label中找到颜色分类、鞋码后找到实际的sku数据价格,其中如果商品有两个颜色则把颜色属性的desc和货号匹配如果匹配上就按照这个颜色属性为准。

price-line-task/price-30day-task

描述:爬取ufo、毒、神箭手价格并根据比例计算价格曲线数据-30天

频率:每天1点、13点执行

步骤:

  1. 获取当天表的最新数据
  2. 插入30天表:price_trend_month

price-line-task/price-60day-task

描述:爬取ufo、毒、神箭手价格并根据比例计算价格曲线数据-60天

频率:每天1点1分执行

步骤:

  1. 获取当天表的最新数据
  2. 插入60天表:price_trend_sixty_day

price-line-task/price-180day-task

描述:爬取ufo、毒、神箭手价格并根据比例计算价格曲线数据-180天

频率:每天1点2分执行

步骤:

  1. 判断三天内是否执行过
  2. 如果没有执行过,获取当天表的最新数据
  3. 插入180天表:price_trend_half_year

price-line-task/clear-task

描述:清理价格曲线数据:

当日price_trend_day的三天前数据

30天price_trend_month的30天前数据

60天price_trend_month的60天数据

180天price_trend_half_year的180天钱数据

频率:每天1点3分执行

毒接口检测

check-du-task

描述:检测毒h5页面中接口调用的版本号,如果版本号发生变化则钉钉报警

频率:1小时/次

监控

dashboard:UFO爬虫

link: http://g.yohops.com/dashboard/db/ufopa-chong?refresh=1h&orgId=1

  1. 比价爬虫上报更新成功数、清理失败、计算平均价失败监控
  2. 价格曲线的当日、30天、60天、180天新增价格数据数监控
  3. 每日毒、神箭手全量更新的数量监控
  4. UFO、毒、神箭手关系表每日新增数监控
  5. 价格曲线数据每日清理数量监控