| 123456789101112131415161718192021222324252627282930313233343536 |
- """Build the main-store and eight-shop preparation backlog from already stored evidence."""
- import argparse
- import json
- from pathlib import Path
- import sys
- sys.path.insert(0, str(Path(__file__).resolve().parents[1] / 'server/voc-library'))
- from industry_monitor import load, Monitor, PRIMARY
- from monitoring_store import need, read_state
- from monitoring_tasks import seed, reconcile, read_tasks
- if __name__ == '__main__':
- p = argparse.ArgumentParser(description=__doc__)
- p.add_argument('--snapshot', required=True)
- p.add_argument('--store', required=True)
- p.add_argument('--generation', required=True)
- args = p.parse_args()
- try:
- data = load({'snapshot': args.snapshot})
- need(data['generation'] == args.generation, 'LIBRARY_VERSION_CHANGED')
- monitor = Monitor(data)
- results = [seed(args.store, monitor, {'platform': PRIMARY['platform'], 'shopId': PRIMARY['shopId']}, ['reviews'])]
- shops = sorted({(r['platform'], r['scope']['shopId']) for r in read_state(args.store) if r['kind'] == 'listings'})
- for platform, shop in shops:
- results.append(seed(args.store, monitor, {'platform': platform, 'shopId': shop}, ['listings']))
- for platform in ('jd', 'tmall'):
- results.append(seed(args.store, monitor, {'platform': platform}, ['rankings']))
- linked = reconcile(args.store, args.generation)
- state = read_tasks(args.store, args.generation, {}, set(monitor.products))
- print(json.dumps({'ok': True, 'created': sum(r['created'] for r in results), 'reconciled': linked['reconciled'],
- 'total': state['total'], 'counts': state['counts'], 'dispatchEnabled': False,
- 'collectorCalls': 0, 'productionWrites': 0}, ensure_ascii=False))
- except Exception as error:
- print(json.dumps({'ok': False, 'error': str(error)}, ensure_ascii=False))
- sys.exit(1)
|