- SignalRules(买入 rank 阈值/趋势 MA/动量 + 卖出区间/破位警示)+ SignalEvent (BUY/WATCH/SELL,score/price/trigger_reason 可解释)+ SignalResult/Meta - quant/signal.generate_signals:与选股同一评分引擎取全市场 rank,按规则分类输出 - signal_snapshot/signal_event 表(migration d8e0b2f3c4d5,MySQL 已应用)+ Repo - SignalService + POST /api/signals(同步+落库)、GET 详情/列表 - tests/test_signals.py(引擎分类/排序/破位不 BUY、service、API 提交读回);全量 pytest 通过
20 lines
566 B
Python
20 lines
566 B
Python
"""Signal Repository Protocol(M8.1 落库)。"""
|
||
|
||
from __future__ import annotations
|
||
|
||
from datetime import date
|
||
from typing import Protocol
|
||
|
||
from app.domain.entities.signal import SignalMeta, SignalResult
|
||
|
||
|
||
class SignalRepository(Protocol):
|
||
def save(self, signal_id: str, result: SignalResult) -> None:
|
||
"""snapshot 一行 + 事件逐行(同事务,调用方 commit)。"""
|
||
|
||
def get(self, signal_id: str) -> SignalResult | None: ...
|
||
|
||
def list_recent(
|
||
self, as_of: date | None = None, limit: int = 20
|
||
) -> list[SignalMeta]: ...
|