{
  "name": "quant01",
  "version": "0.1.0",
  "private": true,
  "engines": {
    "node": ">=22.13.0"
  },
  "scripts": {
    "dev": "WRANGLER_LOG_PATH=.wrangler/wrangler.log vinext dev",
    "build": "WRANGLER_LOG_PATH=.wrangler/wrangler.log vinext build",
    "start": "WRANGLER_LOG_PATH=.wrangler/wrangler.log vinext start",
    "test": "npm run build && node --test tests/*.test.mjs",
    "lint": "eslint . --ignore-pattern dist --ignore-pattern .next --ignore-pattern work",
    "db:generate": "drizzle-kit generate",
    "sync:artifacts": "node scripts/sync-artifacts.mjs",
    "refresh:snapshot": "python3 ../scripts/export_artifacts.py && npm run sync:artifacts && npm run build",
    "deploy:worker": "wrangler deploy --config wrangler.always-on.jsonc",
    "r2:minute-lake:plan": "node scripts/r2-minute-data-lake.mjs plan",
    "r2:minute-lake:probe": "node scripts/r2-minute-data-lake.mjs probe",
    "r2:minute-lake:upload": "node scripts/r2-minute-data-lake.mjs upload",
    "r2:minute-lake:verify-final": "node scripts/r2-minute-data-lake.mjs verify-final",
    "r2:minute-lake:status": "node scripts/r2-minute-data-lake.mjs status",
    "r2:minute-lake:fetch": "node scripts/r2-minute-data-lake.mjs fetch",
    "r2:minute-lake:cleanup-junk": "node scripts/r2-minute-data-lake.mjs cleanup-junk",
    "research:audit:etf-full-minutes": ".venv-quant/bin/python research/etf_full_minute_coverage_audit.py",
    "research:audit:r2-category-readback": "node research/r2_category_readback_audit.mjs",
    "research:optimize:etf-full-intraday": ".venv-quant/bin/python research/etf_full_universe_intraday_challenger.py",
    "research:optimize:etf-regime-v2": ".venv-quant/bin/python research/etf_intraday_regime_challenger_v2.py",
    "deploy:worker:www": "wrangler deploy --config wrangler.www.jsonc",
    "deploy:pages": "node scripts/deploy-pages.mjs",
    "deploy:pages:www": "HUNTER_PAGES_PROJECT=www-hunter-quant node scripts/deploy-pages.mjs",
    "deploy:pages:www-dot": "HUNTER_PAGES_PROJECT=hunter-quant HUNTER_PAGES_BRANCH=www node scripts/deploy-pages.mjs",
    "access:local": "node scripts/local-access-bridge.mjs",
    "research:backfill:daily": "node research/vendor_tushare_daily_panel_backfill.mjs --daily-only --concurrency=8",
    "research:backfill:30y-daily": "node research/vendor_tushare_daily_panel_backfill.mjs --daily-only --concurrency=8 --start=19960805 --end=20160804",
    "research:backfill:rules": "node research/vendor_tushare_market_rules_backfill.mjs --concurrency=8 --newest-first",
    "research:backfill:auctions": "node research/vendor_tushare_auction_backfill.mjs --opening-only --concurrency=8 --newest-first",
    "research:optimize:pit": "node research/cn_point_in_time_panel_optimizer_v4.mjs",
    "research:optimize:30y": "node research/cn_point_in_time_panel_optimizer_v4.mjs --span=30y",
    "research:optimize:index": "node research/cn_index_regime_challenger.mjs",
    "research:optimize:index:35y": "node research/cn_index_regime_challenger.mjs --span=35y",
    "research:optimize:local-archives": "PYTHONPATH=.python-deps python3.12 research/local_archive_streaming_optimizer.py --result research/results/local-archive-streaming-optimizer-v1.json --report ../outputs/local-three-folders-streaming-strategy-optimization-v1-2026-08-05.md",
    "research:optimize:historical-minutes": "PYTHONPATH=.python-deps python3.12 research/historical_minute_execution_optimizer.py --result research/results/historical-minute-execution-optimizer-v1.json --report ../outputs/historical-minute-execution-optimization-2026-08-05.md",
    "research:audit:etf-data": "PYTHONPATH=.python-deps python3.12 research/etf_data_coverage_audit.py --root '/Users/zhuboyu/Desktop/龙门计划/投资/Quant/tushare_15000_history_by_api_packages_20260627' --stock-minute '/Users/zhuboyu/Desktop/龙门计划/投资/Quant/1分钟_沪深_按年汇总' --index-minute '/Users/zhuboyu/Desktop/龙门计划/投资/Quant/1分钟_指数_按年汇总' --output research/results/etf-data-coverage-audit-2026-08-05.json",
    "research:optimize:etf-daily": "PYTHONPATH=.python-deps python3.12 research/etf_daily_rotation_optimizer.py --archive '/Users/zhuboyu/Desktop/龙门计划/投资/Quant/tushare_15000_history_by_api_packages_20260627/fund_daily/fund_daily.tar.gz' --result research/results/etf-daily-rotation-optimizer-v1.json --report ../outputs/etf-daily-rotation-optimization-2026-08-05.md",
    "research:probe:super-etf-minutes": "node research/super_tushare_etf_minute_probe.mjs",
    "research:analyze:baidu-gaps": "python3 research/baidu_inventory_gap_analysis.py --inventory research/results/baidu-share-inventory-latest.json --result research/results/baidu-local-gap-analysis-v1.json --report ../outputs/baidu-local-gap-analysis-2026-08-05.md",
    "research:audit:shadow": "node research/cn_intraday_shadow_audit.mjs",
    "research:recheck:minutes": "node research/vendor_tushare_minute_recheck.mjs",
    "research:audit:free-stockdb": "node research/free_stockdb_secure_manifest_adapter.mjs"
  },
  "dependencies": {
    "drizzle-orm": "0.45.2",
    "next": "16.2.6",
    "react": "19.2.6",
    "react-dom": "19.2.6",
    "ws": "^8.18.0"
  },
  "devDependencies": {
    "@cloudflare/vite-plugin": "1.37.1",
    "@tailwindcss/postcss": "4.2.1",
    "@types/node": "22.19.19",
    "@types/react": "19.2.14",
    "@types/react-dom": "19.2.3",
    "@vitejs/plugin-react": "6.0.2",
    "@vitejs/plugin-rsc": "0.5.26",
    "drizzle-kit": "0.31.10",
    "eslint": "9.39.4",
    "eslint-config-next": "16.2.6",
    "react-server-dom-webpack": "19.2.6",
    "tailwindcss": "4.2.1",
    "typescript": "5.9.3",
    "vinext": "0.0.50",
    "vite": "8.0.13",
    "wrangler": "4.92.0"
  },
  "type": "module"
}
