Align branding, prompts, and deployment tooling
This commit is contained in:
@@ -25,6 +25,36 @@ def _default_start(years: int = 2) -> str:
|
||||
return (datetime.now(timezone.utc).date() - timedelta(days=years * 366)).isoformat()
|
||||
|
||||
|
||||
def _max_news_date(news_rows: Iterable[dict]) -> str | None:
|
||||
dates = [
|
||||
str(item.get("published_utc") or "").strip()[:10]
|
||||
for item in news_rows
|
||||
if str(item.get("published_utc") or "").strip()
|
||||
]
|
||||
dates = [value for value in dates if value]
|
||||
return max(dates) if dates else None
|
||||
|
||||
|
||||
def _effective_last_news_fetch(
|
||||
market_store: MarketStore,
|
||||
*,
|
||||
ticker: str,
|
||||
end_date: str,
|
||||
watermark_value: str | None,
|
||||
) -> str | None:
|
||||
"""Clamp stale/future watermarks to the latest actually stored news date."""
|
||||
raw = str(watermark_value or "").strip()[:10]
|
||||
if not raw:
|
||||
return None
|
||||
if raw <= end_date:
|
||||
return raw
|
||||
|
||||
latest_stored = market_store.get_latest_news_date(ticker)
|
||||
if latest_stored and latest_stored <= end_date:
|
||||
return latest_stored
|
||||
return end_date
|
||||
|
||||
|
||||
def _normalize_provider_news_rows(ticker: str, news_items: Iterable[Any]) -> list[dict]:
|
||||
rows: list[dict] = []
|
||||
for item in news_items:
|
||||
@@ -80,7 +110,11 @@ def ingest_ticker_history(
|
||||
price_count = market_store.upsert_ohlc(ticker, ohlc_rows, source="polygon")
|
||||
news_count = market_store.upsert_news(ticker, news_rows, source="polygon")
|
||||
aligned_count = align_news_for_symbol(market_store, ticker)
|
||||
market_store.update_fetch_watermark(symbol=ticker, price_date=end, news_date=end)
|
||||
market_store.update_fetch_watermark(
|
||||
symbol=ticker,
|
||||
price_date=end,
|
||||
news_date=_max_news_date(news_rows),
|
||||
)
|
||||
|
||||
return {
|
||||
"symbol": ticker,
|
||||
@@ -108,9 +142,15 @@ def update_ticker_incremental(
|
||||
if watermarks.get("last_price_fetch")
|
||||
else _default_start()
|
||||
)
|
||||
effective_last_news_fetch = _effective_last_news_fetch(
|
||||
market_store,
|
||||
ticker=ticker,
|
||||
end_date=end,
|
||||
watermark_value=watermarks.get("last_news_fetch"),
|
||||
)
|
||||
start_news = (
|
||||
(datetime.fromisoformat(watermarks["last_news_fetch"]) + timedelta(days=1)).date().isoformat()
|
||||
if watermarks.get("last_news_fetch")
|
||||
(datetime.fromisoformat(effective_last_news_fetch) + timedelta(days=1)).date().isoformat()
|
||||
if effective_last_news_fetch
|
||||
else _default_start()
|
||||
)
|
||||
|
||||
@@ -130,7 +170,7 @@ def update_ticker_incremental(
|
||||
market_store.update_fetch_watermark(
|
||||
symbol=ticker,
|
||||
price_date=end if ohlc_rows or watermarks.get("last_price_fetch") else None,
|
||||
news_date=end if news_rows or watermarks.get("last_news_fetch") else None,
|
||||
news_date=_max_news_date(news_rows),
|
||||
)
|
||||
|
||||
return {
|
||||
@@ -155,9 +195,15 @@ def refresh_news_incremental(
|
||||
market_store = store or MarketStore()
|
||||
watermarks = market_store.get_ticker_watermarks(ticker)
|
||||
end = end_date or _today_utc()
|
||||
effective_last_news_fetch = _effective_last_news_fetch(
|
||||
market_store,
|
||||
ticker=ticker,
|
||||
end_date=end,
|
||||
watermark_value=watermarks.get("last_news_fetch"),
|
||||
)
|
||||
start_news = (
|
||||
(datetime.fromisoformat(watermarks["last_news_fetch"]) + timedelta(days=1)).date().isoformat()
|
||||
if watermarks.get("last_news_fetch")
|
||||
(datetime.fromisoformat(effective_last_news_fetch) + timedelta(days=1)).date().isoformat()
|
||||
if effective_last_news_fetch
|
||||
else _default_start()
|
||||
)
|
||||
|
||||
@@ -182,7 +228,7 @@ def refresh_news_incremental(
|
||||
aligned_count = align_news_for_symbol(market_store, ticker)
|
||||
market_store.update_fetch_watermark(
|
||||
symbol=ticker,
|
||||
news_date=end if news_rows or watermarks.get("last_news_fetch") else None,
|
||||
news_date=_max_news_date(news_rows),
|
||||
)
|
||||
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user