后端: - 拆分出 agent_service, runtime_service, trading_service, news_service - Gateway 模块化拆分 (gateway_*.py) - 添加 domains/ 领域层 - 新增 control_client, runtime_client - 更新 start-dev.sh 支持 split 服务模式 前端: - 完善 API 服务层 (newsApi, tradingApi) - 更新 vite.config.js - Explain 组件优化 测试: - 添加多个服务 app 测试 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
107 lines
2.3 KiB
Python
107 lines
2.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""Trading domain helpers shared by app surfaces and gateway fallbacks."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
from backend.services.market import MarketService
|
|
from backend.tools.data_tools import (
|
|
get_company_news,
|
|
get_financial_metrics,
|
|
get_insider_trades,
|
|
get_market_cap,
|
|
get_prices,
|
|
search_line_items,
|
|
)
|
|
|
|
|
|
def get_prices_payload(*, ticker: str, start_date: str, end_date: str) -> dict[str, Any]:
|
|
return {
|
|
"ticker": ticker,
|
|
"prices": get_prices(ticker, start_date, end_date),
|
|
}
|
|
|
|
|
|
def get_financials_payload(
|
|
*,
|
|
ticker: str,
|
|
end_date: str,
|
|
period: str = "ttm",
|
|
limit: int = 10,
|
|
) -> dict[str, Any]:
|
|
return {
|
|
"financial_metrics": get_financial_metrics(
|
|
ticker=ticker,
|
|
end_date=end_date,
|
|
period=period,
|
|
limit=limit,
|
|
)
|
|
}
|
|
|
|
|
|
def get_news_payload(
|
|
*,
|
|
ticker: str,
|
|
end_date: str,
|
|
start_date: str | None = None,
|
|
limit: int = 1000,
|
|
) -> dict[str, Any]:
|
|
return {
|
|
"news": get_company_news(
|
|
ticker=ticker,
|
|
end_date=end_date,
|
|
start_date=start_date,
|
|
limit=limit,
|
|
)
|
|
}
|
|
|
|
|
|
def get_insider_trades_payload(
|
|
*,
|
|
ticker: str,
|
|
end_date: str,
|
|
start_date: str | None = None,
|
|
limit: int = 1000,
|
|
) -> dict[str, Any]:
|
|
return {
|
|
"insider_trades": get_insider_trades(
|
|
ticker=ticker,
|
|
end_date=end_date,
|
|
start_date=start_date,
|
|
limit=limit,
|
|
)
|
|
}
|
|
|
|
|
|
def get_market_status_payload() -> dict[str, Any]:
|
|
market_service = MarketService(tickers=[])
|
|
return market_service.get_market_status()
|
|
|
|
|
|
def get_market_cap_payload(*, ticker: str, end_date: str) -> dict[str, Any]:
|
|
return {
|
|
"ticker": ticker,
|
|
"end_date": end_date,
|
|
"market_cap": get_market_cap(ticker, end_date),
|
|
}
|
|
|
|
|
|
def get_line_items_payload(
|
|
*,
|
|
ticker: str,
|
|
line_items: list[str],
|
|
end_date: str,
|
|
period: str = "ttm",
|
|
limit: int = 10,
|
|
) -> dict[str, Any]:
|
|
return {
|
|
"search_results": search_line_items(
|
|
ticker=ticker,
|
|
line_items=line_items,
|
|
end_date=end_date,
|
|
period=period,
|
|
limit=limit,
|
|
)
|
|
}
|