"""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)