Files
MoFin/venv/lib/python3.12/site-packages/alphasift/result_schema.py
T
知微 fa45d8aa5f fix: 小果地址统一node122(兼容LAN+EasyTier)
- health_checklist.json: 192.168.1.122→node122
- ocr_client.py: docstring IP→node122
- docs/market-data-requirements.md: IP→node122
- 所有API调用通过ProxyHandler({})绕过系统代理
  Privoxy对node122:18003返回500,直连正常
2026-06-30 02:56:35 +08:00

111 lines
3.0 KiB
Python

# -*- coding: utf-8 -*-
"""Stable machine-readable result schema metadata."""
from __future__ import annotations
SCREEN_RESULT_SCHEMA_VERSION = 1
SCREEN_RESULT_SCHEMA: dict[str, object] = {
"schema_version": SCREEN_RESULT_SCHEMA_VERSION,
"object": "ScreenResult",
"top_level_fields": [
"strategy",
"market",
"strategy_version",
"strategy_category",
"snapshot_count",
"after_filter_count",
"picks",
"run_id",
"llm_ranked",
"llm_coverage",
"llm_parse_errors",
"degradation",
"snapshot_source",
"source_errors",
"deep_analysis_requested",
"post_analyzers",
"daily_enriched",
"daily_enrich_count",
"risk_enabled",
"portfolio_diversity_enabled",
"portfolio_concentration_notes",
"created_at",
],
"pick_fields": [
"rank",
"code",
"name",
"final_score",
"screen_score",
"factor_scores",
"ranking_reason",
"risk_summary",
"risk_score",
"risk_level",
"risk_flags",
"portfolio_penalty",
"portfolio_flags",
"industry",
"concepts",
"board_heat_score",
"board_heat_summary",
"daily_quality_score",
"daily_quality_flags",
"daily_source",
"post_analysis_status",
"post_analysis_summaries",
"post_analysis_score_deltas",
"post_analysis_tags",
"dsa_context",
"dsa_news",
"dsa_analysis_summary",
"deep_analysis_status",
"deep_analysis_query_id",
"deep_analysis_summary",
"deep_analysis_error",
"deep_analysis_signal_score",
"deep_analysis_sentiment_score",
"deep_analysis_operation_advice",
"deep_analysis_trend_prediction",
"deep_analysis_risk_flags",
],
"ui_card_fields": {
"identity": ["rank", "code", "name", "final_score", "screen_score"],
"source_health": [
"snapshot_source",
"source_errors",
"daily_source",
"daily_quality_flags",
],
"risk": ["risk_level", "risk_flags", "portfolio_flags", "risk_summary"],
"watch": [
"llm_watch_items",
"llm_invalidators",
"deep_analysis_operation_advice",
],
"post_analysis": [
"post_analysis_status",
"post_analysis_summaries",
"post_analysis_tags",
],
},
"non_goals": [
"AlphaSift does not execute trades.",
"AlphaSift does not provide full portfolio accounting.",
"DSA is optional and must not be required for core screening.",
],
}
def screen_result_schema() -> dict[str, object]:
"""Return a copy of the stable ScreenResult schema metadata."""
return {
key: value.copy()
if isinstance(value, dict)
else list(value)
if isinstance(value, list)
else value
for key, value in SCREEN_RESULT_SCHEMA.items()
}