Files
daily_stock_analysis/api/deps.py
mumu f2e778c058 feat: 支持客户端多时间定时推送 (#1731)
* feat: support runtime multi-time scheduling

* fix(review-feedback-1731): 修复 and add the missing workers value here, likely None to preserve the

* fix: refine scheduler settings UI

* fix: compact scheduler time inputs

* fix(review-feedback-1731): Refresh scheduler status after saving changes

* fix(review-feedback-1731): Refresh scheduler status after env imports

* fix(review-feedback-1731): Do not mark swallowed analysis failures as success

* fix: align serve scheduler ownership

* fix: preserve runtime scheduler startup semantics

* fix: ignore immediate run when cli owns schedule

* fix(review-feedback-1731): main.py + api/app.py:--serve-only 下虽然 runtime schedule requested 被置为

* fix(review-feedback-1731): apps/dsa-desktop/main.js / main.py / api/app.py / src/services/runtime

* fix: preserve runtime scheduler ownership semantics

* fix(review-feedback-1731): 修正 Desktop 启动会自动分析/调度,以及 Web 调度开关在 runtime 状态与持久配置不一致时无法触发 reconcile 的问题

* fix: remove duplicate scheduler save diff variable

* fix: allow empty schedule times config

* fix: reject busy scheduler run-now requests

* fix(review-feedback-1731): 确认并修正 runtime scheduler 重建时可能重复注册 AGENT EVENT MONITOR ENABLED 后台任务的问题

* fix: keep runtime event monitor idempotent

* fix: preserve runtime scheduler CLI flags

* fix(review-feedback-1731): preserve schedule CLI flags in runtime runs

* fix(review-feedback-1731): 修正 --serve --schedule / --serve + SCHEDULE ENABLED=true 下 API

* fix(review-feedback-1731): 修复当前 diff 引入的运行时并发风险和 Uvicorn 兼容风险
2026-06-21 22:24:19 +08:00

82 lines
2.1 KiB
Python

# -*- coding: utf-8 -*-
"""
===================================
API 依赖注入模块
===================================
职责:
1. 提供数据库 Session 依赖
2. 提供配置依赖
3. 提供服务层依赖
"""
from typing import Generator
from fastapi import Request
from sqlalchemy.orm import Session
from src.storage import DatabaseManager
from src.config import get_config, Config
from src.services.system_config_service import SystemConfigService
from src.services.runtime_scheduler import RuntimeSchedulerService
def get_db() -> Generator[Session, None, None]:
"""
获取数据库 Session 依赖
使用 FastAPI 依赖注入机制,确保请求结束后自动关闭 Session
Yields:
Session: SQLAlchemy Session 对象
Example:
@router.get("/items")
async def get_items(db: Session = Depends(get_db)):
...
"""
db_manager = DatabaseManager.get_instance()
session = db_manager.get_session()
try:
yield session
finally:
session.close()
def get_config_dep() -> Config:
"""
获取配置依赖
Returns:
Config: 配置单例对象
"""
return get_config()
def get_database_manager() -> DatabaseManager:
"""
获取数据库管理器依赖
Returns:
DatabaseManager: 数据库管理器单例对象
"""
return DatabaseManager.get_instance()
def get_system_config_service(request: Request) -> SystemConfigService:
"""Get app-lifecycle shared SystemConfigService instance."""
service = getattr(request.app.state, "system_config_service", None)
if service is None:
service = SystemConfigService()
request.app.state.system_config_service = service
return service
def get_runtime_scheduler_service(request: Request) -> RuntimeSchedulerService:
"""Get app-lifecycle shared RuntimeSchedulerService instance."""
service = getattr(request.app.state, "runtime_scheduler_service", None)
if service is None:
service = RuntimeSchedulerService()
request.app.state.runtime_scheduler_service = service
return service