912 lines
25 KiB
JSON
912 lines
25 KiB
JSON
{
|
|
"sources": {
|
|
"frontend": {
|
|
"repo": "https://gitea.entroia.com/Z/trumpsignal-frontend",
|
|
"commit": "8534d905897a972137d7a816649190bb26534863"
|
|
},
|
|
"backend": {
|
|
"repo": "https://gitea.entroia.com/Z/trumpsignal-backend",
|
|
"commit": "1ab553f778b1b012d76e1d1c2496eb64bb0f6002"
|
|
}
|
|
},
|
|
"backend": [
|
|
{
|
|
"file": "app/__init__.py",
|
|
"symbols": [],
|
|
"status": "namespace-replaced",
|
|
"replacement": []
|
|
},
|
|
{
|
|
"file": "app/api/__init__.py",
|
|
"symbols": [],
|
|
"status": "namespace-replaced",
|
|
"replacement": []
|
|
},
|
|
{
|
|
"file": "app/api/dev.py",
|
|
"symbols": [
|
|
"insert_fake_post",
|
|
"inject_fake_signal",
|
|
"trigger_reanalyze",
|
|
"reanalyze_status",
|
|
"trigger_price_backfill",
|
|
"backtest_one_post",
|
|
"toggle_paper_mode",
|
|
"backtest_batch_route"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["apps/api/src/routes/dev.ts"]
|
|
},
|
|
{
|
|
"file": "app/api/funding_reversal.py",
|
|
"symbols": ["snapshot"],
|
|
"status": "ported-source-only",
|
|
"replacement": ["apps/api/src/routes/signals.ts"]
|
|
},
|
|
{
|
|
"file": "app/api/funding_signal.py",
|
|
"symbols": ["_require_ingest_key", "status", "toggle", "history"],
|
|
"status": "ported-source-only",
|
|
"replacement": ["apps/api/src/routes/signals.ts"]
|
|
},
|
|
{
|
|
"file": "app/api/kol.py",
|
|
"symbols": [
|
|
"_verify_admin_key",
|
|
"_parse_tickers",
|
|
"_summary_dto",
|
|
"_detail_dto",
|
|
"list_kol_posts",
|
|
"get_kol_post",
|
|
"kol_digest",
|
|
"_wallet_dto",
|
|
"_snapshot_dto",
|
|
"_change_dto",
|
|
"list_kol_wallets",
|
|
"add_kol_wallet",
|
|
"get_wallet_snapshots",
|
|
"list_holding_changes",
|
|
"_divergence_dto",
|
|
"list_divergence",
|
|
"trigger_divergence_scan"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["apps/api/src/routes/kol.ts"]
|
|
},
|
|
{
|
|
"file": "app/api/macro.py",
|
|
"symbols": ["_row_to_dict", "get_snapshot", "get_history"],
|
|
"status": "ported-source-only",
|
|
"replacement": ["apps/api/src/routes/macro.ts"]
|
|
},
|
|
{
|
|
"file": "app/api/performance.py",
|
|
"symbols": ["get_performance"],
|
|
"status": "ported-source-only",
|
|
"replacement": ["apps/api/src/routes/accounts.ts"]
|
|
},
|
|
{
|
|
"file": "app/api/positions.py",
|
|
"symbols": [
|
|
"OpenPosition",
|
|
"OpenPositionsResponse",
|
|
"TodayStatsResponse",
|
|
"_enrich",
|
|
"get_open_positions",
|
|
"get_today_stats",
|
|
"CloseTradeResponse",
|
|
"manual_close",
|
|
"GrowResponse",
|
|
"set_trade_grow",
|
|
"HLPositionItem",
|
|
"HLPositionsResponse",
|
|
"list_hl_positions_endpoint",
|
|
"AdoptResponse",
|
|
"adopt_position_endpoint",
|
|
"ReleaseResponse",
|
|
"release_trade_endpoint"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["apps/api/src/routes/positions.ts"]
|
|
},
|
|
{
|
|
"file": "app/api/posts.py",
|
|
"symbols": [
|
|
"_direction_correct",
|
|
"_post_to_schema",
|
|
"get_posts",
|
|
"get_posts_page",
|
|
"signal_accuracy",
|
|
"get_post"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["apps/api/src/routes/posts.ts"]
|
|
},
|
|
{
|
|
"file": "app/api/prices.py",
|
|
"symbols": ["fetch_binance_candles", "get_prices"],
|
|
"status": "ported-source-only",
|
|
"replacement": ["apps/api/src/routes/signals.ts"]
|
|
},
|
|
{
|
|
"file": "app/api/scanners.py",
|
|
"symbols": [
|
|
"ScannerSummary",
|
|
"ScannersResponse",
|
|
"ToggleResponse",
|
|
"_require_subscribed_signer",
|
|
"list_scanners",
|
|
"toggle_scanner",
|
|
"kill_switch",
|
|
"revive_all"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["apps/api/src/routes/signals.ts"]
|
|
},
|
|
{
|
|
"file": "app/api/signals.py",
|
|
"symbols": [
|
|
"SignalIngestRequest",
|
|
"SignalIngestResponse",
|
|
"_verify_ingest_key",
|
|
"ingest_signal",
|
|
"list_sources"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["apps/api/src/routes/signals.ts"]
|
|
},
|
|
{
|
|
"file": "app/api/subscribe.py",
|
|
"symbols": ["subscribe"],
|
|
"status": "ported-source-only",
|
|
"replacement": ["apps/api/src/routes/accounts.ts"]
|
|
},
|
|
{
|
|
"file": "app/api/telegram.py",
|
|
"symbols": [
|
|
"_require_tg_configured",
|
|
"SignedEnvelope",
|
|
"PrefsBody",
|
|
"StatusResponse",
|
|
"InitResponse",
|
|
"_build_status",
|
|
"status",
|
|
"init_binding",
|
|
"update_preferences",
|
|
"unbind",
|
|
"test"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["apps/api/src/routes/telegram.ts"]
|
|
},
|
|
{
|
|
"file": "app/api/trades.py",
|
|
"symbols": ["_trade_to_schema", "get_trades"],
|
|
"status": "ported-source-only",
|
|
"replacement": ["apps/api/src/routes/accounts.ts"]
|
|
},
|
|
{
|
|
"file": "app/api/user.py",
|
|
"symbols": [
|
|
"verify_hl_api_key_can_trade",
|
|
"_trade_to_schema",
|
|
"set_hl_api_key",
|
|
"get_user_public",
|
|
"get_user",
|
|
"set_user_settings",
|
|
"set_manual_window",
|
|
"set_auto_trade"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["apps/api/src/routes/accounts.ts"]
|
|
},
|
|
{
|
|
"file": "app/config.py",
|
|
"symbols": ["Settings"],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/config.ts"]
|
|
},
|
|
{
|
|
"file": "app/database.py",
|
|
"symbols": ["get_db"],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/database/src/index.ts"]
|
|
},
|
|
{
|
|
"file": "app/main.py",
|
|
"symbols": [
|
|
"_acquire_singleton_lock",
|
|
"lifespan",
|
|
"health",
|
|
"health_deep",
|
|
"ws_prices",
|
|
"ws_posts"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["apps/api/src/main.ts", "apps/api/src/app.ts", "apps/worker/src/main.ts"]
|
|
},
|
|
{
|
|
"file": "app/models.py",
|
|
"symbols": [
|
|
"utcnow",
|
|
"iso_utc",
|
|
"Post",
|
|
"Candle",
|
|
"BotTrade",
|
|
"Subscription",
|
|
"KolPost",
|
|
"KolWallet",
|
|
"KolHoldingSnapshot",
|
|
"KolHoldingChange",
|
|
"KolDivergence",
|
|
"TelegramBinding",
|
|
"MacroSnapshot"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": [
|
|
"packages/database/src/schema.ts",
|
|
"packages/database/migrations/0001_legacy_027_baseline.sql"
|
|
]
|
|
},
|
|
{
|
|
"file": "app/ratelimit.py",
|
|
"symbols": ["client_ip_key"],
|
|
"status": "ported-source-only",
|
|
"replacement": [
|
|
"apps/api/src/app.ts",
|
|
"apps/api/src/routes/posts.ts",
|
|
"apps/api/src/routes/signals.ts"
|
|
]
|
|
},
|
|
{
|
|
"file": "app/schemas.py",
|
|
"symbols": [
|
|
"PriceImpact",
|
|
"TrumpPost",
|
|
"PostFilterCounts",
|
|
"SourceCount",
|
|
"PostListResponse",
|
|
"Candle",
|
|
"BotTrade",
|
|
"BotPerformance",
|
|
"SignedEnvelope",
|
|
"SubscribeRequest",
|
|
"SubscribeResponse",
|
|
"SetApiKeyRequest",
|
|
"SetApiKeyResponse",
|
|
"UserSettings",
|
|
"SetSettingsRequest",
|
|
"UserResponse"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": [
|
|
"packages/contracts/src/index.ts",
|
|
"apps/api/src/routes/accounts.ts",
|
|
"apps/api/src/routes/positions.ts",
|
|
"packages/backend/src/pipeline.ts"
|
|
]
|
|
},
|
|
{
|
|
"file": "app/scrapers/__init__.py",
|
|
"symbols": [],
|
|
"status": "namespace-replaced",
|
|
"replacement": []
|
|
},
|
|
{
|
|
"file": "app/scrapers/trumpstruth.py",
|
|
"symbols": ["_fetch_feed", "_to_cnn_shape", "poll_trumpstruth"],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/truth-feeds.ts", "packages/backend/src/pipeline.ts"]
|
|
},
|
|
{
|
|
"file": "app/scrapers/truth_social.py",
|
|
"symbols": [
|
|
"_strip_html",
|
|
"_parse_dt",
|
|
"_fetch_archive",
|
|
"_known_external_ids",
|
|
"_process_entry",
|
|
"_post_to_ws_payload",
|
|
"dispatch_post",
|
|
"poll_truth_social",
|
|
"backfill_history"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/truth-feeds.ts", "packages/backend/src/pipeline.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/__init__.py",
|
|
"symbols": [],
|
|
"status": "namespace-replaced",
|
|
"replacement": []
|
|
},
|
|
{
|
|
"file": "app/services/adoption.py",
|
|
"symbols": [
|
|
"_wallet_adopt_lock",
|
|
"AdoptionError",
|
|
"HLPositionView",
|
|
"list_hl_positions",
|
|
"AdoptionResult",
|
|
"adopt_position",
|
|
"_adopt_locked",
|
|
"release_management"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/engine.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/analysis.py",
|
|
"symbols": [
|
|
"_fallback",
|
|
"_use_anthropic",
|
|
"_get_anthropic_client",
|
|
"_get_client",
|
|
"_liquidity_note",
|
|
"analyze_post"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/analysis.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/backtest.py",
|
|
"symbols": [
|
|
"BacktestResult",
|
|
"BacktestParams",
|
|
"fetch_binance_1m",
|
|
"_asset_to_symbol",
|
|
"simulate_exit",
|
|
"backtest_post",
|
|
"backtest_batch"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/operations.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/binance.py",
|
|
"symbols": ["_process_message", "fetch_historical", "run_binance_ws"],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/price-feeds.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/bot_engine.py",
|
|
"symbols": [
|
|
"_broadcast_trade_alert",
|
|
"_wallet_lock",
|
|
"_lock_for",
|
|
"_confidence_floor_for",
|
|
"_should_apply_schedule",
|
|
"process_post",
|
|
"_is_in_active_window",
|
|
"_execute_for_subscriber",
|
|
"partial_derisk",
|
|
"pyramid_add",
|
|
"close_and_finalize",
|
|
"_close_after_hold",
|
|
"_time_stop_check"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/engine.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/bottom_indicators.py",
|
|
"symbols": [
|
|
"_closes",
|
|
"_sma",
|
|
"_ema",
|
|
"coin_age_days",
|
|
"ahr999",
|
|
"below_200wma",
|
|
"pi_cycle_bottom",
|
|
"trend_confirmed",
|
|
"BottomConfluence",
|
|
"bottom_confluence"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/core/src/bottom-indicators.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/circuit_breaker.py",
|
|
"symbols": ["_trades_for_system", "check_and_trip", "is_tripped", "clear_trip"],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/engine.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/crypto.py",
|
|
"symbols": [
|
|
"_check_kek",
|
|
"_derive_v1_key",
|
|
"_derive_v2_key",
|
|
"_cipher_v1",
|
|
"_cipher_v2",
|
|
"encrypt_api_key",
|
|
"decrypt_api_key",
|
|
"is_current_format"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/core/src/crypto.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/entry_filter.py",
|
|
"symbols": [
|
|
"_significant_tokens",
|
|
"_topic_keywords_in",
|
|
"has_action_marker",
|
|
"has_future_tense_blocker",
|
|
"is_duplicate_of_recent",
|
|
"passes_entry_filter",
|
|
"passes_entry_filter_sync"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/core/src/entry-filter.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/funding_signal.py",
|
|
"symbols": [
|
|
"_load_persisted_state",
|
|
"_persist_state",
|
|
"set_enabled",
|
|
"is_enabled",
|
|
"get_recent_signals",
|
|
"get_status",
|
|
"_fetch_klines",
|
|
"_parse_candle",
|
|
"_compute_signal",
|
|
"_btc_trend",
|
|
"poll_funding_signal"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/state.ts", "packages/backend/src/breakout.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/hl_price_feed.py",
|
|
"symbols": ["run_hl_price_feed", "_poll_loop", "_tick"],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/price-feeds.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/http_client.py",
|
|
"symbols": ["get_client", "aclose"],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/http.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/hyperliquid.py",
|
|
"symbols": ["HyperliquidTrader"],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/hyperliquid.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/kol_analysis.py",
|
|
"symbols": [
|
|
"_use_anthropic",
|
|
"_anth",
|
|
"_oai",
|
|
"_truncate",
|
|
"_parse_json",
|
|
"extract_kol_signal",
|
|
"_derive_tier"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/analysis.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/kol_divergence.py",
|
|
"symbols": ["_post_for_divergence", "_classify", "run_divergence_scan"],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/kol.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/kol_onchain.py",
|
|
"symbols": [
|
|
"_get_hl_prices",
|
|
"_coingecko_prices_by_symbol",
|
|
"_coingecko_prices_by_contract",
|
|
"_fetch_hl_positions",
|
|
"_fetch_eth_holdings",
|
|
"_diff_holdings",
|
|
"_snapshot_wallet",
|
|
"run_hl_poll",
|
|
"run_eth_poll",
|
|
"run_onchain_poll",
|
|
"seed_wallets"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/kol-onchain.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/kol_substack.py",
|
|
"symbols": [
|
|
"_html_to_text",
|
|
"_entry_body",
|
|
"_parse_pub",
|
|
"_fetch_feed",
|
|
"_ingest_kol",
|
|
"run_substack_poll"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/kol.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/kol_x.py",
|
|
"symbols": [
|
|
"_parse_created_at",
|
|
"_fetch_tweet_page",
|
|
"_iter_tweet_pages",
|
|
"_ingest_kol_x",
|
|
"run_x_poll"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/kol.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/macro/__init__.py",
|
|
"symbols": [],
|
|
"status": "namespace-replaced",
|
|
"replacement": []
|
|
},
|
|
{
|
|
"file": "app/services/macro/fetchers.py",
|
|
"symbols": [
|
|
"_none_on_fail",
|
|
"_utc_midnight_ms",
|
|
"_drop_in_progress_daily_klines",
|
|
"_latest_closed_daily_point",
|
|
"_parse_farside_latest_total",
|
|
"fetch_ahr999",
|
|
"fetch_altcoin_season_index",
|
|
"fetch_fear_greed",
|
|
"fetch_btc_dominance",
|
|
"fetch_eth_btc_ratio",
|
|
"fetch_stablecoin_supply",
|
|
"fetch_etf_flow",
|
|
"fetch_btc_open_interest"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/macro.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/macro/poll.py",
|
|
"symbols": ["run_macro_poll"],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/macro.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/macro/scoring.py",
|
|
"symbols": [
|
|
"_ahr999_signal",
|
|
"_altseason_signal",
|
|
"_fear_greed_signal",
|
|
"_btc_dominance_signal",
|
|
"_eth_btc_signal",
|
|
"_stablecoin_supply_signal",
|
|
"_etf_flow_signal",
|
|
"_open_interest_signal",
|
|
"compute_composite"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/core/src/macro-scoring.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/market_data.py",
|
|
"symbols": [
|
|
"CandleSource",
|
|
"BinanceCandles",
|
|
"HyperliquidCandles",
|
|
"drop_in_progress_bar",
|
|
"for_asset"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/market-data.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/onchain_data.py",
|
|
"symbols": [
|
|
"_load_disk_cache",
|
|
"_save_disk_cache",
|
|
"BitcoinDataClient",
|
|
"GlassnodeClient",
|
|
"get_onchain_client"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/onchain-data.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/price_backfill.py",
|
|
"symbols": ["_fetch_klines", "_price_at", "_pct_change", "backfill_price_impact"],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/operations.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/price_impact_monitor.py",
|
|
"symbols": [
|
|
"TrackedPost",
|
|
"register_post",
|
|
"unregister",
|
|
"get_live_impact",
|
|
"on_price_tick",
|
|
"_write_window_to_db"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/pipeline.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/price_store.py",
|
|
"symbols": ["PriceStore"],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/price-store.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/reanalyze.py",
|
|
"symbols": ["get_state", "reanalyze_unscored"],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/operations.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/reconciler.py",
|
|
"symbols": ["_reconcile_wallet", "reconcile_all_once"],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/engine.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/recovery.py",
|
|
"symbols": ["rehydrate_open_trades"],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/engine.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/regime_filter.py",
|
|
"symbols": [
|
|
"_atr_proxy",
|
|
"is_volatility_contracted",
|
|
"is_not_already_moving",
|
|
"is_not_thin_liquidity_hour",
|
|
"is_btc_not_countertrend",
|
|
"passes_regime_filter",
|
|
"calculate_size_multiplier",
|
|
"is_in_manual_window"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/regime.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/scanner_state.py",
|
|
"symbols": [
|
|
"ScannerState",
|
|
"register",
|
|
"is_enabled",
|
|
"set_enabled",
|
|
"disable_all",
|
|
"enable_all",
|
|
"get_all",
|
|
"record_run",
|
|
"last_signal_at",
|
|
"in_cooldown"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/state.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/scanners/__init__.py",
|
|
"symbols": [],
|
|
"status": "namespace-replaced",
|
|
"replacement": []
|
|
},
|
|
{
|
|
"file": "app/services/scanners/_archive/vcp_breakout.py",
|
|
"symbols": [
|
|
"_atr_proxy",
|
|
"evaluate_breakout",
|
|
"_confidence_from",
|
|
"_emit_signal",
|
|
"scan_once"
|
|
],
|
|
"status": "inactive-archive-not-enabled",
|
|
"note": "原部署未启用的归档实验;保持不启用,历史源码留在原仓库。",
|
|
"replacement": []
|
|
},
|
|
{
|
|
"file": "app/services/scanners/_archive/weekly_rsi_reversal.py",
|
|
"symbols": ["calculate_rsi", "evaluate_rsi_reversal", "_emit_signal", "scan_once"],
|
|
"status": "inactive-archive-not-enabled",
|
|
"note": "原部署未启用的归档实验;保持不启用,历史源码留在原仓库。",
|
|
"replacement": []
|
|
},
|
|
{
|
|
"file": "app/services/scanners/btc_bottom_reversal.py",
|
|
"symbols": ["evaluate_once", "_summary", "_emit_signal", "scan_once"],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/scanners.ts", "packages/core/src/bottom-indicators.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/scanners/funding_reversal.py",
|
|
"symbols": [
|
|
"_detect_cadence_hours",
|
|
"evaluate_funding_reversal",
|
|
"_fetch_inputs",
|
|
"_summary",
|
|
"_emit_signal",
|
|
"scan_once",
|
|
"get_current_snapshot"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/scanners.ts", "packages/core/src/funding-reversal.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/scanners/sma_reclaim.py",
|
|
"symbols": ["evaluate_sma_reclaim"],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/core/src/sma-reclaim.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/signal_categories.py",
|
|
"symbols": [
|
|
"is_system_2",
|
|
"is_supported_trading_source",
|
|
"system2_display_name",
|
|
"system2_min_confidence",
|
|
"CategoryExit",
|
|
"get_exit_profile",
|
|
"sys2_normalize_mode",
|
|
"sys2_effective_leverage",
|
|
"sys2_protective_stop_pct",
|
|
"sys2_approx_liquidation_pct",
|
|
"sys2_addon_ladder",
|
|
"sys2_peak_trail",
|
|
"sys2_derisk_ladder",
|
|
"get_stop_ladder",
|
|
"system2_size_multiplier"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/core/src/signal-categories.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/signed_request.py",
|
|
"symbols": [
|
|
"canonical_body_hash",
|
|
"build_message",
|
|
"_cache_put",
|
|
"verify_signed_request",
|
|
"verify_signed_request_any",
|
|
"SignedReadCreds",
|
|
"signed_read_creds",
|
|
"optional_signed_read_creds"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/auth.ts", "packages/core/src/signed-request.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/telegram.py",
|
|
"symbols": [
|
|
"_pref_column_for_source",
|
|
"_is_in_mute_window",
|
|
"_signal_emoji",
|
|
"_source_label",
|
|
"format_post",
|
|
"format_trump_mention",
|
|
"format_public_post",
|
|
"send_message",
|
|
"edit_message",
|
|
"answer_callback",
|
|
"_dispatch",
|
|
"notify_signal",
|
|
"send_test_message"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/telegram.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/telegram_bot.py",
|
|
"symbols": [
|
|
"_purge_expired_codes",
|
|
"issue_binding_code",
|
|
"_consume_code",
|
|
"_ensure_binding",
|
|
"_cmd_start",
|
|
"_set_pref",
|
|
"_parse_on_off",
|
|
"_cmd_toggle",
|
|
"_cmd_conf",
|
|
"_cmd_quiet",
|
|
"_cmd_stop",
|
|
"_cmd_status",
|
|
"_cmd_digest",
|
|
"_cmd_digest_time",
|
|
"_wallet_for_chat",
|
|
"_cmd_adopt",
|
|
"_send_mode_picker",
|
|
"_cmd_release",
|
|
"_confirm_release",
|
|
"_cmd_test",
|
|
"_handle_message",
|
|
"_handle_callback",
|
|
"run_bot_loop",
|
|
"unbind_wallet"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/telegram.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/telegram_digest.py",
|
|
"symbols": [
|
|
"MacroBlock",
|
|
"KolBlock",
|
|
"TrumpBlock",
|
|
"GlobalDigest",
|
|
"build_global_digest",
|
|
"_headline",
|
|
"format_digest",
|
|
"_build_user_state",
|
|
"send_daily_digest",
|
|
"send_preview_for"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/telegram.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/tp_sl_monitor.py",
|
|
"symbols": [
|
|
"WatchedTrade",
|
|
"register_trade",
|
|
"unregister",
|
|
"on_price_tick",
|
|
"_fire_partial",
|
|
"_fire_pyramid",
|
|
"_persist_peak",
|
|
"_fire_close"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/engine.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/x_analysis.py",
|
|
"symbols": [
|
|
"_use_anthropic",
|
|
"_anth",
|
|
"_oai",
|
|
"_liquidity_note",
|
|
"_follower_tier",
|
|
"analyze_x_post"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/analysis.ts"]
|
|
},
|
|
{
|
|
"file": "app/services/x_poster.py",
|
|
"symbols": [
|
|
"_creds_ok",
|
|
"_under_daily_cap",
|
|
"_record_sent",
|
|
"_percent",
|
|
"_oauth_header",
|
|
"_post_tweet",
|
|
"_recent_hit_rate",
|
|
"_dir_word",
|
|
"format_prediction",
|
|
"format_followup",
|
|
"_x_dispatch",
|
|
"_followup_later",
|
|
"notify_x_signal"
|
|
],
|
|
"status": "ported-source-only",
|
|
"replacement": ["packages/backend/src/x-poster.ts"]
|
|
},
|
|
{
|
|
"file": "app/ws/__init__.py",
|
|
"symbols": [],
|
|
"status": "namespace-replaced",
|
|
"replacement": []
|
|
},
|
|
{
|
|
"file": "app/ws/manager.py",
|
|
"symbols": ["ConnectionManager"],
|
|
"status": "ported-source-only",
|
|
"replacement": [
|
|
"packages/backend/src/events.ts",
|
|
"packages/backend/src/bridge.ts",
|
|
"apps/api/src/app.ts"
|
|
]
|
|
}
|
|
]
|
|
}
|