feat: complete production workflow migration

This commit is contained in:
2026-08-06 14:29:57 +08:00
parent 7f215e79c4
commit 8df5266abb
448 changed files with 56937 additions and 14619 deletions
+41
View File
@@ -0,0 +1,41 @@
{
"schema_version": 1,
"commands": [
{"id":"content.metrics.collect_collaborators","module":"content_marketing","entry":"run_all.py","kind":"python"},
{"id":"content.mapping.refresh_self","module":"content_marketing","entry":"data/tools/refresh_self_mapping.py","kind":"python"},
{"id":"content.metrics.collect_self_bilibili","module":"content_marketing","entry":"self_bilibili_scraper.py","kind":"python"},
{"id":"content.metrics.collect_self_douyin","module":"content_marketing","entry":"chanmama_scraper.py","kind":"python"},
{"id":"content.metrics.sync","module":"content_marketing","entry":"data/tools/sync_metrics_to_cmt_notes.py","kind":"python"},
{"id":"content.marketing_report.generate","module":"content_marketing","entry":"daily_marketing_report.py","kind":"python"},
{"id":"content.login.refresh","module":"content_marketing","entry":"data/tools/friday_relogin_parallel.py","kind":"python"},
{"id":"content.creator_report.generate","module":"content_marketing","entry":"data/tools/generate_creator_report.py","kind":"python"},
{"id":"content.summary.monthly","module":"content_marketing","entry":"monthly_summary_all.py","kind":"python"},
{"id":"content.cooperations.sync","module":"content_marketing","entry":"data/tools/sync_cooperations.py","kind":"python"},
{"id":"content.comments.collect_bilibili","module":"content_marketing","entry":"data/tools/batch_rescrape_bilibili.py","kind":"python"},
{"id":"content.comments.collect_xiaohongshu","module":"content_marketing","entry":"data/tools/batch_rescrape_xiaohongshu.py","kind":"python"},
{"id":"content.comments.collect_douyin","module":"content_marketing","entry":"data/tools/batch_rescrape_douyin.py","kind":"python"},
{"id":"content.summary.weekly","module":"content_marketing","entry":"weekly_summary_all.py","kind":"python"},
{"id":"content.mapping.rebuild","module":"content_marketing","entry":"data/tools/rebuild_mapping.py","kind":"python"},
{"id":"content.failed.retry","module":"content_marketing","entry":"data/tools/retry_failed.py","kind":"python"},
{"id":"shop.metrics.collect","module":"shop_intelligence","entry":"runners/run_shop.py","kind":"python"},
{"id":"shop.competitor.collect","module":"shop_intelligence","entry":"runners/run_peer_store.py","kind":"python"},
{"id":"shop.jd_self_operated.collect_brand","module":"shop_intelligence","entry":"collectors/jd_self_operated_brand_daily.py","kind":"python","default_args":["--start-date","{business_date}","--end-date","{business_date}","--headless"]},
{"id":"shop.jd_self_operated.collect_product","module":"shop_intelligence","entry":"collectors/jd_self_operated_product_daily.py","kind":"python","default_args":["--start-date","{business_date}","--end-date","{business_date}","--headless"]},
{"id":"shop.douyin_price_appeal","module":"shop_intelligence","entry":"collectors/dy_store_competitor_store_scraping.py","kind":"python","default_args":["--price-appeal","--execute"]},
{"id":"product.persona.collect","module":"product_commerce","entry":"run_daily_persona.py","kind":"python"},
{"id":"product.daily.orchestrate","module":"product_commerce","entry":"orchestrate_daily_collection.py","kind":"python"},
{"id":"product.alert.run","module":"product_commerce","entry":"commands/run_alerts.py","kind":"python"},
{"id":"product.import.daily","module":"product_commerce","entry":"commands/import_daily.py","kind":"python"},
{"id":"product.style_analysis.run","module":"product_commerce","entry":"analyze_style_with_hermes.py","kind":"python"},
{"id":"product.main_image.collect_jd","module":"product_commerce","entry":"run_weekly_jd_main_image.py","kind":"python"},
{"id":"product.main_image.collect_tmall","module":"product_commerce","entry":"run_weekly_main_image.py","kind":"python"},
{"id":"product.sales_sheet.sync","module":"product_commerce","entry":"sync_monthly_sales_sheet.py","kind":"python","default_args":["--month","{business_date}","--execute"]},
{"id":"product.backfill.run","module":"product_commerce","entry":"backfill_collect.py","kind":"python","default_args":["--from","{business_date}","--to","{business_date}"]},
{"id":"product.market_rank.orchestrate","module":"product_commerce","entry":"orchestrate_market_rank_collection.py","kind":"python"},
{"id":"product.review.orchestrate","module":"product_commerce","entry":"orchestrate_review_collection.py","kind":"python","default_args":["--target-date","{business_date}"]},
{"id":"supply.workflow.run","module":"supply_chain","entry":"run.py","kind":"python","default_args":["mcp-run","purchase-order-update"]}
]
}
+49
View File
@@ -0,0 +1,49 @@
{
"spreadsheet_url": "https://bu0zgpibak.feishu.cn/sheets/O7nGsVXyvhI0W6tnOaFcSABVnqb",
"base_url": "https://bu0zgpibak.feishu.cn/base/TH1JbxhfUaxetis6F4pcoqvWncd?table=tbl8q0hbIPMNn0k8&view=vew7j57rli",
"base_token": "TH1JbxhfUaxetis6F4pcoqvWncd",
"table_id": "tbl8q0hbIPMNn0k8",
"view_id": "vew7j57rli",
"product_field": "品名",
"target_field": "目标销量",
"month_field": "月份",
"lark_profile": "cli_aa8c4fb4c4f81cd3",
"style_base_url": "https://bu0zgpibak.feishu.cn/base/TtoCb1NuQaDy3NsZWTpc0GIvnph?table=tblKCjplVAFrRwMC&view=vewvy33xEk",
"style_base_token": "TtoCb1NuQaDy3NsZWTpc0GIvnph",
"style_table_id": "tblKCjplVAFrRwMC",
"style_view_id": "vewvy33xEk",
"erp_shop_labels": [
"JD光影行星旗舰店",
"ozko抖音店",
"OZKO京东店",
"OZKO拼多多店",
"ozko旗舰店-天猫",
"ozko-视频号",
"ozko小红书店",
"得物-ozko",
"得物-光影行星",
"抖店-光影行星数码旗舰店",
"抖店-光影行星箱包旗舰店",
"光影行星-快手",
"光影行星旗舰店-小红书",
"光影行星-视频号",
"光影行星-微信商城",
"拼多多-光影行星旗舰店",
"拼多多-光影行星箱包旗舰店",
"拼多多-光影行星专卖店",
"天猫-光影行星旗舰店",
"天猫-光影行星箱包旗舰店"
],
"product_aliases": {
"盖亚微单Pro": "盖亚微单",
"星迹&星迹2": "星迹2",
"宙斯双肩包": "宙斯",
"瑞白双肩包": "瑞白",
"拾影双肩电脑包": "拾影双肩",
"拾影相机包": "拾影斜挎相机包",
"极星单肩包": "极星单肩",
"极星托特": "极星托特",
"云栖相机双肩包": "云栖",
"轻风双肩包": "轻风双肩包"
}
}
+142 -133
View File
@@ -1,143 +1,152 @@
{
"schema_version": 1,
"schema_version": 2,
"cdp_host": "127.0.0.1",
"scripts": {
"content_marketing:bilibili_comment_scraper.py": 22000,
"content_marketing:bilibili_scraper.py": 22001,
"content_marketing:chanmama_scraper.py": 22002,
"content_marketing:daily_marketing_report.py": 22003,
"content_marketing:data/tools/analyze_comments.py": 22004,
"content_marketing:data/tools/analyze_note.py": 22005,
"content_marketing:data/tools/batch_rescrape_bilibili.py": 22006,
"content_marketing:data/tools/batch_rescrape_douyin.py": 22007,
"content_marketing:data/tools/batch_rescrape_xiaohongshu.py": 22008,
"content_marketing:data/tools/check_status.py": 22009,
"content_marketing:data/tools/collect_note_metrics.py": 22010,
"content_marketing:data/tools/daily_marketing_report.bat": 22011,
"content_marketing:data/tools/daily_run.bat": 22012,
"content_marketing:data/tools/daily_run_with_backfill.bat": 22013,
"content_marketing:data/tools/db.py": 22014,
"content_marketing:data/tools/feishu_comment_batch.py": 22015,
"content_marketing:data/tools/feishu_doc_writer.py": 22016,
"content_marketing:data/tools/friday_relogin.bat": 22017,
"content_marketing:data/tools/friday_relogin_parallel.py": 22018,
"content_marketing:data/tools/generate_creator_report.py": 22019,
"content_marketing:data/tools/init_db.py": 22020,
"content_marketing:data/tools/kill_project_chrome.ps1": 22021,
"content_marketing:data/tools/list_project_chrome.ps1": 22022,
"content_marketing:data/tools/monday_self_run.bat": 22023,
"content_marketing:data/tools/monthly_creator_report.bat": 22024,
"content_marketing:data/tools/monthly_summary.bat": 22025,
"content_marketing:data/tools/pull_all_tables.py": 22026,
"content_marketing:data/tools/rebuild_mapping.py": 22027,
"content_marketing:data/tools/relogin_bilibili.py": 22028,
"content_marketing:data/tools/relogin_douyin.py": 22029,
"content_marketing:data/tools/relogin_pgy.py": 22030,
"content_marketing:data/tools/relogin_xiaohongshu.py": 22031,
"content_marketing:data/tools/relogin_xingtu.py": 22032,
"content_marketing:data/tools/retry_failed.py": 22033,
"content_marketing:data/tools/sync_cooperations.bat": 22034,
"content_marketing:data/tools/sync_cooperations.py": 22035,
"content_marketing:data/tools/sync_metrics_to_cmt_notes.py": 22036,
"content_marketing:data/tools/sync_style_categories.py": 22037,
"content_marketing:data/tools/validate_mapping.py": 22038,
"content_marketing:data/tools/weekly_comment_scrape.bat": 22039,
"content_marketing:data/tools/weekly_summary.bat": 22040,
"content_marketing:data/tools/write_notes_to_doc.py": 22041,
"content_marketing:douyin_comment_scraper.py": 22042,
"content_marketing:feishu_mapping.py": 22043,
"content_marketing:login_helper.py": 22044,
"content_marketing:monthly_summary_all.py": 22045,
"content_marketing:pgy_xhs_scraper.py": 22046,
"content_marketing:pgy_xhs_scraper_v2.py": 22047,
"content_marketing:run_all.py": 22048,
"content_marketing:self_bilibili_scraper.py": 22049,
"content_marketing:self_douyin_scraper.py": 22050,
"content_marketing:weekly_summary_all.py": 22051,
"content_marketing:weekly_summary_xingyun2.py": 22052,
"content_marketing:xiaohongshu_comment_scraper.py": 22053,
"content_marketing:xingtu_scraper.py": 22054,
"content_marketing:xingtu_scraper_v2.py": 22055,
"product_commerce:aggregate_daily_final.py": 22056,
"product_commerce:analyze_style_with_hermes.py": 22057,
"product_commerce:backfill_poseidon_sales.py": 22130,
"product_commerce:backfill_collect.py": 22058,
"product_commerce:backfill_one_day.py": 22059,
"product_commerce:check_nine_day_decline.py": 22060,
"product_commerce:collect_dy_market_rank.py": 22061,
"product_commerce:collect_dy_persona_to_bitable.py": 22062,
"product_commerce:collect_erp_yesterday_metrics.py": 22063,
"product_commerce:collect_jd_market_rank.py": 22064,
"product_commerce:collect_jd_persona_to_bitable.py": 22065,
"product_commerce:collect_persona_to_bitable.py": 22066,
"product_commerce:collect_sycm_market_rank.py": 22067,
"product_commerce:commands/import_daily.py": 22068,
"product_commerce:commands/run_alerts.py": 22069,
"product_commerce:db/sync_dim_style.py": 22070,
"product_commerce:db/sync_sku_master.py": 22071,
"product_commerce:dy_audience_profile_collect.py": 22072,
"product_commerce:dy_product_scraping.py": 22073,
"product_commerce:erp_login_product_analysis.py": 22074,
"product_commerce:export_bitable_records.py": 22075,
"product_commerce:import_product_daily.py": 22076,
"product_commerce:import_product_reviews.py": 22077,
"product_commerce:insert_bitable_records.py": 22078,
"product_commerce:jd_main_image_collector.py": 22079,
"product_commerce:jd_product_data_collector.py": 22080,
"product_commerce:jd_self_inventory_sales_collector.py": 22081,
"product_commerce:orchestrate_daily_collection.py": 22082,
"product_commerce:orchestrate_market_rank_collection.py": 22083,
"product_commerce:orchestrate_review_collection.py": 22084,
"product_commerce:reapply_erp_override.py": 22085,
"product_commerce:rebuild_market_rank_documents.py": 22086,
"product_commerce:run_alerts_with_retry.py": 22087,
"product_commerce:run_daily_persona.py": 22088,
"product_commerce:run_weekly_jd_main_image.py": 22089,
"product_commerce:run_weekly_main_image.py": 22090,
"product_commerce:scripts/insert_jd_main_image_records.py": 22091,
"product_commerce:scripts/insert_main_image_records.py": 22092,
"product_commerce:taobao_dmp_item_crowd_insight_screenshots.py": 22093,
"product_commerce:taobao_sycm_collect.py": 22094,
"product_commerce:taobao_sycm_collect_backfill.py": 22095,
"product_commerce:taobao_sycm_products.py": 22096,
"product_commerce:taobao_wanxiang_ai_creative_report.py": 22097,
"product_commerce:upload_video_to_guanghe.py": 22098,
"product_commerce:vendors/dy-data-flow/dy_store_competitor_store_scraping.py": 22099,
"product_commerce:vendors/jd-data-flow/jd_data_collector.py": 22100,
"product_commerce:vendors/jd-data-flow/jd_peer_product_data_collector.py": 22101,
"product_commerce:vendors/jd-data-flow/jd_product_data_collector.py": 22102,
"product_commerce:weekly_aggregate.py": 22103,
"shop_intelligence:collectors/dy_store_competitor_store_scraping.py": 22104,
"shop_intelligence:collectors/jd_data_collector.py": 22105,
"shop_intelligence:collectors/jd_peer_store_data_collector.py": 22106,
"shop_intelligence:collectors/taobao_sycm.py": 22107,
"shop_intelligence:runners/run_peer_store.py": 22108,
"shop_intelligence:runners/run_shop.py": 22109,
"shop_intelligence:scripts/remove_scheduler.ps1": 22110,
"shop_intelligence:scripts/setup_scheduler.ps1": 22111,
"supply_chain:orchestrator/mcp_workflow.py": 22112,
"supply_chain:orchestrator/monitor.py": 22113,
"supply_chain:orchestrator/runner.py": 22114,
"supply_chain:orchestrator/scripts/ProductReplenishment.py": 22115,
"supply_chain:orchestrator/scripts/PurchaseConfirmation.py": 22116,
"supply_chain:orchestrator/scripts/PurchaseOrderUpdate.py": 22117,
"supply_chain:orchestrator/scripts/batch_process.py": 22118,
"supply_chain:orchestrator/scripts/collect_confirmation.ps1": 22119,
"supply_chain:orchestrator/scripts/collect_purchase_order_update.ps1": 22120,
"supply_chain:orchestrator/scripts/collect_replenishment.ps1": 22121,
"supply_chain:orchestrator/scripts/insert_replenishment_bitable.py": 22122,
"supply_chain:orchestrator/scripts/send_card_notification.py": 22123,
"supply_chain:orchestrator/scripts/trigger_purchase_order_update.py": 22124,
"supply_chain:orchestrator/sql/backfill_history.py": 22125,
"supply_chain:run.py": 22126,
"supply_chain:scripts/purchase-confirmation.bat": 22127,
"supply_chain:scripts/replenishment-alert.bat": 22128,
"supply_chain:scripts/replenishment.bat": 22129
"content_marketing:bilibili_comment_scraper.py": {"script_id":"content_marketing:bilibili_comment_scraper.py","state_key":"content_marketing:bilibili_comment_scraper.py","aliases":["content_marketing:bilibili_comment_scraper.py"],"cdp_port":22000},
"content_marketing:bilibili_scraper.py": {"script_id":"content_marketing:bilibili_scraper.py","state_key":"content_marketing:bilibili_scraper.py","aliases":["content_marketing:bilibili_scraper.py"],"cdp_port":22001,"login_mode":"A","required_cookie_domains":["bilibili.com"],"required_cookie_names":["SESSDATA"]},
"content.metrics.collect_self_douyin": {"script_id":"content_marketing:chanmama_scraper.py","state_key":"content_marketing:chanmama_scraper.py","aliases":["content_marketing:chanmama_scraper.py"],"cdp_port":22002,"login_mode":"C","required_cookie_domains":["chanmama.com"],"credential_env_names":["CHANMAMA_ACCOUNT","CHANMAMA_PASSWORD"]},
"content.marketing_report.generate": {"script_id":"content_marketing:daily_marketing_report.py","state_key":"content_marketing:daily_marketing_report.py","aliases":["content_marketing:daily_marketing_report.py"],"cdp_port":22003},
"content_marketing:data/tools/analyze_comments.py": {"script_id":"content_marketing:data/tools/analyze_comments.py","state_key":"content_marketing:data/tools/analyze_comments.py","aliases":["content_marketing:data/tools/analyze_comments.py"],"cdp_port":22004},
"content_marketing:data/tools/analyze_note.py": {"script_id":"content_marketing:data/tools/analyze_note.py","state_key":"content_marketing:data/tools/analyze_note.py","aliases":["content_marketing:data/tools/analyze_note.py"],"cdp_port":22005},
"content.comments.collect_bilibili": {"script_id":"content_marketing:data/tools/batch_rescrape_bilibili.py","state_key":"content_marketing:data/tools/batch_rescrape_bilibili.py","aliases":["content_marketing:data/tools/batch_rescrape_bilibili.py"],"cdp_port":22006,"login_mode":"A","required_cookie_domains":["bilibili.com"],"required_cookie_names":["SESSDATA"]},
"content.comments.collect_douyin": {"script_id":"content_marketing:data/tools/batch_rescrape_douyin.py","state_key":"content_marketing:data/tools/batch_rescrape_douyin.py","aliases":["content_marketing:data/tools/batch_rescrape_douyin.py"],"cdp_port":22007,"login_mode":"A","required_cookie_domains":["douyin.com"],"required_cookie_names":["sessionid"]},
"content.comments.collect_xiaohongshu": {"script_id":"content_marketing:data/tools/batch_rescrape_xiaohongshu.py","state_key":"content_marketing:data/tools/batch_rescrape_xiaohongshu.py","aliases":["content_marketing:data/tools/batch_rescrape_xiaohongshu.py"],"cdp_port":22008,"login_mode":"A","required_cookie_domains":["xiaohongshu.com"],"required_cookie_names":["web_session"]},
"content_marketing:data/tools/check_status.py": {"script_id":"content_marketing:data/tools/check_status.py","state_key":"content_marketing:data/tools/check_status.py","aliases":["content_marketing:data/tools/check_status.py"],"cdp_port":22009},
"content_marketing:data/tools/collect_note_metrics.py": {"script_id":"content_marketing:data/tools/collect_note_metrics.py","state_key":"content_marketing:data/tools/collect_note_metrics.py","aliases":["content_marketing:data/tools/collect_note_metrics.py"],"cdp_port":22010},
"content_marketing:data/tools/daily_marketing_report.bat": {"script_id":"content_marketing:data/tools/daily_marketing_report.bat","state_key":"content_marketing:data/tools/daily_marketing_report.bat","aliases":["content_marketing:data/tools/daily_marketing_report.bat"],"cdp_port":22011},
"content_marketing:data/tools/daily_run.bat": {"script_id":"content_marketing:data/tools/daily_run.bat","state_key":"content_marketing:data/tools/daily_run.bat","aliases":["content_marketing:data/tools/daily_run.bat"],"cdp_port":22012},
"content_marketing:data/tools/daily_run_with_backfill.bat": {"script_id":"content_marketing:data/tools/daily_run_with_backfill.bat","state_key":"content_marketing:data/tools/daily_run_with_backfill.bat","aliases":["content_marketing:data/tools/daily_run_with_backfill.bat"],"cdp_port":22013},
"content_marketing:data/tools/db.py": {"script_id":"content_marketing:data/tools/db.py","state_key":"content_marketing:data/tools/db.py","aliases":["content_marketing:data/tools/db.py"],"cdp_port":22014},
"content_marketing:data/tools/feishu_comment_batch.py": {"script_id":"content_marketing:data/tools/feishu_comment_batch.py","state_key":"content_marketing:data/tools/feishu_comment_batch.py","aliases":["content_marketing:data/tools/feishu_comment_batch.py"],"cdp_port":22015},
"content_marketing:data/tools/feishu_doc_writer.py": {"script_id":"content_marketing:data/tools/feishu_doc_writer.py","state_key":"content_marketing:data/tools/feishu_doc_writer.py","aliases":["content_marketing:data/tools/feishu_doc_writer.py"],"cdp_port":22016},
"content_marketing:data/tools/friday_relogin.bat": {"script_id":"content_marketing:data/tools/friday_relogin.bat","state_key":"content_marketing:data/tools/friday_relogin.bat","aliases":["content_marketing:data/tools/friday_relogin.bat"],"cdp_port":22017},
"content.login.refresh": {"script_id":"content_marketing:data/tools/friday_relogin_parallel.py","state_key":"content_marketing:data/tools/friday_relogin_parallel.py","aliases":["content_marketing:data/tools/friday_relogin_parallel.py"],"cdp_port":22018,"login_mode":"D"},
"content.creator_report.generate": {"script_id":"content_marketing:data/tools/generate_creator_report.py","state_key":"content_marketing:data/tools/generate_creator_report.py","aliases":["content_marketing:data/tools/generate_creator_report.py"],"cdp_port":22019},
"content_marketing:data/tools/init_db.py": {"script_id":"content_marketing:data/tools/init_db.py","state_key":"content_marketing:data/tools/init_db.py","aliases":["content_marketing:data/tools/init_db.py"],"cdp_port":22020},
"content_marketing:data/tools/kill_project_chrome.ps1": {"script_id":"content_marketing:data/tools/kill_project_chrome.ps1","state_key":"content_marketing:data/tools/kill_project_chrome.ps1","aliases":["content_marketing:data/tools/kill_project_chrome.ps1"],"cdp_port":22021},
"content_marketing:data/tools/list_project_chrome.ps1": {"script_id":"content_marketing:data/tools/list_project_chrome.ps1","state_key":"content_marketing:data/tools/list_project_chrome.ps1","aliases":["content_marketing:data/tools/list_project_chrome.ps1"],"cdp_port":22022},
"content_marketing:data/tools/monday_self_run.bat": {"script_id":"content_marketing:data/tools/monday_self_run.bat","state_key":"content_marketing:data/tools/monday_self_run.bat","aliases":["content_marketing:data/tools/monday_self_run.bat"],"cdp_port":22023},
"content_marketing:data/tools/monthly_creator_report.bat": {"script_id":"content_marketing:data/tools/monthly_creator_report.bat","state_key":"content_marketing:data/tools/monthly_creator_report.bat","aliases":["content_marketing:data/tools/monthly_creator_report.bat"],"cdp_port":22024},
"content_marketing:data/tools/monthly_summary.bat": {"script_id":"content_marketing:data/tools/monthly_summary.bat","state_key":"content_marketing:data/tools/monthly_summary.bat","aliases":["content_marketing:data/tools/monthly_summary.bat"],"cdp_port":22025},
"content_marketing:data/tools/pull_all_tables.py": {"script_id":"content_marketing:data/tools/pull_all_tables.py","state_key":"content_marketing:data/tools/pull_all_tables.py","aliases":["content_marketing:data/tools/pull_all_tables.py"],"cdp_port":22026},
"content.mapping.rebuild": {"script_id":"content_marketing:data/tools/rebuild_mapping.py","state_key":"content_marketing:data/tools/rebuild_mapping.py","aliases":["content_marketing:data/tools/rebuild_mapping.py"],"cdp_port":22027},
"content.mapping.refresh_self": {"script_id":"content_marketing:data/tools/refresh_self_mapping.py","state_key":"content_marketing:data/tools/refresh_self_mapping.py","aliases":["content_marketing:data/tools/refresh_self_mapping.py"],"cdp_port":22135},
"content_marketing:data/tools/relogin_bilibili.py": {"script_id":"content_marketing:data/tools/relogin_bilibili.py","state_key":"content_marketing:data/tools/relogin_bilibili.py","aliases":["content_marketing:data/tools/relogin_bilibili.py"],"cdp_port":22028,"login_mode":"D","required_cookie_domains":["bilibili.com"],"required_cookie_names":["SESSDATA"]},
"content_marketing:data/tools/relogin_douyin.py": {"script_id":"content_marketing:data/tools/relogin_douyin.py","state_key":"content_marketing:data/tools/relogin_douyin.py","aliases":["content_marketing:data/tools/relogin_douyin.py"],"cdp_port":22029,"login_mode":"D","required_cookie_domains":["douyin.com"],"required_cookie_names":["sessionid"]},
"content_marketing:data/tools/relogin_pgy.py": {"script_id":"content_marketing:data/tools/relogin_pgy.py","state_key":"content_marketing:data/tools/relogin_pgy.py","aliases":["content_marketing:data/tools/relogin_pgy.py"],"cdp_port":22030,"login_mode":"D","required_cookie_domains":["xiaohongshu.com"]},
"content_marketing:data/tools/relogin_xiaohongshu.py": {"script_id":"content_marketing:data/tools/relogin_xiaohongshu.py","state_key":"content_marketing:data/tools/relogin_xiaohongshu.py","aliases":["content_marketing:data/tools/relogin_xiaohongshu.py"],"cdp_port":22031,"login_mode":"D","required_cookie_domains":["xiaohongshu.com"],"required_cookie_names":["web_session"]},
"content_marketing:data/tools/relogin_xingtu.py": {"script_id":"content_marketing:data/tools/relogin_xingtu.py","state_key":"content_marketing:data/tools/relogin_xingtu.py","aliases":["content_marketing:data/tools/relogin_xingtu.py"],"cdp_port":22032,"login_mode":"D","required_cookie_domains":["douyin.com","oceanengine.com","xingtu.cn"],"required_cookie_names":["sessionid","sessionid_ss","sid_tt","sid_guard"]},
"content.failed.retry": {"script_id":"content_marketing:data/tools/retry_failed.py","state_key":"content_marketing:data/tools/retry_failed.py","aliases":["content_marketing:data/tools/retry_failed.py"],"cdp_port":22033},
"content_marketing:data/tools/sync_cooperations.bat": {"script_id":"content_marketing:data/tools/sync_cooperations.bat","state_key":"content_marketing:data/tools/sync_cooperations.bat","aliases":["content_marketing:data/tools/sync_cooperations.bat"],"cdp_port":22034},
"content.cooperations.sync": {"script_id":"content_marketing:data/tools/sync_cooperations.py","state_key":"content_marketing:data/tools/sync_cooperations.py","aliases":["content_marketing:data/tools/sync_cooperations.py"],"cdp_port":22035},
"content.metrics.sync": {"script_id":"content_marketing:data/tools/sync_metrics_to_cmt_notes.py","state_key":"content_marketing:data/tools/sync_metrics_to_cmt_notes.py","aliases":["content_marketing:data/tools/sync_metrics_to_cmt_notes.py"],"cdp_port":22036},
"content_marketing:data/tools/sync_style_categories.py": {"script_id":"content_marketing:data/tools/sync_style_categories.py","state_key":"content_marketing:data/tools/sync_style_categories.py","aliases":["content_marketing:data/tools/sync_style_categories.py"],"cdp_port":22037},
"content_marketing:data/tools/validate_mapping.py": {"script_id":"content_marketing:data/tools/validate_mapping.py","state_key":"content_marketing:data/tools/validate_mapping.py","aliases":["content_marketing:data/tools/validate_mapping.py"],"cdp_port":22038},
"content_marketing:data/tools/weekly_comment_scrape.bat": {"script_id":"content_marketing:data/tools/weekly_comment_scrape.bat","state_key":"content_marketing:data/tools/weekly_comment_scrape.bat","aliases":["content_marketing:data/tools/weekly_comment_scrape.bat"],"cdp_port":22039},
"content_marketing:data/tools/weekly_summary.bat": {"script_id":"content_marketing:data/tools/weekly_summary.bat","state_key":"content_marketing:data/tools/weekly_summary.bat","aliases":["content_marketing:data/tools/weekly_summary.bat"],"cdp_port":22040},
"content_marketing:data/tools/write_notes_to_doc.py": {"script_id":"content_marketing:data/tools/write_notes_to_doc.py","state_key":"content_marketing:data/tools/write_notes_to_doc.py","aliases":["content_marketing:data/tools/write_notes_to_doc.py"],"cdp_port":22041},
"content_marketing:douyin_comment_scraper.py": {"script_id":"content_marketing:douyin_comment_scraper.py","state_key":"content_marketing:douyin_comment_scraper.py","aliases":["content_marketing:douyin_comment_scraper.py"],"cdp_port":22042},
"content_marketing:feishu_mapping.py": {"script_id":"content_marketing:feishu_mapping.py","state_key":"content_marketing:feishu_mapping.py","aliases":["content_marketing:feishu_mapping.py"],"cdp_port":22043},
"content_marketing:login_helper.py": {"script_id":"content_marketing:login_helper.py","state_key":"content_marketing:login_helper.py","aliases":["content_marketing:login_helper.py"],"cdp_port":22044},
"content.summary.monthly": {"script_id":"content_marketing:monthly_summary_all.py","state_key":"content_marketing:monthly_summary_all.py","aliases":["content_marketing:monthly_summary_all.py"],"cdp_port":22045},
"content_marketing:pgy_xhs_scraper.py": {"script_id":"content_marketing:pgy_xhs_scraper.py","state_key":"content_marketing:pgy_xhs_scraper.py","aliases":["content_marketing:pgy_xhs_scraper.py"],"cdp_port":22046},
"content_marketing:pgy_xhs_scraper_v2.py": {"script_id":"content_marketing:pgy_xhs_scraper_v2.py","state_key":"content_marketing:pgy_xhs_scraper_v2.py","aliases":["content_marketing:pgy_xhs_scraper_v2.py"],"cdp_port":22047,"login_mode":"A","required_cookie_domains":["xiaohongshu.com"]},
"content.metrics.collect_collaborators": {"script_id":"content_marketing:run_all.py","state_key":"content_marketing:run_all.py","aliases":["content_marketing:run_all.py"],"cdp_port":22048},
"content.metrics.collect_self_bilibili": {"script_id":"content_marketing:self_bilibili_scraper.py","state_key":"content_marketing:self_bilibili_scraper.py","aliases":["content_marketing:self_bilibili_scraper.py"],"cdp_port":22049,"login_mode":"A","required_cookie_domains":["bilibili.com"],"required_cookie_names":["SESSDATA"]},
"content_marketing:self_douyin_scraper.py": {"script_id":"content_marketing:self_douyin_scraper.py","state_key":"content_marketing:self_douyin_scraper.py","aliases":["content_marketing:self_douyin_scraper.py"],"cdp_port":22050,"login_mode":"A","required_cookie_domains":["douyin.com"],"required_cookie_names":["sessionid","sessionid_ss","sid_tt","sid_guard"]},
"content.summary.weekly": {"script_id":"content_marketing:weekly_summary_all.py","state_key":"content_marketing:weekly_summary_all.py","aliases":["content_marketing:weekly_summary_all.py"],"cdp_port":22051},
"content_marketing:weekly_summary_xingyun2.py": {"script_id":"content_marketing:weekly_summary_xingyun2.py","state_key":"content_marketing:weekly_summary_xingyun2.py","aliases":["content_marketing:weekly_summary_xingyun2.py"],"cdp_port":22052},
"content_marketing:xiaohongshu_comment_scraper.py": {"script_id":"content_marketing:xiaohongshu_comment_scraper.py","state_key":"content_marketing:xiaohongshu_comment_scraper.py","aliases":["content_marketing:xiaohongshu_comment_scraper.py"],"cdp_port":22053},
"content_marketing:xingtu_scraper.py": {"script_id":"content_marketing:xingtu_scraper.py","state_key":"content_marketing:xingtu_scraper.py","aliases":["content_marketing:xingtu_scraper.py"],"cdp_port":22054},
"content_marketing:xingtu_scraper_v2.py": {"script_id":"content_marketing:xingtu_scraper_v2.py","state_key":"content_marketing:xingtu_scraper_v2.py","aliases":["content_marketing:xingtu_scraper_v2.py"],"cdp_port":22055,"login_mode":"A","required_cookie_domains":["douyin.com","oceanengine.com","xingtu.cn"],"required_cookie_names":["sessionid","sessionid_ss","sid_tt","sid_guard"]},
"product_commerce:aggregate_daily_final.py": {"script_id":"product_commerce:aggregate_daily_final.py","state_key":"product_commerce:aggregate_daily_final.py","aliases":["product_commerce:aggregate_daily_final.py"],"cdp_port":22056},
"product.style_analysis.run": {"script_id":"product_commerce:analyze_style_with_hermes.py","state_key":"product_commerce:analyze_style_with_hermes.py","aliases":["product_commerce:analyze_style_with_hermes.py"],"cdp_port":22057},
"product_commerce:backfill_poseidon_sales.py": {"script_id":"product_commerce:backfill_poseidon_sales.py","state_key":"product_commerce:backfill_poseidon_sales.py","aliases":["product_commerce:backfill_poseidon_sales.py"],"cdp_port":22130},
"product.backfill.run": {"script_id":"product_commerce:backfill_collect.py","state_key":"product_commerce:backfill_collect.py","aliases":["product_commerce:backfill_collect.py"],"cdp_port":22058},
"product_commerce:backfill_one_day.py": {"script_id":"product_commerce:backfill_one_day.py","state_key":"product_commerce:backfill_one_day.py","aliases":["product_commerce:backfill_one_day.py"],"cdp_port":22059},
"product_commerce:check_nine_day_decline.py": {"script_id":"product_commerce:check_nine_day_decline.py","state_key":"product_commerce:check_nine_day_decline.py","aliases":["product_commerce:check_nine_day_decline.py"],"cdp_port":22060},
"product_commerce:collect_dy_market_rank.py": {"script_id":"product_commerce:collect_dy_market_rank.py","state_key":"product_commerce:collect_dy_market_rank.py","aliases":["product_commerce:collect_dy_market_rank.py"],"cdp_port":22061,"login_mode":"A","required_cookie_domains":["jinritemai.com"]},
"product_commerce:collect_dy_persona_to_bitable.py": {"script_id":"product_commerce:collect_dy_persona_to_bitable.py","state_key":"product_commerce:collect_dy_persona_to_bitable.py","aliases":["product_commerce:collect_dy_persona_to_bitable.py"],"cdp_port":22062},
"product_commerce:collect_erp_yesterday_metrics.py": {"script_id":"product_commerce:collect_erp_yesterday_metrics.py","state_key":"product_commerce:collect_erp_yesterday_metrics.py","aliases":["product_commerce:collect_erp_yesterday_metrics.py"],"cdp_port":22063,"login_mode":"C","required_cookie_domains":["erp321.com"]},
"product_commerce:collect_jd_market_rank.py": {"script_id":"product_commerce:collect_jd_market_rank.py","state_key":"product_commerce:collect_jd_market_rank.py","aliases":["product_commerce:collect_jd_market_rank.py"],"cdp_port":22064,"login_mode":"C","required_cookie_domains":["jd.com"],"credential_env_names":["JD_PASSWORD"]},
"product_commerce:collect_jd_persona_to_bitable.py": {"script_id":"product_commerce:collect_jd_persona_to_bitable.py","state_key":"product_commerce:collect_jd_persona_to_bitable.py","aliases":["product_commerce:collect_jd_persona_to_bitable.py"],"cdp_port":22065,"login_mode":"C","required_cookie_domains":["jd.com"],"credential_env_names":["JD_PASSWORD"]},
"product_commerce:collect_persona_to_bitable.py": {"script_id":"product_commerce:collect_persona_to_bitable.py","state_key":"product_commerce:collect_persona_to_bitable.py","aliases":["product_commerce:collect_persona_to_bitable.py"],"cdp_port":22066},
"product_commerce:collect_sycm_market_rank.py": {"script_id":"product_commerce:collect_sycm_market_rank.py","state_key":"product_commerce:collect_sycm_market_rank.py","aliases":["product_commerce:collect_sycm_market_rank.py"],"cdp_port":22067,"login_mode":"C","required_cookie_domains":["taobao.com"],"credential_env_names":["SYCM_ACCOUNT","SYCM_PASSWORD"]},
"product.import.daily": {"script_id":"product_commerce:commands/import_daily.py","state_key":"product_commerce:commands/import_daily.py","aliases":["product_commerce:commands/import_daily.py"],"cdp_port":22068},
"product.alert.run": {"script_id":"product_commerce:commands/run_alerts.py","state_key":"product_commerce:commands/run_alerts.py","aliases":["product_commerce:commands/run_alerts.py"],"cdp_port":22069},
"product_commerce:db/sync_dim_style.py": {"script_id":"product_commerce:db/sync_dim_style.py","state_key":"product_commerce:db/sync_dim_style.py","aliases":["product_commerce:db/sync_dim_style.py"],"cdp_port":22070},
"product_commerce:db/sync_sku_master.py": {"script_id":"product_commerce:db/sync_sku_master.py","state_key":"product_commerce:db/sync_sku_master.py","aliases":["product_commerce:db/sync_sku_master.py"],"cdp_port":22071},
"product_commerce:dy_audience_profile_collect.py": {"script_id":"product_commerce:dy_audience_profile_collect.py","state_key":"product_commerce:dy_audience_profile_collect.py","aliases":["product_commerce:dy_audience_profile_collect.py"],"cdp_port":22072,"login_mode":"A","required_cookie_domains":["jinritemai.com"]},
"product_commerce:dy_product_scraping.py": {"script_id":"product_commerce:dy_product_scraping.py","state_key":"product_commerce:dy_product_scraping.py","aliases":["product_commerce:dy_product_scraping.py"],"cdp_port":22073,"login_mode":"A","required_cookie_domains":["jinritemai.com"]},
"product_commerce:erp_login_product_analysis.py": {"script_id":"product_commerce:erp_login_product_analysis.py","state_key":"product_commerce:erp_login_product_analysis.py","aliases":["product_commerce:erp_login_product_analysis.py"],"cdp_port":22074},
"product_commerce:export_bitable_records.py": {"script_id":"product_commerce:export_bitable_records.py","state_key":"product_commerce:export_bitable_records.py","aliases":["product_commerce:export_bitable_records.py"],"cdp_port":22075},
"product_commerce:import_product_daily.py": {"script_id":"product_commerce:import_product_daily.py","state_key":"product_commerce:import_product_daily.py","aliases":["product_commerce:import_product_daily.py"],"cdp_port":22076},
"product_commerce:import_product_reviews.py": {"script_id":"product_commerce:import_product_reviews.py","state_key":"product_commerce:import_product_reviews.py","aliases":["product_commerce:import_product_reviews.py"],"cdp_port":22077},
"product_commerce:insert_bitable_records.py": {"script_id":"product_commerce:insert_bitable_records.py","state_key":"product_commerce:insert_bitable_records.py","aliases":["product_commerce:insert_bitable_records.py"],"cdp_port":22078},
"product_commerce:jd_main_image_collector.py": {"script_id":"product_commerce:jd_main_image_collector.py","state_key":"product_commerce:jd_main_image_collector.py","aliases":["product_commerce:jd_main_image_collector.py"],"cdp_port":22079,"login_mode":"C","required_cookie_domains":["jd.com"],"credential_env_names":["JD_PASSWORD"]},
"product_commerce:jd_product_data_collector.py": {"script_id":"product_commerce:jd_product_data_collector.py","state_key":"product_commerce:jd_product_data_collector.py","aliases":["product_commerce:jd_product_data_collector.py"],"cdp_port":22080,"login_mode":"C","required_cookie_domains":["jd.com"],"credential_env_names":["JD_PASSWORD"]},
"product_commerce:jd_self_inventory_sales_collector.py": {"script_id":"product_commerce:jd_self_inventory_sales_collector.py","state_key":"product_commerce:jd_self_inventory_sales_collector.py","aliases":["product_commerce:jd_self_inventory_sales_collector.py"],"cdp_port":22081},
"product_commerce:market_rank_product_import.py": {"script_id":"product_commerce:market_rank_product_import.py","state_key":"product_commerce:market_rank_product_import.py","aliases":["product_commerce:market_rank_product_import.py"],"cdp_port":22131},
"product.daily.orchestrate": {"script_id":"product_commerce:orchestrate_daily_collection.py","state_key":"product_commerce:orchestrate_daily_collection.py","aliases":["product_commerce:orchestrate_daily_collection.py"],"cdp_port":22082},
"product.market_rank.orchestrate": {"script_id":"product_commerce:orchestrate_market_rank_collection.py","state_key":"product_commerce:orchestrate_market_rank_collection.py","aliases":["product_commerce:orchestrate_market_rank_collection.py"],"cdp_port":22083},
"product.review.orchestrate": {"script_id":"product_commerce:orchestrate_review_collection.py","state_key":"product_commerce:orchestrate_review_collection.py","aliases":["product_commerce:orchestrate_review_collection.py"],"cdp_port":22084},
"product_commerce:reapply_erp_override.py": {"script_id":"product_commerce:reapply_erp_override.py","state_key":"product_commerce:reapply_erp_override.py","aliases":["product_commerce:reapply_erp_override.py"],"cdp_port":22085},
"product_commerce:rebuild_market_rank_documents.py": {"script_id":"product_commerce:rebuild_market_rank_documents.py","state_key":"product_commerce:rebuild_market_rank_documents.py","aliases":["product_commerce:rebuild_market_rank_documents.py"],"cdp_port":22086},
"product_commerce:run_alerts_with_retry.py": {"script_id":"product_commerce:run_alerts_with_retry.py","state_key":"product_commerce:run_alerts_with_retry.py","aliases":["product_commerce:run_alerts_with_retry.py"],"cdp_port":22087},
"product.persona.collect": {"script_id":"product_commerce:run_daily_persona.py","state_key":"product_commerce:run_daily_persona.py","aliases":["product_commerce:run_daily_persona.py"],"cdp_port":22088},
"product.main_image.collect_jd": {"script_id":"product_commerce:run_weekly_jd_main_image.py","state_key":"product_commerce:run_weekly_jd_main_image.py","aliases":["product_commerce:run_weekly_jd_main_image.py"],"cdp_port":22089},
"product.main_image.collect_tmall": {"script_id":"product_commerce:run_weekly_main_image.py","state_key":"product_commerce:run_weekly_main_image.py","aliases":["product_commerce:run_weekly_main_image.py"],"cdp_port":22090},
"product.sales_sheet.sync": {"script_id":"product_commerce:sync_monthly_sales_sheet.py","state_key":"product_commerce:sync_monthly_sales_sheet.py","aliases":["product_commerce:sync_monthly_sales_sheet.py"],"cdp_port":22136,"login_mode":"C","required_cookie_domains":["erp321.com"]},
"product_commerce:scripts/insert_jd_main_image_records.py": {"script_id":"product_commerce:scripts/insert_jd_main_image_records.py","state_key":"product_commerce:scripts/insert_jd_main_image_records.py","aliases":["product_commerce:scripts/insert_jd_main_image_records.py"],"cdp_port":22091},
"product_commerce:scripts/insert_main_image_records.py": {"script_id":"product_commerce:scripts/insert_main_image_records.py","state_key":"product_commerce:scripts/insert_main_image_records.py","aliases":["product_commerce:scripts/insert_main_image_records.py"],"cdp_port":22092},
"product_commerce:taobao_dmp_item_crowd_insight_screenshots.py": {"script_id":"product_commerce:taobao_dmp_item_crowd_insight_screenshots.py","state_key":"product_commerce:taobao_dmp_item_crowd_insight_screenshots.py","aliases":["product_commerce:taobao_dmp_item_crowd_insight_screenshots.py"],"cdp_port":22093,"login_mode":"C","required_cookie_domains":["taobao.com"],"credential_env_names":["SYCM_ACCOUNT","SYCM_PASSWORD"]},
"product_commerce:taobao_sycm_collect.py": {"script_id":"product_commerce:taobao_sycm_collect.py","state_key":"product_commerce:taobao_sycm_collect.py","aliases":["product_commerce:taobao_sycm_collect.py"],"cdp_port":22094,"login_mode":"C","required_cookie_domains":["taobao.com"],"credential_env_names":["SYCM_ACCOUNT","SYCM_PASSWORD"]},
"product_commerce:taobao_sycm_collect_backfill.py": {"script_id":"product_commerce:taobao_sycm_collect_backfill.py","state_key":"product_commerce:taobao_sycm_collect_backfill.py","aliases":["product_commerce:taobao_sycm_collect_backfill.py"],"cdp_port":22095,"login_mode":"C","required_cookie_domains":["taobao.com"],"credential_env_names":["SYCM_ACCOUNT","SYCM_PASSWORD"]},
"product_commerce:taobao_sycm_products.py": {"script_id":"product_commerce:taobao_sycm_products.py","state_key":"product_commerce:taobao_sycm_products.py","aliases":["product_commerce:taobao_sycm_products.py"],"cdp_port":22096,"login_mode":"C","required_cookie_domains":["taobao.com"],"credential_env_names":["SYCM_ACCOUNT","SYCM_PASSWORD"]},
"product_commerce:taobao_wanxiang_ai_creative_report.py": {"script_id":"product_commerce:taobao_wanxiang_ai_creative_report.py","state_key":"product_commerce:taobao_wanxiang_ai_creative_report.py","aliases":["product_commerce:taobao_wanxiang_ai_creative_report.py"],"cdp_port":22097,"login_mode":"C","required_cookie_domains":["taobao.com","alimama.com"],"credential_env_names":["SYCM_ACCOUNT","SYCM_PASSWORD"]},
"product_commerce:upload_video_to_guanghe.py": {"script_id":"product_commerce:upload_video_to_guanghe.py","state_key":"product_commerce:upload_video_to_guanghe.py","aliases":["product_commerce:upload_video_to_guanghe.py"],"cdp_port":22098},
"product_commerce:vendors/dy-data-flow/dy_store_competitor_store_scraping.py": {"script_id":"product_commerce:vendors/dy-data-flow/dy_store_competitor_store_scraping.py","state_key":"product_commerce:vendors/dy-data-flow/dy_store_competitor_store_scraping.py","aliases":["product_commerce:vendors/dy-data-flow/dy_store_competitor_store_scraping.py"],"cdp_port":22099,"login_mode":"A","required_cookie_domains":["jinritemai.com"]},
"product_commerce:vendors/jd-data-flow/jd_data_collector.py": {"script_id":"product_commerce:vendors/jd-data-flow/jd_data_collector.py","state_key":"product_commerce:vendors/jd-data-flow/jd_data_collector.py","aliases":["product_commerce:vendors/jd-data-flow/jd_data_collector.py"],"cdp_port":22100,"login_mode":"B","required_cookie_domains":["jd.com"],"credential_env_names":["JD_PASSWORD"]},
"product_commerce:vendors/jd-data-flow/jd_peer_product_data_collector.py": {"script_id":"product_commerce:vendors/jd-data-flow/jd_peer_product_data_collector.py","state_key":"product_commerce:vendors/jd-data-flow/jd_peer_product_data_collector.py","aliases":["product_commerce:vendors/jd-data-flow/jd_peer_product_data_collector.py"],"cdp_port":22101},
"product_commerce:vendors/jd-data-flow/jd_product_data_collector.py": {"script_id":"product_commerce:vendors/jd-data-flow/jd_product_data_collector.py","state_key":"product_commerce:vendors/jd-data-flow/jd_product_data_collector.py","aliases":["product_commerce:vendors/jd-data-flow/jd_product_data_collector.py"],"cdp_port":22102,"login_mode":"C","required_cookie_domains":["jd.com"],"credential_env_names":["JD_PASSWORD"]},
"product_commerce:weekly_aggregate.py": {"script_id":"product_commerce:weekly_aggregate.py","state_key":"product_commerce:weekly_aggregate.py","aliases":["product_commerce:weekly_aggregate.py"],"cdp_port":22103},
"shop.douyin_price_appeal": {"script_id":"shop_intelligence:collectors/dy_store_competitor_store_scraping.py","state_key":"shop_intelligence:collectors/dy_store_competitor_store_scraping.py","aliases":["shop_intelligence:collectors/dy_store_competitor_store_scraping.py"],"cdp_port":22104,"login_mode":"A","required_cookie_domains":["jinritemai.com"]},
"shop_intelligence:collectors/jd_data_collector.py": {"script_id":"shop_intelligence:collectors/jd_data_collector.py","state_key":"shop_intelligence:collectors/jd_data_collector.py","aliases":["shop_intelligence:collectors/jd_data_collector.py"],"cdp_port":22105,"login_mode":"B","required_cookie_domains":["jd.com"],"credential_env_names":["JD_PASSWORD"]},
"shop_intelligence:collectors/jd_peer_store_data_collector.py": {"script_id":"shop_intelligence:collectors/jd_peer_store_data_collector.py","state_key":"shop_intelligence:collectors/jd_peer_store_data_collector.py","aliases":["shop_intelligence:collectors/jd_peer_store_data_collector.py"],"cdp_port":22106,"login_mode":"B","required_cookie_domains":["jd.com"],"credential_env_names":["JD_PASSWORD"]},
"shop.jd_self_operated.collect_brand": {"script_id":"shop_intelligence:collectors/jd_self_operated_brand_daily.py","state_key":"shop_intelligence:collectors/jd_self_operated_brand_daily.py","aliases":["shop_intelligence:collectors/jd_self_operated_brand_daily.py"],"cdp_port":22132,"login_mode":"C","required_cookie_domains":["jd.com"],"credential_env_names":["JD_SELF_OPERATED_ACCOUNT","JD_SELF_OPERATED_PASSWORD"]},
"shop.jd_self_operated.collect_product": {"script_id":"shop_intelligence:collectors/jd_self_operated_product_daily.py","state_key":"shop_intelligence:collectors/jd_self_operated_product_daily.py","aliases":["shop_intelligence:collectors/jd_self_operated_product_daily.py"],"cdp_port":22133,"login_mode":"C","required_cookie_domains":["jd.com"],"credential_env_names":["JD_SELF_OPERATED_ACCOUNT","JD_SELF_OPERATED_PASSWORD"]},
"shop_intelligence:collectors/taobao_sycm.py": {"script_id":"shop_intelligence:collectors/taobao_sycm.py","state_key":"shop_intelligence:collectors/taobao_sycm.py","aliases":["shop_intelligence:collectors/taobao_sycm.py"],"cdp_port":22107,"login_mode":"C","required_cookie_domains":["taobao.com"],"credential_env_names":["SYCM_ACCOUNT","SYCM_PASSWORD"]},
"shop.competitor.collect": {"script_id":"shop_intelligence:runners/run_peer_store.py","state_key":"shop_intelligence:runners/run_peer_store.py","aliases":["shop_intelligence:runners/run_peer_store.py"],"cdp_port":22108},
"shop_intelligence:runners/run_jd_self_operated_daily.py": {"script_id":"shop_intelligence:runners/run_jd_self_operated_daily.py","state_key":"shop_intelligence:runners/run_jd_self_operated_daily.py","aliases":["shop_intelligence:runners/run_jd_self_operated_daily.py"],"cdp_port":22134},
"shop.metrics.collect": {"script_id":"shop_intelligence:runners/run_shop.py","state_key":"shop_intelligence:runners/run_shop.py","aliases":["shop_intelligence:runners/run_shop.py"],"cdp_port":22109},
"shop_intelligence:scripts/remove_scheduler.ps1": {"script_id":"shop_intelligence:scripts/remove_scheduler.ps1","state_key":"shop_intelligence:scripts/remove_scheduler.ps1","aliases":["shop_intelligence:scripts/remove_scheduler.ps1"],"cdp_port":22110},
"shop_intelligence:scripts/setup_scheduler.ps1": {"script_id":"shop_intelligence:scripts/setup_scheduler.ps1","state_key":"shop_intelligence:scripts/setup_scheduler.ps1","aliases":["shop_intelligence:scripts/setup_scheduler.ps1"],"cdp_port":22111},
"supply_chain:orchestrator/mcp_workflow.py": {"script_id":"supply_chain:orchestrator/mcp_workflow.py","state_key":"supply_chain:orchestrator/mcp_workflow.py","aliases":["supply_chain:orchestrator/mcp_workflow.py"],"cdp_port":22112},
"supply_chain:orchestrator/monitor.py": {"script_id":"supply_chain:orchestrator/monitor.py","state_key":"supply_chain:orchestrator/monitor.py","aliases":["supply_chain:orchestrator/monitor.py"],"cdp_port":22113},
"supply_chain:orchestrator/runner.py": {"script_id":"supply_chain:orchestrator/runner.py","state_key":"supply_chain:orchestrator/runner.py","aliases":["supply_chain:orchestrator/runner.py"],"cdp_port":22114},
"supply_chain:orchestrator/scripts/ProductReplenishment.py": {"script_id":"supply_chain:orchestrator/scripts/ProductReplenishment.py","state_key":"supply_chain:orchestrator/scripts/ProductReplenishment.py","aliases":["supply_chain:orchestrator/scripts/ProductReplenishment.py"],"cdp_port":22115,"login_mode":"C","required_cookie_domains":["erp321.com"],"required_cookie_names":["u_id","u_co_id","ASP.NET_SessionId",".ASPXAUTH","token"],"credential_env_names":["GYXX_SUPPLY_ERP_PASSWORD"]},
"supply_chain:orchestrator/scripts/PurchaseConfirmation.py": {"script_id":"supply_chain:orchestrator/scripts/PurchaseConfirmation.py","state_key":"supply_chain:orchestrator/scripts/PurchaseConfirmation.py","aliases":["supply_chain:orchestrator/scripts/PurchaseConfirmation.py"],"cdp_port":22116,"login_mode":"C","required_cookie_domains":["erp321.com"],"required_cookie_names":["ASP.NET_SessionId",".ASPXAUTH","token"],"credential_env_names":["GYXX_SUPPLY_ERP_PASSWORD"]},
"supply_chain:orchestrator/scripts/PurchaseOrderUpdate.py": {"script_id":"supply_chain:orchestrator/scripts/PurchaseOrderUpdate.py","state_key":"supply_chain:orchestrator/scripts/PurchaseOrderUpdate.py","aliases":["supply_chain:orchestrator/scripts/PurchaseOrderUpdate.py"],"cdp_port":22117,"login_mode":"C","required_cookie_domains":["erp321.com"],"required_cookie_names":["ASP.NET_SessionId",".ASPXAUTH","token"],"credential_env_names":["GYXX_SUPPLY_ERP_PASSWORD"]},
"supply_chain:orchestrator/scripts/batch_process.py": {"script_id":"supply_chain:orchestrator/scripts/batch_process.py","state_key":"supply_chain:orchestrator/scripts/batch_process.py","aliases":["supply_chain:orchestrator/scripts/batch_process.py"],"cdp_port":22118},
"supply_chain:orchestrator/scripts/collect_confirmation.ps1": {"script_id":"supply_chain:orchestrator/scripts/collect_confirmation.ps1","state_key":"supply_chain:orchestrator/scripts/collect_confirmation.ps1","aliases":["supply_chain:orchestrator/scripts/collect_confirmation.ps1"],"cdp_port":22119},
"supply_chain:orchestrator/scripts/collect_purchase_order_update.ps1": {"script_id":"supply_chain:orchestrator/scripts/collect_purchase_order_update.ps1","state_key":"supply_chain:orchestrator/scripts/collect_purchase_order_update.ps1","aliases":["supply_chain:orchestrator/scripts/collect_purchase_order_update.ps1"],"cdp_port":22120},
"supply_chain:orchestrator/scripts/collect_replenishment.ps1": {"script_id":"supply_chain:orchestrator/scripts/collect_replenishment.ps1","state_key":"supply_chain:orchestrator/scripts/collect_replenishment.ps1","aliases":["supply_chain:orchestrator/scripts/collect_replenishment.ps1"],"cdp_port":22121},
"supply_chain:orchestrator/scripts/insert_replenishment_bitable.py": {"script_id":"supply_chain:orchestrator/scripts/insert_replenishment_bitable.py","state_key":"supply_chain:orchestrator/scripts/insert_replenishment_bitable.py","aliases":["supply_chain:orchestrator/scripts/insert_replenishment_bitable.py"],"cdp_port":22122},
"supply_chain:orchestrator/scripts/send_card_notification.py": {"script_id":"supply_chain:orchestrator/scripts/send_card_notification.py","state_key":"supply_chain:orchestrator/scripts/send_card_notification.py","aliases":["supply_chain:orchestrator/scripts/send_card_notification.py"],"cdp_port":22123},
"supply_chain:orchestrator/scripts/trigger_purchase_order_update.py": {"script_id":"supply_chain:orchestrator/scripts/trigger_purchase_order_update.py","state_key":"supply_chain:orchestrator/scripts/trigger_purchase_order_update.py","aliases":["supply_chain:orchestrator/scripts/trigger_purchase_order_update.py"],"cdp_port":22124},
"supply_chain:orchestrator/sql/backfill_history.py": {"script_id":"supply_chain:orchestrator/sql/backfill_history.py","state_key":"supply_chain:orchestrator/sql/backfill_history.py","aliases":["supply_chain:orchestrator/sql/backfill_history.py"],"cdp_port":22125},
"supply.workflow.run": {"script_id":"supply_chain:run.py","state_key":"supply_chain:run.py","aliases":["supply_chain:run.py"],"cdp_port":22126},
"supply_chain:scripts/purchase-confirmation.bat": {"script_id":"supply_chain:scripts/purchase-confirmation.bat","state_key":"supply_chain:scripts/purchase-confirmation.bat","aliases":["supply_chain:scripts/purchase-confirmation.bat"],"cdp_port":22127},
"supply_chain:scripts/replenishment-alert.bat": {"script_id":"supply_chain:scripts/replenishment-alert.bat","state_key":"supply_chain:scripts/replenishment-alert.bat","aliases":["supply_chain:scripts/replenishment-alert.bat"],"cdp_port":22128},
"supply_chain:scripts/replenishment.bat": {"script_id":"supply_chain:scripts/replenishment.bat","state_key":"supply_chain:scripts/replenishment.bat","aliases":["supply_chain:scripts/replenishment.bat"],"cdp_port":22129}
},
"services": {
"feishu": "legacy",
"postgres": "cloud",
"hermes": "local",
"hermes_url": "http://127.0.0.1:8642/v1/chat/completions"
"hermes_url": "http://127.0.0.1:8642/v1/chat/completions",
"hermes_collector_url": "http://127.0.0.1:8643/v1/chat/completions",
"hermes_analyzer_gateway_url": "http://127.0.0.1:8642/v1",
"hermes_collector_gateway_url": "http://127.0.0.1:8643/v1"
}
}
+154 -27
View File
@@ -1,30 +1,157 @@
{
"schema_version": 1,
"timezone": "Asia/Shanghai",
"schedules": [
{"workflow_id":"content.metrics.daily","kind":"daily","at":"06:00"},
{"workflow_id":"content.cooperations.daily","kind":"daily","at":"09:00"},
{"workflow_id":"content.marketing_report.daily","kind":"daily","at":"10:00"},
{"workflow_id":"content.relogin.weekly","kind":"weekly","days":["Friday"],"at":"10:00"},
{"workflow_id":"content.self_operated.weekly","kind":"weekly","days":["Monday"],"at":"13:00"},
{"workflow_id":"content.comments.weekly","kind":"weekly","days":["Sunday"],"at":"12:00"},
{"workflow_id":"content.summary.weekly","kind":"weekly","days":["Tuesday"],"at":"10:00"},
{"workflow_id":"content.summary.monthly","kind":"monthly","day_of_month":1,"at":"08:00"},
{"workflow_id":"content.creator_report.monthly","kind":"monthly","day_of_month":1,"at":"08:30"},
{"workflow_id":"shop.metrics.weekly","kind":"weekly","days":["Monday"],"at":"12:00"},
{"workflow_id":"shop.competitor.weekly","kind":"weekly","days":["Monday"],"at":"12:30"},
{"workflow_id":"product.daily","kind":"daily","at":"08:40"},
{"workflow_id":"product.persona.daily","kind":"daily","at":"10:00"},
{"workflow_id":"product.import.daily","kind":"daily","at":"19:00"},
{"workflow_id":"product.alert.daily","kind":"daily","at":"23:00"},
{"workflow_id":"product.style_analysis.interval","kind":"interval_days","every_days":3,"anchor_date":"2026-07-25","at":"11:00"},
{"workflow_id":"product.main_image.jd.weekly","kind":"weekly","days":["Sunday"],"at":"08:30"},
{"workflow_id":"product.main_image.weekly","kind":"weekly","days":["Sunday"],"at":"09:30"},
{"workflow_id":"supply.replenishment_alert.daily","kind":"daily","at":"07:00"},
{"workflow_id":"supply.purchase_confirmation.daily","kind":"daily","at":"08:00"},
{"workflow_id":"supply.replenishment.weekly","kind":"weekly","days":["Monday"],"at":"08:00"}
]
{
"at": "22:00",
"business_date_offset_days": 0,
"enabled": true,
"kind": "daily",
"workflow_id": "content.metrics.daily"
},
{
"at": "09:00",
"kind": "daily",
"workflow_id": "content.cooperations.daily"
},
{
"at": "10:00",
"kind": "daily",
"workflow_id": "content.marketing_report.daily"
},
{
"at": "10:00",
"days": [
"Friday"
],
"kind": "weekly",
"workflow_id": "content.relogin.weekly"
},
{
"at": "12:00",
"days": [
"Sunday"
],
"kind": "weekly",
"workflow_id": "content.comments.weekly"
},
{
"at": "10:00",
"days": [
"Tuesday"
],
"kind": "weekly",
"workflow_id": "content.summary.weekly"
},
{
"at": "08:00",
"day_of_month": 1,
"kind": "monthly",
"workflow_id": "content.summary.monthly"
},
{
"at": "08:30",
"day_of_month": 1,
"kind": "monthly",
"workflow_id": "content.creator_report.monthly"
},
{
"at": "12:00",
"days": [
"Monday"
],
"kind": "weekly",
"workflow_id": "shop.metrics.weekly"
},
{
"at": "12:30",
"days": [
"Monday"
],
"kind": "weekly",
"workflow_id": "shop.competitor.weekly"
},
{
"at": [
"08:00",
"16:00",
"22:00"
],
"kind": "daily",
"workflow_id": "shop.douyin_price_appeal"
},
{
"at": "16:00",
"business_date_offset_days": -1,
"kind": "daily",
"workflow_id": "shop.jd_self_operated.daily"
},
{
"at": "08:40",
"business_date_offset_days": -1,
"kind": "daily",
"workflow_id": "product.daily"
},
{
"at": "10:00",
"kind": "daily",
"workflow_id": "product.persona.daily"
},
{
"at": "19:00",
"kind": "daily",
"workflow_id": "product.import.daily"
},
{
"at": "23:00",
"kind": "daily",
"workflow_id": "product.alert.daily"
},
{
"anchor_date": "2026-07-25",
"at": "11:00",
"every_days": 3,
"kind": "interval_days",
"workflow_id": "product.style_analysis.interval"
},
{
"at": "08:30",
"days": [
"Sunday"
],
"kind": "weekly",
"workflow_id": "product.main_image.weekly"
},
{
"at": "18:00",
"kind": "daily",
"workflow_id": "product.sales_sheet.daily"
},
{
"at": "10:00",
"days": [
"Monday"
],
"kind": "weekly",
"workflow_id": "product.market_rank"
},
{
"at": "07:00",
"kind": "daily",
"workflow_id": "supply.replenishment_alert.daily"
},
{
"at": "08:00",
"kind": "daily",
"workflow_id": "supply.purchase_confirmation.daily"
},
{
"at": "08:00",
"days": [
"Monday"
],
"kind": "weekly",
"workflow_id": "supply.replenishment.weekly"
}
],
"schema_version": 1,
"timezone": "Asia/Shanghai"
}
+3
View File
@@ -3,3 +3,6 @@ GYXX_POSTGRES_PASSWORD=
GYXX_FEISHU_APP_ID=
GYXX_FEISHU_APP_SECRET=
GYXX_HERMES_API_KEY=
GYXX_NOTIFICATION_RECIPIENT_OPEN_ID=
JD_SELF_OPERATED_ACCOUNT=
JD_SELF_OPERATED_PASSWORD=
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+374 -303
View File
@@ -1,305 +1,376 @@
{
"schema_version": 1,
"module": "shop_intelligence",
"source_project": "shop-data-flow",
"files": [
{
"source_relative_path": ".env.example",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runtime/config.example.env",
"category": "config",
"source_sha256": "d0a005429c4363020681076afe4ec389712bd86b041271b8e9d52b977d79bfc1",
"target_sha256": "a1e2bad32d3a2eb6cec1c60e13bef1298f872365301c048a8e8df826c783c122",
"transformed": true
},
{
"source_relative_path": "adaptive_selectors.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runtime/adaptive_selectors.py",
"category": "source",
"source_sha256": "7f60d6eedf0b9bf4aad0087305a86814dc9e2691128cce4010f9b3deff403bae",
"target_sha256": "9ee3b786a5eecb6877c31d583de87bf75e22326c9126d9b679d2d4460db70454",
"transformed": true
},
{
"source_relative_path": "collectors/__init__.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runtime/collectors/__init__.py",
"category": "source",
"source_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"target_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"transformed": false
},
{
"source_relative_path": "collectors/dy_store_competitor_store_scraping.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runtime/collectors/dy_store_competitor_store_scraping.py",
"category": "source",
"source_sha256": "009879a7dd341ca6ecbc8eb66f5700114c73bcaba3a53f159014a76232d0aa6b",
"target_sha256": "8d319196d56a52e084c375f872faf729d33fca400f4cabae901accb6c0bdde47",
"transformed": true
},
{
"source_relative_path": "collectors/jd_data_collector.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runtime/collectors/jd_data_collector.py",
"category": "source",
"source_sha256": "6f00ae3b2b74e08d3c34c3b911ea819dfa4c6ce55bceef282afb3b2f565aa3ec",
"target_sha256": "1825f123b3c1604340bd95a79cad31cbaba23834d50dae69ce5b68068a5b055e",
"transformed": true
},
{
"source_relative_path": "collectors/jd_peer_store_data_collector.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runtime/collectors/jd_peer_store_data_collector.py",
"category": "source",
"source_sha256": "4ebdb52df7b384d2bfdd2fc840d55d14e18864002c20a36685b63cee1966cf4c",
"target_sha256": "23f445aae6bcf41193db5286ce1a519d50b93e20a55f27f6df58315aafb30a08",
"transformed": true
},
{
"source_relative_path": "collectors/taobao_sycm.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runtime/collectors/taobao_sycm.py",
"category": "source",
"source_sha256": "6978333bd60c1946e3dd8eeced1d0589461c4a26377511da7875f60bd0e31739",
"target_sha256": "6042dc251c0dbff92ca9eb8ed0a4db4322db5810e43fadf1cae79219067496fd",
"transformed": true
},
{
"source_relative_path": "config.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runtime/config.py",
"category": "source",
"source_sha256": "2cfa101ed07643ad822f176e4b21bb72bf7ff32e3945837082811ea792a9e21b",
"target_sha256": "d9a8e32513071dacc8fd303901a3f665336d49e5dd8afe2ba3a0bc8f9dc19985",
"transformed": true
},
{
"source_relative_path": "db/__init__.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runtime/db/__init__.py",
"category": "source",
"source_sha256": "e75ec31954ddf3c6a84e5915a6ff662027d097fdf7fba91aa5c84d048b8e960c",
"target_sha256": "e75ec31954ddf3c6a84e5915a6ff662027d097fdf7fba91aa5c84d048b8e960c",
"transformed": false
},
{
"source_relative_path": "db/db.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runtime/db/db.py",
"category": "source",
"source_sha256": "bf600de53e60be0492426b6ffade60f75474d885263963b12b1bc4a42c03e216",
"target_sha256": "567df11eac1462111594668d66e1210fe1d1808f0f77250e557ad1cf5b66af44",
"transformed": true
},
{
"source_relative_path": "db/schema.sql",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runtime/db/schema.sql",
"category": "sql",
"source_sha256": "5c3b90a70af4aa9e69039be8f3ec79a136ab5892e5d1ff31fc8a20d735a5dfe5",
"target_sha256": "5c3b90a70af4aa9e69039be8f3ec79a136ab5892e5d1ff31fc8a20d735a5dfe5",
"transformed": false
},
{
"source_relative_path": "lark_cli.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runtime/lark_cli.py",
"category": "source",
"source_sha256": "434394c2864b44e612a34b16c242df2a5f89dbfb298505b22f2133af925d0233",
"target_sha256": "dd2c06c0e491f310e563b6203b078f41fd1cf1427b946332a2735df522cf13d1",
"transformed": true
},
{
"source_relative_path": "pyproject.toml",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runtime/dependencies.toml",
"category": "dependency",
"source_sha256": "002035ffb503798d48241f962216c5baa460de4ee8a1d7d696a3d6ba6afb2975",
"target_sha256": "002035ffb503798d48241f962216c5baa460de4ee8a1d7d696a3d6ba6afb2975",
"transformed": false
},
{
"source_relative_path": "runners/__init__.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runtime/runners/__init__.py",
"category": "source",
"source_sha256": "79b41ece107032dcaa3a7b07df8454673fae8d09f763052ec12c81e3be5126d0",
"target_sha256": "79b41ece107032dcaa3a7b07df8454673fae8d09f763052ec12c81e3be5126d0",
"transformed": false
},
{
"source_relative_path": "runners/run_peer_store.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runtime/runners/run_peer_store.py",
"category": "launcher",
"source_sha256": "363a04b516dd6b011f07bf34feb480ccd0f1da46cb7d9512653ea7d5f4f7a3a4",
"target_sha256": "5db5365ba1a69ec325cc9e5b90aa77609045df84d5b3b8956e1718faaf30be55",
"transformed": true
},
{
"source_relative_path": "runners/run_shop.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runtime/runners/run_shop.py",
"category": "launcher",
"source_sha256": "5c5a37fb230f531e55563e75b7cf361a3cba190707f01f516e244ac643c73027",
"target_sha256": "f12d29bd72533780270393eae855412b87f716f2540b05fed82da097821d20cb",
"transformed": true
},
{
"source_relative_path": "runners/utils.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runtime/runners/utils.py",
"category": "source",
"source_sha256": "3bdf504593634d467524d06322d7f0ca20ab7bdf8c115573c154b8f5559c1cad",
"target_sha256": "43340178902f3531d3d68ae3dc51b2dc8117003b43c6172f32a53f04b3f6f2cb",
"transformed": true
},
{
"source_relative_path": "scripts/remove_scheduler.ps1",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runtime/scripts/remove_scheduler.ps1",
"category": "launcher",
"source_sha256": "0532c87a6de5f7f7f65796b8c2077126091cda7d4f065c6015624599b6df1ee6",
"target_sha256": "c376ac34da5aa777634ccea5a5d2e5718c69309b17a0219cac5c19a3c6d46ca4",
"transformed": true
},
{
"source_relative_path": "scripts/setup_scheduler.ps1",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runtime/scripts/setup_scheduler.ps1",
"category": "launcher",
"source_sha256": "8ff5418b494886ceb76acb9c8dcbccf85183f1e85fb18426c0053802ae5eb26b",
"target_sha256": "88915b6d75c62c61d13bc39d7fb959ea4b308068b9edab08db43c5c18f295f69",
"transformed": true
},
{
"source_relative_path": "writers/__init__.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runtime/writers/__init__.py",
"category": "source",
"source_sha256": "d830cb8dd53601d06abb9481c907472bcefcadb8b65ceb0356f5baf037c3af10",
"target_sha256": "d830cb8dd53601d06abb9481c907472bcefcadb8b65ceb0356f5baf037c3af10",
"transformed": false
},
{
"source_relative_path": "writers/peer_store_writer.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runtime/writers/peer_store_writer.py",
"category": "source",
"source_sha256": "71bf69c423bf3dd1f3d68d4e33f7024fbe0e446567d2cc3b25ec0cb71f59ab7e",
"target_sha256": "075b2862d486f43a406a3be58439813b60f3354ebba244f4d0be25a82ff618d7",
"transformed": true
},
{
"source_relative_path": "writers/shop_base_writer.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runtime/writers/shop_base_writer.py",
"category": "source",
"source_sha256": "01aa18955a0ec92f4fb745df916e5b7f1c69646c8a194e29bc0042120f59c722",
"target_sha256": "3ec3d71af95e7d50fa77d7ec684f1e86634eea0eed6be6b5728fe19a3f04ce0d",
"transformed": true
}
],
"entrypoints": [
{
"source_relative_path": "runners/run_shop.py",
"target_relative_path": "runners/run_shop.py",
"classification": "scheduled",
"workflows": [
"shop.metrics.weekly"
]
},
{
"source_relative_path": "runners/run_peer_store.py",
"target_relative_path": "runners/run_peer_store.py",
"classification": "scheduled",
"workflows": [
"shop.competitor.weekly"
]
},
{
"source_relative_path": "collectors/jd_data_collector.py",
"target_relative_path": "collectors/jd_data_collector.py",
"classification": "internal",
"workflows": [
"shop.metrics.weekly"
]
},
{
"source_relative_path": "collectors/jd_peer_store_data_collector.py",
"target_relative_path": "collectors/jd_peer_store_data_collector.py",
"classification": "internal",
"workflows": [
"shop.competitor.weekly"
]
},
{
"source_relative_path": "collectors/dy_store_competitor_store_scraping.py",
"target_relative_path": "collectors/dy_store_competitor_store_scraping.py",
"classification": "internal",
"workflows": [
"shop.metrics.weekly",
"shop.competitor.weekly"
]
},
{
"source_relative_path": "collectors/taobao_sycm.py",
"target_relative_path": "collectors/taobao_sycm.py",
"classification": "internal",
"workflows": [
"shop.metrics.weekly"
]
},
{
"source_relative_path": "scripts/setup_scheduler.ps1",
"target_relative_path": "scripts/setup_scheduler.ps1",
"classification": "maintenance",
"workflows": [
]
},
{
"source_relative_path": "scripts/remove_scheduler.ps1",
"target_relative_path": "scripts/remove_scheduler.ps1",
"classification": "maintenance",
"workflows": [
]
}
],
"intentionally_excluded": [
{
"pattern": ".git/**",
"reason": "runtime, generated, sensitive, or non-business material is not copied into module source"
},
{
"pattern": ".venv/**",
"reason": "runtime, generated, sensitive, or non-business material is not copied into module source"
},
{
"pattern": "**/__pycache__/**",
"reason": "runtime, generated, sensitive, or non-business material is not copied into module source"
},
{
"pattern": ".env",
"reason": "runtime, generated, sensitive, or non-business material is not copied into module source"
},
{
"pattern": "**/*cookies*",
"reason": "runtime, generated, sensitive, or non-business material is not copied into module source"
},
{
"pattern": "**/*profile*/**",
"reason": "runtime, generated, sensitive, or non-business material is not copied into module source"
},
{
"pattern": "**/data/**",
"reason": "runtime, generated, sensitive, or non-business material is not copied into module source"
},
{
"pattern": "**/logs/**",
"reason": "runtime, generated, sensitive, or non-business material is not copied into module source"
},
{
"pattern": "debug/**",
"reason": "runtime, generated, sensitive, or non-business material is not copied into module source"
},
{
"pattern": "uv.lock",
"reason": "runtime, generated, sensitive, or non-business material is not copied into module source"
},
{
"pattern": "README.md",
"reason": "runtime, generated, sensitive, or non-business material is not copied into module source"
},
{
"pattern": "CLAUDE.md",
"reason": "runtime, generated, sensitive, or non-business material is not copied into module source"
},
{
"pattern": "AGENTS.md",
"reason": "runtime, generated, sensitive, or non-business material is not copied into module source"
}
],
"snapshot": "current-filesystem"
"schema_version": 1,
"module": "shop_intelligence",
"source_project": "shop-data-flow",
"files": [
{
"source_relative_path": ".env.example",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/config.example.env",
"category": "config",
"source_sha256": "d0a005429c4363020681076afe4ec389712bd86b041271b8e9d52b977d79bfc1",
"target_sha256": "2d5c9bd6f7749bee87c3716c0d934883f0dcc3548ccf0df75441911b882a98ad",
"transformed": true
},
{
"source_relative_path": "adaptive_selectors.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/adaptive_selectors.py",
"category": "source",
"source_sha256": "7f60d6eedf0b9bf4aad0087305a86814dc9e2691128cce4010f9b3deff403bae",
"target_sha256": "3417782d86c96939ca7fc682c8d9e85a8f4b156f25df802f16a168a3fbe421e6",
"transformed": true
},
{
"source_relative_path": "collectors/__init__.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/collectors/__init__.py",
"category": "source",
"source_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"target_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"transformed": false
},
{
"source_relative_path": "collectors/dy_store_competitor_store_scraping.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/collectors/dy_store_competitor_store_scraping.py",
"category": "source",
"source_sha256": "009879a7dd341ca6ecbc8eb66f5700114c73bcaba3a53f159014a76232d0aa6b",
"target_sha256": "e0b9664ad71c5c44132a730ccb274e30e6749229e912c5df816105aa7905405b",
"transformed": true
},
{
"source_relative_path": "collectors/jd_data_collector.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/collectors/jd_data_collector.py",
"category": "source",
"source_sha256": "6f00ae3b2b74e08d3c34c3b911ea819dfa4c6ce55bceef282afb3b2f565aa3ec",
"target_sha256": "caaef9f448c1fd803ee7aac5149d5ddf49890fc793c1d4d6e1ef58f8404e0be9",
"transformed": true
},
{
"source_relative_path": "collectors/jd_peer_store_data_collector.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/collectors/jd_peer_store_data_collector.py",
"category": "source",
"source_sha256": "4ebdb52df7b384d2bfdd2fc840d55d14e18864002c20a36685b63cee1966cf4c",
"target_sha256": "d0a75b08ca50b746dd28b609d15d769b1137a8f6aba575a253a0fc3988bbf34b",
"transformed": true
},
{
"source_relative_path": "collectors/jd_self_operated_brand_daily.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/collectors/jd_self_operated_brand_daily.py",
"category": "source",
"source_sha256": "f03e6e6a65faa1cbafae57b641fe2efec9aae8ba685afd1c0cf63680adf7588e",
"target_sha256": "9190b09f739461fa7d231391754ba4373093ec8dede9df77ae06d866306da1a6",
"transformed": true
},
{
"source_relative_path": "collectors/jd_self_operated_product_daily.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/collectors/jd_self_operated_product_daily.py",
"category": "source",
"source_sha256": "92f5c8619eede17c25bad8482b8821ff7a7dac3ff649e4a02d69c21f8dc89de1",
"target_sha256": "8c28a8684bf8812f87e8ca7764fed3d6b026cf107d69dbac6507e0fb4630f54d",
"transformed": true
},
{
"source_relative_path": "collectors/taobao_sycm.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/collectors/taobao_sycm.py",
"category": "source",
"source_sha256": "6978333bd60c1946e3dd8eeced1d0589461c4a26377511da7875f60bd0e31739",
"target_sha256": "b832f7421f0782401850c3bf6d6c7c1c827af10230c7c4b0b12db303edac3d61",
"transformed": true
},
{
"source_relative_path": "config.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/config.py",
"category": "source",
"source_sha256": "2cfa101ed07643ad822f176e4b21bb72bf7ff32e3945837082811ea792a9e21b",
"target_sha256": "0e8819fc9ec12fabbe91b25f51db895ca95f4a725b69bde0d6b807da5b8d4416",
"transformed": true
},
{
"source_relative_path": "db/__init__.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/db/__init__.py",
"category": "source",
"source_sha256": "ffc89b78ff0081a129e04eb6de4985ab0a2a4613c9e8a1d8b2750d8c17e8bc05",
"target_sha256": "ffc89b78ff0081a129e04eb6de4985ab0a2a4613c9e8a1d8b2750d8c17e8bc05",
"transformed": false
},
{
"source_relative_path": "db/db.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/db/db.py",
"category": "source",
"source_sha256": "168b6f87c1827b267f763ddce7eb15d0c8d652c8c0c7af18dcd0c6c7da5cddd1",
"target_sha256": "b8f15975605e2d9b75d25ac09a67768d4583401c1365288de078a97d0d3f3abf",
"transformed": true
},
{
"source_relative_path": "db/schema.sql",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/db/schema.sql",
"category": "sql",
"source_sha256": "73230590bde7ae6359c02c82c2db096c0d3faa55b374e30348c47d7b40ea498b",
"target_sha256": "a0aa2a22c8fdbb1f748dc7b206fe06a43f10899ca7036e433cdd91d7a1f5cba9",
"transformed": true
},
{
"source_relative_path": "lark_cli.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/lark_cli.py",
"category": "source",
"source_sha256": "434394c2864b44e612a34b16c242df2a5f89dbfb298505b22f2133af925d0233",
"target_sha256": "1b227902a8ebe05ada4f0bda7c2b69bdfd639a4f5b339c949df0b656c11e6144",
"transformed": true
},
{
"source_relative_path": "pyproject.toml",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/dependencies.toml",
"category": "dependency",
"source_sha256": "002035ffb503798d48241f962216c5baa460de4ee8a1d7d696a3d6ba6afb2975",
"target_sha256": "002035ffb503798d48241f962216c5baa460de4ee8a1d7d696a3d6ba6afb2975",
"transformed": false
},
{
"source_relative_path": "tests/test_jd_self_operated_brand_daily.py",
"target_relative_path": "tests/modules/shop_intelligence/test_jd_self_operated_brand_daily.py",
"category": "test",
"source_sha256": "71186dd318bd582648b43b72641b91c540c1e6908b28f2b9591f70c3590f22e8",
"target_sha256": "8dddfb16c48556b00f59b00477407e7d289e5f893ecff60255b04829b18a4fb5",
"transformed": true
},
{
"source_relative_path": "tests/test_jd_self_operated_product_daily.py",
"target_relative_path": "tests/modules/shop_intelligence/test_jd_self_operated_product_daily.py",
"category": "test",
"source_sha256": "2b8d404951bea91438dc7fa85ad525bf0235cd758de14c35cc17f0a3f6c4b06b",
"target_sha256": "21667a07f324da3755d70c67cba4b2d50f922614bee41464a52ae154aff56fc2",
"transformed": true
},
{
"source_relative_path": "tests/test_run_jd_self_operated_daily.py",
"target_relative_path": "tests/modules/shop_intelligence/test_run_jd_self_operated_daily.py",
"category": "test",
"source_sha256": "8883b9f6cf6313dd49422a1329307288a240dee6018ed40c71683969b565885e",
"target_sha256": "1fafc65993c4c0b853f60ae0bad2ca53d2b396a7c7a1b602be7830ec2a5ba5f5",
"transformed": true
},
{
"source_relative_path": "runners/__init__.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runners/__init__.py",
"category": "source",
"source_sha256": "79b41ece107032dcaa3a7b07df8454673fae8d09f763052ec12c81e3be5126d0",
"target_sha256": "79b41ece107032dcaa3a7b07df8454673fae8d09f763052ec12c81e3be5126d0",
"transformed": false
},
{
"source_relative_path": "runners/run_peer_store.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runners/run_peer_store.py",
"category": "launcher",
"source_sha256": "363a04b516dd6b011f07bf34feb480ccd0f1da46cb7d9512653ea7d5f4f7a3a4",
"target_sha256": "a603b281f5db5c43bc022c47f7dd3c8a381a33980f6974c5c30aac5c06431917",
"transformed": true
},
{
"source_relative_path": "runners/run_jd_self_operated_daily.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runners/run_jd_self_operated_daily.py",
"category": "launcher",
"source_sha256": "b0bad4bcb45f9566d004358796c9588d3e1f0714f5a9b523fae1d44a94b1745e",
"target_sha256": "a26baf610b91d86684366db5809ca031b737663b765fd8672b0addbf4a58a67d",
"transformed": true
},
{
"source_relative_path": "runners/run_shop.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runners/run_shop.py",
"category": "launcher",
"source_sha256": "7c5f50e44613fa4271d6b3d8dbc28d43c884a06a6a2cd04299f7155a9dc572e3",
"target_sha256": "94e0024de5f92a7e72d864f52f30474ca193feff93a370dcbb6d8a346590386e",
"transformed": true
},
{
"source_relative_path": "runners/utils.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/runners/utils.py",
"category": "source",
"source_sha256": "3bdf504593634d467524d06322d7f0ca20ab7bdf8c115573c154b8f5559c1cad",
"target_sha256": "d3b8d86770401b12fbfc8855763e765c5599b97eddb6cd65ea49fe7b34ce2ce4",
"transformed": true
},
{
"source_relative_path": "writers/__init__.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/writers/__init__.py",
"category": "source",
"source_sha256": "d830cb8dd53601d06abb9481c907472bcefcadb8b65ceb0356f5baf037c3af10",
"target_sha256": "d830cb8dd53601d06abb9481c907472bcefcadb8b65ceb0356f5baf037c3af10",
"transformed": false
},
{
"source_relative_path": "writers/peer_store_writer.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/writers/peer_store_writer.py",
"category": "source",
"source_sha256": "71bf69c423bf3dd1f3d68d4e33f7024fbe0e446567d2cc3b25ec0cb71f59ab7e",
"target_sha256": "56b2d41af0b5ac19e189b5445b765776efdacea8c963bf0013ad377c399cc569",
"transformed": true
},
{
"source_relative_path": "writers/shop_base_writer.py",
"target_relative_path": "src/gyxx_flow/modules/shop_intelligence/writers/shop_base_writer.py",
"category": "source",
"source_sha256": "f16f6dcb1ca028ca4ec1fe70d77127459656b4f9f6fc982c30bc426ad09ca3f5",
"target_sha256": "3bcd1dc039b25370d27cdbefa697a47349707ab94ff5e999c5ab25fa74168421",
"transformed": true
}
],
"entrypoints": [
{
"source_relative_path": "runners/run_shop.py",
"target_relative_path": "runners/run_shop.py",
"classification": "scheduled",
"workflows": [
"shop.metrics.weekly"
]
},
{
"source_relative_path": "runners/run_peer_store.py",
"target_relative_path": "runners/run_peer_store.py",
"classification": "scheduled",
"workflows": [
"shop.competitor.weekly"
]
},
{
"source_relative_path": "collectors/jd_data_collector.py",
"target_relative_path": "collectors/jd_data_collector.py",
"classification": "internal",
"workflows": [
"shop.metrics.weekly"
]
},
{
"source_relative_path": "collectors/jd_peer_store_data_collector.py",
"target_relative_path": "collectors/jd_peer_store_data_collector.py",
"classification": "internal",
"workflows": [
"shop.competitor.weekly"
]
},
{
"source_relative_path": "collectors/dy_store_competitor_store_scraping.py",
"target_relative_path": "collectors/dy_store_competitor_store_scraping.py",
"classification": "internal",
"workflows": [
"shop.metrics.weekly",
"shop.competitor.weekly",
"shop.douyin_price_appeal"
],
"commands": [
"shop.douyin_price_appeal"
]
},
{
"source_relative_path": "collectors/taobao_sycm.py",
"target_relative_path": "collectors/taobao_sycm.py",
"classification": "internal",
"workflows": [
"shop.metrics.weekly"
]
},
{
"source_relative_path": "collectors/jd_self_operated_brand_daily.py",
"target_relative_path": "collectors/jd_self_operated_brand_daily.py",
"classification": "manual",
"workflows": [
"shop.jd_self_operated.daily"
],
"commands": [
"shop.jd_self_operated.collect_brand"
]
},
{
"source_relative_path": "runners/run_jd_self_operated_daily.py",
"target_relative_path": "runners/run_jd_self_operated_daily.py",
"classification": "scheduled",
"workflows": [
"shop.jd_self_operated.daily"
]
},
{
"source_relative_path": "collectors/jd_self_operated_product_daily.py",
"target_relative_path": "collectors/jd_self_operated_product_daily.py",
"classification": "internal",
"workflows": [
"shop.jd_self_operated.daily"
]
}
],
"intentionally_excluded": [
{
"pattern": "scripts/setup_scheduler.ps1",
"reason": "historical Windows scheduler setup is archived under docs/history and is not production source"
},
{
"pattern": "scripts/remove_scheduler.ps1",
"reason": "historical Windows scheduler removal is archived under docs/history and is not production source"
},
{
"pattern": ".gitignore",
"reason": "source-project ignore rules are not module runtime source"
},
{
"pattern": ".learnings/**",
"reason": "local learning state is not runtime source"
},
{
"pattern": "docs/**",
"reason": "historical design and review documents are not runtime dependencies"
},
{
"pattern": "**/*storage_state*",
"reason": "browser storage state is sensitive mutable runtime data"
},
{
"pattern": ".git/**",
"reason": "runtime, generated, sensitive, or non-business material is not copied into module source"
},
{
"pattern": ".venv/**",
"reason": "runtime, generated, sensitive, or non-business material is not copied into module source"
},
{
"pattern": "**/__pycache__/**",
"reason": "runtime, generated, sensitive, or non-business material is not copied into module source"
},
{
"pattern": ".env",
"reason": "runtime, generated, sensitive, or non-business material is not copied into module source"
},
{
"pattern": "**/*cookies*",
"reason": "runtime, generated, sensitive, or non-business material is not copied into module source"
},
{
"pattern": "**/*profile*/**",
"reason": "runtime, generated, sensitive, or non-business material is not copied into module source"
},
{
"pattern": "**/data/**",
"reason": "runtime, generated, sensitive, or non-business material is not copied into module source"
},
{
"pattern": "**/logs/**",
"reason": "runtime, generated, sensitive, or non-business material is not copied into module source"
},
{
"pattern": "debug/**",
"reason": "runtime, generated, sensitive, or non-business material is not copied into module source"
},
{
"pattern": "uv.lock",
"reason": "runtime, generated, sensitive, or non-business material is not copied into module source"
},
{
"pattern": "README.md",
"reason": "runtime, generated, sensitive, or non-business material is not copied into module source"
},
{
"pattern": "CLAUDE.md",
"reason": "runtime, generated, sensitive, or non-business material is not copied into module source"
},
{
"pattern": "AGENTS.md",
"reason": "runtime, generated, sensitive, or non-business material is not copied into module source"
}
],
"snapshot": "current-filesystem"
}
File diff suppressed because it is too large Load Diff
+33
View File
@@ -0,0 +1,33 @@
{
"schema_version": 1,
"projects": [
{
"module": "content_marketing",
"source_project": "yingxiaoyunying",
"manifest": "config/source-manifests/content_marketing.json",
"root_env": "GYXX_SOURCE_CONTENT_MARKETING_ROOT",
"target_root": "src/gyxx_flow/modules/content_marketing"
},
{
"module": "product_commerce",
"source_project": "product-collector-analyze-flow",
"manifest": "config/source-manifests/product_commerce.json",
"root_env": "GYXX_SOURCE_PRODUCT_COMMERCE_ROOT",
"target_root": "src/gyxx_flow/modules/product_commerce"
},
{
"module": "shop_intelligence",
"source_project": "shop-data-flow",
"manifest": "config/source-manifests/shop_intelligence.json",
"root_env": "GYXX_SOURCE_SHOP_INTELLIGENCE_ROOT",
"target_root": "src/gyxx_flow/modules/shop_intelligence"
},
{
"module": "supply_chain",
"source_project": "auto-flow",
"manifest": "config/source-manifests/supply_chain.json",
"root_env": "GYXX_SOURCE_SUPPLY_CHAIN_ROOT",
"target_root": "src/gyxx_flow/modules/supply_chain"
}
]
}
+24 -31
View File
@@ -1,38 +1,31 @@
{
"schema_version": 2,
"schema_version": 3,
"workflows": [
{"id":"content.metrics.daily","module":"content_marketing","trigger":"scheduled","execution":{"entry":"data/tools/daily_run.bat"},"provenance":{"source_project":"content","task_name":"YingxiaoYunying_DailyRun"}},
{"id":"content.marketing_report.daily","module":"content_marketing","trigger":"scheduled","execution":{"entry":"data/tools/daily_marketing_report.bat"},"provenance":{"source_project":"content","task_name":"YingxiaoYunying_DailyMarketingReport"}},
{"id":"content.relogin.weekly","module":"content_marketing","trigger":"scheduled","execution":{"entry":"data/tools/friday_relogin.bat"},"provenance":{"source_project":"content","task_name":"YingxiaoYunying_FridayRelogin"}},
{"id":"content.self_operated.weekly","module":"content_marketing","trigger":"scheduled","execution":{"entry":"data/tools/monday_self_run.bat"},"provenance":{"source_project":"content","task_name":"YingxiaoYunying_MondaySelf"}},
{"id":"content.creator_report.monthly","module":"content_marketing","trigger":"scheduled","execution":{"entry":"data/tools/monthly_creator_report.bat"},"provenance":{"source_project":"content","task_name":"YingxiaoYunying_MonthlyCreatorReport"}},
{"id":"content.summary.monthly","module":"content_marketing","trigger":"scheduled","execution":{"entry":"data/tools/monthly_summary.bat"},"provenance":{"source_project":"content","task_name":"YingxiaoYunying_MonthlySummary"}},
{"id":"content.cooperations.daily","module":"content_marketing","trigger":"scheduled","execution":{"entry":"data/tools/sync_cooperations.bat"},"provenance":{"source_project":"content","task_name":"YingxiaoYunying_SyncCooperations"}},
{"id":"content.comments.weekly","module":"content_marketing","trigger":"scheduled","execution":{"entry":"data/tools/weekly_comment_scrape.bat"},"provenance":{"source_project":"content","task_name":"YingxiaoYunying_WeeklyCommentScrape"}},
{"id":"content.summary.weekly","module":"content_marketing","trigger":"scheduled","execution":{"entry":"data/tools/weekly_summary.bat"},"provenance":{"source_project":"content","task_name":"YingxiaoYunying_WeeklySummary"}},
{"id":"content.metrics.daily","module":"content_marketing","trigger":"scheduled","execution":{"steps":[{"id":"collect_collaborators","name":"采集合作达人指标","description":"按每日范围并行抓取合作达人在 B站、小红书蒲公英和抖音星图的曝光等指标,生成各平台采集结果。","data_flow":{"sources":[{"system":"飞书","label":"合作达人及内容清单"},{"system":"内容平台","label":"B站、小红书蒲公英与抖音星图指标"}],"processing":["按业务日期拆分平台采集任务","并行抓取合作内容曝光与互动指标"],"destinations":[{"system":"本地采集产物","label":"合作达人多平台指标结果"}]},"entry":"run_all.py","args":["--daily-scope"]},{"id":"refresh_self_mapping","name":"刷新自营款式映射","description":"从飞书索引刷新自营账号、款式与多维表映射,供后续自营采集准确定位目标记录。","data_flow":{"sources":[{"system":"飞书","label":"内容索引、账号与款式配置"}],"processing":["刷新自营账号、款式和多维表对应关系"],"destinations":[{"system":"本地映射","label":"自营账号、款式与目标表索引"}]},"entry":"data/tools/refresh_self_mapping.py","depends_on":["collect_collaborators"],"run_after_failure":true},{"id":"collect_self_bilibili","name":"采集自营 B站指标","description":"读取自营映射中的 B站笔记链接,通过公开 API 获取播放量和发布时间并回填对应飞书表。","data_flow":{"sources":[{"system":"本地映射","label":"自营 B站笔记链接"},{"system":"B站公开 API","label":"播放量与发布时间"}],"processing":["按映射定位自营笔记并读取公开指标"],"destinations":[{"system":"飞书","label":"自营 B站内容指标表"},{"system":"本地采集产物","label":"B站自营指标结果"}]},"entry":"self_bilibili_scraper.py","depends_on":["refresh_self_mapping"],"run_after_failure":true},{"id":"collect_self_douyin","name":"采集自营抖音指标","description":"使用蝉妈妈登录态导出自营抖音视频数据,解析曝光指标并回填飞书自营表。","data_flow":{"sources":[{"system":"本地映射","label":"自营抖音账号与款式"},{"system":"蝉妈妈","label":"已登录的抖音视频导出数据"}],"processing":["导出自营视频数据并解析曝光指标"],"destinations":[{"system":"飞书","label":"自营抖音内容指标表"},{"system":"本地采集产物","label":"抖音自营指标结果"}]},"entry":"chanmama_scraper.py","depends_on":["collect_self_bilibili"],"run_after_failure":true},{"id":"sync","name":"同步曝光指标入库","description":"汇总本轮合作与自营曝光结果,按记录映射更新或补建 PostgreSQL 内容笔记数据。","data_flow":{"sources":[{"system":"本轮采集产物","label":"合作达人及自营内容指标"},{"system":"本地映射","label":"内容记录对应关系"}],"processing":["合并各平台指标并匹配内容记录","更新已有记录或补建缺失记录"],"destinations":[{"system":"PostgreSQL","label":"内容笔记与曝光指标"}]},"entry":"data/tools/sync_metrics_to_cmt_notes.py","depends_on":["collect_self_douyin"],"run_after_failure":true}]},"provenance":{"source_project":"content","task_name":"YingxiaoYunying_DailyRun"},"note":"每日先采集合作达人,再通过专有自营映射、B站和蝉妈妈脚本采集自营笔记;各阶段保留批处理继续执行语义,最终任一步失败则工作流失败。"},
{"id":"content.marketing_report.daily","module":"content_marketing","trigger":"scheduled","execution":{"steps":[{"id":"generate_and_send","name":"生成并发送营销日报","description":"聚合各款式内容与评论分析,生成一页全域种草日报并发送给飞书负责人。","data_flow":{"sources":[{"system":"PostgreSQL","label":"内容、经营、评论与达人数据","detail":"款式指标、笔记、评论、合作和画像等"},{"system":"飞书","label":"款式、负责人及素材配置"}],"processing":["聚合业务事实与款式表现","调用 Hermes 生成营销分析","生成图表和 Markdown 日报"],"destinations":[{"system":"本地报告","label":"Markdown 日报与 PNG 数据看板"},{"system":"飞书","label":"负责人日报卡片","condition":"正式执行且启用 --send"}]},"entry":"daily_marketing_report.py","args":["--send"]}]},"provenance":{"source_project":"content","task_name":"YingxiaoYunying_DailyMarketingReport"}},
{"id":"content.relogin.weekly","module":"content_marketing","trigger":"scheduled","execution":{"steps":[{"id":"relogin","name":"刷新内容平台登录态","description":"并行启动五个平台的二维码重新登录流程,按配置轮次重试,持久化登录状态并通知结果。","data_flow":{"sources":[{"system":"内容平台","label":"五个平台登录页与当前会话状态"}],"processing":["并行发起二维码登录并按轮次重试","校验并持久化新的登录会话"],"destinations":[{"system":"浏览器状态","label":"各平台 Cookie 与 storage state"},{"system":"飞书","label":"登录刷新结果通知"}]},"entry":"data/tools/friday_relogin_parallel.py","args":["--max-attempts","3","--round-timeout","300","--screenshot-delay","60"]}]},"provenance":{"source_project":"content","task_name":"YingxiaoYunying_FridayRelogin"}},
{"id":"content.creator_report.monthly","module":"content_marketing","trigger":"scheduled","execution":{"steps":[{"id":"generate","name":"生成达人合作月报","description":"从 PostgreSQL 读取达人、款式和合作数据,生成完整的报价与合作分析报告。","data_flow":{"sources":[{"system":"PostgreSQL","label":"达人、款式、合作与内容表现数据"}],"processing":["统计达人报价、合作和内容效果","生成月度筛选与报价分析"],"destinations":[{"system":"本地报告","label":"达人合作月报 Markdown"},{"system":"飞书文档","label":"达人合作分析报告"},{"system":"PostgreSQL","label":"月报记录与报告链接"}]},"entry":"data/tools/generate_creator_report.py"}]},"provenance":{"source_project":"content","task_name":"YingxiaoYunying_MonthlyCreatorReport"}},
{"id":"content.summary.monthly","module":"content_marketing","trigger":"scheduled","execution":{"steps":[{"id":"summarize","name":"生成内容月度汇总","description":"分析上月各款全部笔记并做跨平台横向对比,生成飞书文档、回写生命进程表并入库。","data_flow":{"sources":[{"system":"PostgreSQL","label":"上月各款内容、互动与评论数据"},{"system":"飞书","label":"款式与生命进程配置"}],"processing":["按款式分析全部笔记","完成跨平台对比与月度总结"],"destinations":[{"system":"飞书文档","label":"内容月度报告"},{"system":"飞书","label":"款式生命进程表"},{"system":"PostgreSQL","label":"月度汇总结果"}]},"entry":"monthly_summary_all.py","args":["--max-workers","4"]}]},"provenance":{"source_project":"content","task_name":"YingxiaoYunying_MonthlySummary"}},
{"id":"content.cooperations.daily","module":"content_marketing","trigger":"scheduled","execution":{"steps":[{"id":"sync","name":"同步达人合作记录","description":"遍历飞书款式合作表,幂等写入或更新 PostgreSQL 中的达人属性和合作记录。","data_flow":{"sources":[{"system":"飞书","label":"各款式达人合作表"}],"processing":["刷新款式映射并规范化达人合作字段","按业务主键幂等新增或更新"],"destinations":[{"system":"PostgreSQL","label":"达人档案与合作记录"}]},"entry":"data/tools/sync_cooperations.py","args":["--refresh-mapping"]}]},"provenance":{"source_project":"content","task_name":"YingxiaoYunying_SyncCooperations"}},
{"id":"content.comments.weekly","module":"content_marketing","trigger":"scheduled","execution":{"steps":[{"id":"bilibili","name":"重采 B站评论","description":"从数据库读取 B站视频,重新采集互动指标和评论,替换评论表数据并保存本地产物。","data_flow":{"sources":[{"system":"PostgreSQL","label":"B站视频清单"},{"system":"B站","label":"视频互动指标与评论"}],"processing":["逐条重新采集视频互动和评论"],"destinations":[{"system":"PostgreSQL","label":"B站评论与互动指标"},{"system":"本地采集产物","label":"B站评论结果"}]},"entry":"data/tools/batch_rescrape_bilibili.py"},{"id":"xiaohongshu","name":"重采小红书评论","description":"从数据库读取小红书笔记,重新采集互动指标和评论,替换评论表数据并保存本地产物。","data_flow":{"sources":[{"system":"PostgreSQL","label":"小红书笔记清单"},{"system":"小红书","label":"笔记互动指标与评论"}],"processing":["逐条重新采集笔记互动和评论"],"destinations":[{"system":"PostgreSQL","label":"小红书评论与互动指标"},{"system":"本地采集产物","label":"小红书评论结果"}]},"entry":"data/tools/batch_rescrape_xiaohongshu.py"},{"id":"douyin","name":"重采抖音评论","description":"从数据库读取抖音视频,重新采集互动指标和评论,替换评论表数据并保存本地产物。","data_flow":{"sources":[{"system":"PostgreSQL","label":"抖音视频清单"},{"system":"抖音","label":"视频互动指标与评论"}],"processing":["逐条重新采集视频互动和评论"],"destinations":[{"system":"PostgreSQL","label":"抖音评论与互动指标"},{"system":"本地采集产物","label":"抖音评论结果"}]},"entry":"data/tools/batch_rescrape_douyin.py"}]},"provenance":{"source_project":"content","task_name":"YingxiaoYunying_WeeklyCommentScrape"},"note":"保留来源批处理语义:三平台并行启动、全部等待,任一平台失败则工作流最终失败。"},
{"id":"content.summary.weekly","module":"content_marketing","trigger":"scheduled","execution":{"steps":[{"id":"summarize","name":"生成内容周度汇总","description":"分析上周各款新增笔记,调用模型生成综合评级,创建飞书周报并回写生命进程表。","data_flow":{"sources":[{"system":"PostgreSQL","label":"上周各款新增笔记与互动数据"},{"system":"飞书","label":"款式与生命进程配置"}],"processing":["按款式汇总新增内容","调用模型生成评级与周度分析"],"destinations":[{"system":"飞书文档","label":"内容周报"},{"system":"飞书","label":"款式生命进程表"},{"system":"PostgreSQL","label":"周度汇总结果"}]},"entry":"weekly_summary_all.py","args":["--max-workers","4"]}]},"provenance":{"source_project":"content","task_name":"YingxiaoYunying_WeeklySummary"}},
{"id":"shop.metrics.weekly","module":"shop_intelligence","trigger":"scheduled","execution":{"entry":"runners/run_shop.py"},"provenance":{"source_project":"shop","task_name":"shop-data-collection"}},
{"id":"shop.competitor.weekly","module":"shop_intelligence","trigger":"scheduled","execution":{"entry":"runners/run_peer_store.py"},"provenance":{"source_project":"shop","task_name":"peer-store-data-collection"}},
{"id":"shop.metrics.weekly","module":"shop_intelligence","trigger":"scheduled","execution":{"steps":[{"id":"jd","name":"采集京东店铺经营指标","description":"独立采集京东店铺经营数据,生成本次产物并写入 PostgreSQL;生产模式写入飞书 Base。","data_flow":{"sources":[{"system":"京东商智","label":"店铺经营指标"}],"processing":["按业务日期采集并规范化京东店铺数据"],"destinations":[{"system":"本地采集产物","label":"京东店铺指标"},{"system":"PostgreSQL","label":"店铺经营指标"},{"system":"飞书 Base","label":"京东店铺周数据","condition":"正式执行"}]},"entry":"runners/run_shop.py","args":["--platform","jd"]},{"id":"dy","name":"采集抖音店铺经营指标","description":"独立采集抖音店铺经营数据,生成本次产物并写入 PostgreSQL;生产模式写入飞书 Base。","data_flow":{"sources":[{"system":"抖音电商罗盘","label":"店铺经营指标"}],"processing":["按业务日期采集并规范化抖音店铺数据"],"destinations":[{"system":"本地采集产物","label":"抖音店铺指标"},{"system":"PostgreSQL","label":"店铺经营指标"},{"system":"飞书 Base","label":"抖音店铺周数据","condition":"正式执行"}]},"entry":"runners/run_shop.py","args":["--platform","dy"]},{"id":"tm","name":"采集天猫店铺经营指标","description":"独立采集天猫店铺经营数据,生成本次产物并写入 PostgreSQL;按原逻辑不写飞书店铺表。","data_flow":{"sources":[{"system":"天猫生意参谋","label":"店铺经营指标"}],"processing":["按业务日期采集并规范化天猫店铺数据"],"destinations":[{"system":"本地采集产物","label":"天猫店铺指标"},{"system":"PostgreSQL","label":"店铺经营指标"}]},"entry":"runners/run_shop.py","args":["--platform","tm"]}]},"provenance":{"source_project":"shop","task_name":"shop-data-collection"},"note":"三个平台作为独立 LangGraph 节点并行执行,分别入库和收敛错误,单个平台失败不阻断其他平台。"},
{"id":"shop.competitor.weekly","module":"shop_intelligence","trigger":"scheduled","execution":{"steps":[{"id":"jd","name":"采集京东竞店经营指标","description":"独立采集京东竞店排行,生成本次产物并写入 PostgreSQL;生产模式写入飞书 Base。","data_flow":{"sources":[{"system":"京东商智","label":"竞店排行与经营指标"}],"processing":["采集目标竞店并规范化排行数据"],"destinations":[{"system":"本地采集产物","label":"京东竞店指标"},{"system":"PostgreSQL","label":"竞店经营指标"},{"system":"飞书 Base","label":"京东竞店周数据","condition":"正式执行"}]},"entry":"runners/run_peer_store.py","args":["--platform","jd"]},{"id":"dy","name":"采集抖音竞店经营指标","description":"独立采集抖音竞店排行,生成本次产物并写入 PostgreSQL;生产模式写入飞书 Base。","data_flow":{"sources":[{"system":"抖音电商罗盘","label":"竞店排行与经营指标"}],"processing":["采集目标竞店并规范化排行数据"],"destinations":[{"system":"本地采集产物","label":"抖音竞店指标"},{"system":"PostgreSQL","label":"竞店经营指标"},{"system":"飞书 Base","label":"抖音竞店周数据","condition":"正式执行"}]},"entry":"runners/run_peer_store.py","args":["--platform","dy"]}]},"provenance":{"source_project":"shop","task_name":"peer-store-data-collection"},"note":"京东和抖音作为独立 LangGraph 节点并行执行,分别入库和收敛错误,单个平台失败不阻断另一个平台;当前无天猫竞店采集任务。"},
{"id":"shop.jd_self_operated.daily","module":"shop_intelligence","trigger":"scheduled","execution":{"steps":[{"id":"brand","name":"采集京东自营品牌业绩","description":"按业务日期采集京东自营品牌维度业绩,保存原始产物并写入 PostgreSQL。","data_flow":{"sources":[{"system":"京东自营后台","label":"品牌维度经营数据"}],"processing":["按业务日期采集并整理品牌业绩"],"destinations":[{"system":"本地原始产物","label":"品牌业绩数据"},{"system":"PostgreSQL","label":"京东自营品牌日指标"}]},"entry":"collectors/jd_self_operated_brand_daily.py","args":["--start-date","{business_date}","--end-date","{business_date}","--headless"],"timeout_seconds":600},{"id":"product","name":"采集京东自营商品业绩","description":"按业务日期逐页采集京东自营商品维度业绩,保存原始产物并写入 PostgreSQL。","data_flow":{"sources":[{"system":"京东自营后台","label":"商品维度经营数据"}],"processing":["逐页采集商品明细并整理日业绩"],"destinations":[{"system":"本地原始产物","label":"商品业绩数据"},{"system":"PostgreSQL","label":"京东自营商品日指标"}]},"entry":"collectors/jd_self_operated_product_daily.py","args":["--start-date","{business_date}","--end-date","{business_date}","--headless"],"depends_on":["brand"],"run_after_failure":true,"timeout_seconds":1800}]},"provenance":{"source_project":"shop","task_name":"京东自营昨日业绩每日采集"},"note":"每天采集计划日期前一天;品牌失败仍继续商品,任一步失败则工作流失败。"},
{"id":"shop.douyin_price_appeal","module":"shop_intelligence","trigger":"scheduled","execution":{"steps":[{"id":"dy","name":"提交抖音待改价申诉","description":"复用店铺周采集的抖音商家账号 Cookie 与 Profile,打开活动广场;待改价不为 0 时逐条进入立即改价,兼容“申诉”和“发起申诉”入口,全选 SKU,并以固定原因提交申诉。","data_flow":{"sources":[{"system":"抖音电商","label":"活动广场待改价商品"},{"system":"浏览器状态","label":"店铺周采集账号 Cookie 与 Profile"}],"processing":["检查待改价数量并打开待处理列表","逐条进入立即改价并兼容两种申诉入口","全选 SKU,选择“对议价价格存疑 / 认为识别有误,该规格没有这么低的价格”并提交"],"destinations":[{"system":"抖音电商","label":"待改价议价申诉","condition":"正式执行(控制台或定时调度)"}]},"entry":"collectors/dy_store_competitor_store_scraping.py","args":["--price-appeal","--execute"],"timeout_seconds":1800,"replay_policy":"idempotent"}]},"provenance":{"source_project":"shop","task_name":"douyin-price-appeal-daily"},"note":"每天 08:00、16:00、22:00 自动执行;仍可在控制台手动执行。每个时点都会重新扫描,已申诉商品不会再次出现可申诉入口;安全预演不访问抖音也不提交申诉。"},
{"id":"product.persona.daily","module":"product_commerce","trigger":"scheduled","execution":{"steps":[{"id":"collect","name":"采集三平台人群画像","description":"并行运行天猫、抖音和京东人群画像采集器,等待全部完成并写入对应飞书多维表。","data_flow":{"sources":[{"system":"天猫、抖音与京东","label":"商品人群画像后台数据"},{"system":"本地配置","label":"款式与目标表映射"}],"processing":["并行采集三平台画像","统一画像维度并匹配款式"],"destinations":[{"system":"飞书多维表","label":"各平台商品人群画像"}]},"entry":"run_daily_persona.py","args":["--date","{business_date}"]}]},"provenance":{"source_project":"product","task_name":"PersonaDailyCollect"}},
{"id":"product.daily","module":"product_commerce","trigger":"scheduled","execution":{"steps":[{"id":"collect_analyze_publish","name":"采集、汇总并发布商品日报","description":"按业务日期采集 ERP 与三平台数据,完成汇总分析、导出并写入飞书日报记录。","data_flow":{"sources":[{"system":"ERP","label":"商品库存与销售数据"},{"system":"天猫、京东与抖音","label":"商品经营指标"}],"processing":["按业务日期采集各数据源","汇总并分析商品经营表现","导出日报记录"],"destinations":[{"system":"本地日报产物","label":"商品经营汇总与导出文件"},{"system":"飞书","label":"商品日报记录"}]},"entry":"orchestrate_daily_collection.py","args":["--target-date","{business_date}","--stages","collect,analyze,export,insert"]}]},"provenance":{"source_project":"product","task_name":"ProductCollectorDailyCollect"}},
{"id":"product.alert.daily","module":"product_commerce","trigger":"scheduled","execution":{"steps":[{"id":"detect_and_notify","name":"检测并通知销量下滑","description":"检测连续销量下滑,幂等记录告警事件,并通过 Hermes 与飞书通知配置对象。","data_flow":{"sources":[{"system":"PostgreSQL","label":"商品日销量与历史趋势"},{"system":"告警配置","label":"检测规则与通知对象"}],"processing":["检测连续销量下滑","调用 Hermes 生成告警说明","幂等判定是否需要通知"],"destinations":[{"system":"PostgreSQL","label":"销量告警事件"},{"system":"飞书","label":"配置对象告警通知","condition":"命中规则且未重复发送"}]},"entry":"commands/run_alerts.py"}]},"provenance":{"source_project":"product","task_name":"ProductCollectorSalesAlert"}},
{"id":"product.import.daily","module":"product_commerce","trigger":"scheduled","execution":{"steps":[{"id":"import","name":"导入商品日报原始数据","description":"扫描业务日期前一天的三平台原始报表,统一字段后幂等写入 PostgreSQL 商品日指标表。","replay_policy":"idempotent","data_flow":{"sources":[{"system":"本地原始报表","label":"天猫、京东与抖音商品日报"}],"processing":["按业务日期定位报表","统一三平台字段并校验记录","按业务主键幂等导入"],"destinations":[{"system":"PostgreSQL","label":"商品日经营指标"}]},"entry":"commands/import_daily.py"}]},"provenance":{"source_project":"product","task_name":"ProductDailyImport"}},
{"id":"product.style_analysis.interval","module":"product_commerce","trigger":"scheduled","execution":{"steps":[{"id":"analyze","name":"生成款式周期分析","description":"聚合每个款式最近 3 天经营指标,调用 Hermes 分析,创建飞书文档并保存报告链接。","data_flow":{"sources":[{"system":"PostgreSQL","label":"最近 3 天款式经营指标"},{"system":"款式配置","label":"待分析款式与最小分析间隔"}],"processing":["聚合款式周期指标","调用 Hermes 生成经营分析","跳过分析间隔未满足的款式"],"destinations":[{"system":"飞书文档","label":"款式周期分析报告"},{"system":"PostgreSQL","label":"报告链接与分析状态"}]},"entry":"analyze_style_with_hermes.py","args":["--all-styles","--days","3","--min-interval-days","3","--skip-existing","--end-date","{business_date}"]}]},"provenance":{"source_project":"product","task_name":"StyleAnalysisEvery3Days"}},
{"id":"product.main_image.weekly","module":"product_commerce","trigger":"scheduled","execution":{"steps":[{"id":"jd","name":"采集京东主图表现","description":"采集京东款式主图及曝光、点击指标,保存 JSON,并写入每款飞书主图表和 PostgreSQL。","data_flow":{"sources":[{"system":"京东商智","label":"款式主图、曝光与点击指标"},{"system":"本地配置","label":"款式与飞书目标表映射"}],"processing":["采集并按款式整理京东主图表现"],"destinations":[{"system":"本地 JSON","label":"京东主图采集结果"},{"system":"飞书","label":"各款式京东主图表"},{"system":"PostgreSQL","label":"京东主图表现指标"}]},"entry":"run_weekly_jd_main_image.py","args":["--date","{business_date}","--headless"]},{"id":"tmall","name":"采集天猫主图表现","description":"采集天猫万相台款式主图聚合指标,保存 JSON,并写入每款飞书主图表和 PostgreSQL。","data_flow":{"sources":[{"system":"天猫万相台","label":"款式主图聚合表现"},{"system":"本地配置","label":"款式与飞书目标表映射"}],"processing":["采集并按款式整理天猫主图表现"],"destinations":[{"system":"本地 JSON","label":"天猫主图采集结果"},{"system":"飞书","label":"各款式天猫主图表"},{"system":"PostgreSQL","label":"天猫主图表现指标"}]},"entry":"run_weekly_main_image.py","args":["--date","{business_date}","--headless"]}]},"provenance":{"source_project":"product","task_name":"WeeklyJdAndTmallMainImageCollect"},"note":"每周日 08:30 并行执行京东与天猫万相主图采集;两个平台分别完成 PG 入库和飞书插入,资源、状态及失败互不影响。任一平台失败时另一个仍继续,工作流最终报告具体的平台错误。"},
{"id":"product.sales_sheet.daily","module":"product_commerce","trigger":"scheduled","execution":{"steps":[{"id":"sync","name":"刷新商品月度销量表","description":"全量读取预算产品与款式主表,不按预算月份过滤款式;所选月份只控制聚水潭查询区间和飞书目标月份页。","replay_policy":"idempotent","data_flow":{"sources":[{"system":"飞书多维表格","label":"全部预算产品、目标销量、款式名与 ERP 款式编码"},{"system":"聚水潭商品主体分析","label":"所选自然月全渠道自定义销量与自定义退货量"}],"processing":["合并预算 Base 与款式主表的全量款式并匹配 ERP 编码","按所选月月初到月末逐 ERP 编码生成一次全渠道报表","累加全部商品行和同款全部 ERP 编码并计算退货率、实销和目标达成率"],"destinations":[{"system":"飞书电子表格","label":"当月产品销量页","condition":"正式执行"}]},"entry":"sync_monthly_sales_sheet.py","args":["--month","{business_date}","--execute","--allow-missing-erp-as-zero"]}]},"provenance":{"source_project":"product","task_name":"ProductMonthlySalesSheetDailySync"},"note":"同名月份页幂等覆盖;月份只控制聚水潭自然月区间与目标页,产品全集不按预算月份筛选;抓取和校验全部 ERP 报表成功后才清空写入;无 ERP 编码产品按 0 写入;缺页时复制最近历史月份页继承格式。"},
{"id":"product.persona.daily","module":"product_commerce","trigger":"scheduled","execution":{"entry":"run_daily_persona.py"},"provenance":{"source_project":"product","task_name":"PersonaDailyCollect"}},
{"id":"product.daily","module":"product_commerce","trigger":"scheduled","execution":{"entry":"orchestrate_daily_collection.py","args":["--stages","collect,analyze,export,insert"]},"provenance":{"source_project":"product","task_name":"ProductCollectorDailyCollect"}},
{"id":"product.alert.daily","module":"product_commerce","trigger":"scheduled","execution":{"entry":"commands/run_alerts.py"},"provenance":{"source_project":"product","task_name":"ProductCollectorSalesAlert"}},
{"id":"product.import.daily","module":"product_commerce","trigger":"scheduled","execution":{"entry":"commands/import_daily.py"},"provenance":{"source_project":"product","task_name":"ProductDailyImport"}},
{"id":"product.style_analysis.interval","module":"product_commerce","trigger":"scheduled","execution":{"entry":"analyze_style_with_hermes.py","args":["--all-styles","--days","3","--min-interval-days","3","--skip-existing"]},"provenance":{"source_project":"product","task_name":"StyleAnalysisEvery3Days"}},
{"id":"product.main_image.jd.weekly","module":"product_commerce","trigger":"scheduled","execution":{"entry":"run_weekly_jd_main_image.py","args":["--headless"]},"provenance":{"source_project":"product","task_name":"WeeklyJdMainImageCollect"}},
{"id":"product.main_image.weekly","module":"product_commerce","trigger":"scheduled","execution":{"entry":"run_weekly_main_image.py","args":["--headless"]},"provenance":{"source_project":"product","task_name":"WeeklyMainImageCollect"}},
{"id":"supply.purchase_confirmation.daily","module":"supply_chain","trigger":"scheduled","execution":{"steps":[{"id":"collect_analyze_notify","name":"生成采购确认通知","description":"从 ERP 识别库存缺口商品并检查协议到货时间,写入 PostgreSQL 后发送采购确认通知。","replay_policy":"idempotent","data_flow":{"sources":[{"system":"ERP","label":"商品库存、在途与采购数据"},{"system":"采购配置","label":"协议到货时间与确认规则"}],"processing":["识别库存缺口商品","核对协议到货时间并生成确认项"],"destinations":[{"system":"PostgreSQL","label":"采购确认处理记录"},{"system":"飞书","label":"采购确认通知"}]},"entry":"run.py","args":["mcp-run","purchase-confirmation"]}]},"provenance":{"source_project":"supply","task_name":"auto-flow-purchase-confirmation"}},
{"id":"supply.replenishment.weekly","module":"supply_chain","trigger":"scheduled","execution":{"steps":[{"id":"collect_analyze_notify","name":"生成并发送补货建议","description":"导出 ERP 库存并计算补货量,写入 PostgreSQL 与飞书多维表,最后发送补货结果通知。","replay_policy":"idempotent","data_flow":{"sources":[{"system":"ERP","label":"库存、销售与商品数据"},{"system":"补货配置","label":"SKU 范围与补货规则"}],"processing":["导出并规范化库存数据","按规则计算建议补货量","生成补货批次结果"],"destinations":[{"system":"PostgreSQL","label":"补货批次与建议明细"},{"system":"飞书多维表","label":"补货建议记录"},{"system":"飞书","label":"补货结果通知"}]},"entry":"run.py","args":["mcp-run","replenishment"]}]},"provenance":{"source_project":"supply","task_name":"auto-flow-replenishment"}},
{"id":"supply.replenishment_alert.daily","module":"supply_chain","trigger":"scheduled","execution":{"steps":[{"id":"collect_analyze_notify","name":"生成库存阈值预警","description":"依据配置 SKU 和库存阈值生成预警并写入 PostgreSQL,仅在存在预警时发送业务通知。","replay_policy":"idempotent","data_flow":{"sources":[{"system":"ERP","label":"SKU 当前库存"},{"system":"预警配置","label":"监控 SKU 与库存阈值"}],"processing":["比较当前库存与配置阈值","生成需要处理的库存预警"],"destinations":[{"system":"PostgreSQL","label":"库存阈值预警记录"},{"system":"飞书","label":"库存预警通知","condition":"存在命中阈值的 SKU"}]},"entry":"run.py","args":["mcp-run","replenishment-alert"]}]},"provenance":{"source_project":"supply","task_name":"auto-flow-replenishment-alert"}},
{"id":"supply.purchase_confirmation.daily","module":"supply_chain","trigger":"scheduled","execution":{"entry":"run.py","args":["mcp-run","purchase-confirmation"]},"provenance":{"source_project":"supply","task_name":"auto-flow-purchase-confirmation"}},
{"id":"supply.replenishment.weekly","module":"supply_chain","trigger":"scheduled","execution":{"entry":"run.py","args":["mcp-run","replenishment"]},"provenance":{"source_project":"supply","task_name":"auto-flow-replenishment"}},
{"id":"supply.replenishment_alert.daily","module":"supply_chain","trigger":"scheduled","execution":{"entry":"run.py","args":["mcp-run","replenishment-alert"]},"provenance":{"source_project":"supply","task_name":"auto-flow-replenishment-alert"}},
{"id":"content.mapping.refresh","module":"content_marketing","trigger":"manual","execution":{"entry":"data/tools/rebuild_mapping.py"},"provenance":{"source_project":"content"}},
{"id":"content.retry_failed","module":"content_marketing","trigger":"manual","execution":{"entry":"data/tools/retry_failed.py"},"provenance":{"source_project":"content"}},
{"id":"content.metrics.backfill","module":"content_marketing","trigger":"manual","execution":{"entry":"data/tools/daily_run_with_backfill.bat"},"provenance":{"source_project":"content"}},
{"id":"product.backfill","module":"product_commerce","trigger":"manual","execution":{"entry":"backfill_collect.py"},"provenance":{"source_project":"product"}},
{"id":"product.market_rank","module":"product_commerce","trigger":"manual","execution":{"entry":"orchestrate_market_rank_collection.py"},"provenance":{"source_project":"product"},"note":"A launcher exists but no matching system task is registered."},
{"id":"product.review_collection","module":"product_commerce","trigger":"manual","execution":{"entry":"orchestrate_review_collection.py"},"provenance":{"source_project":"product"}},
{"id":"supply.purchase_order_update","module":"supply_chain","trigger":"manual","execution":{"entry":"run.py","args":["mcp-run","purchase-order-update"]},"provenance":{"source_project":"supply"}},
{"id":"product.weekly_aggregate.documented_missing","module":"product_commerce","trigger":"unavailable","execution":{"entry":"run_weekly_collect.py"},"provenance":{"source_project":"product"},"note":"Documented in README but the entry file and scheduled task are absent."}
{"id":"product.market_rank","module":"product_commerce","trigger":"scheduled","execution":{"steps":[{"id":"collect_analyze_publish","name":"采集并发布三平台市场排行","description":"并行采集天猫、京东和抖音市场排行,汇总平台结果并发送飞书报告链接。","data_flow":{"sources":[{"system":"天猫、京东与抖音","label":"市场商品排行与表现数据"},{"system":"本地配置","label":"类目、关键词与采集范围"}],"processing":["并行采集三平台排行","汇总平台结果并生成市场分析","归档报告并准备通知"],"destinations":[{"system":"本地报告产物","label":"三平台市场排行结果"},{"system":"飞书","label":"市场排行报告链接与通知"}]},"entry":"orchestrate_market_rank_collection.py","args":["--report-date","{business_date}"]}]},"provenance":{"source_project":"product","task_name":"三平台市场排行周采集"},"note":"每周一 10:00 由项目内 Python 调度器触发。"}
]
}