```
feat: 添加飞书用户模块和订阅功能支持 - 新增feishu_users模块用于处理飞书用户身份验证和权限管理 - 新增subscriptions模块用于处理订阅相关功能 - 新增personalization模块用于个性化服务 - 在alembic迁移配置中注册新的模型模块 - 在API路由器中添加feishu_users和subscriptions路由 - 实现事件调度服务的改进,包括错误处理和状态更新优化 - 添加飞书命令处理的权限检查机制 - 实现飞书应用票据事件处理 - 改进审计日志记录功能 ```
This commit is contained in:
@@ -46,14 +46,23 @@ def create_scheduler(app: FastAPI | None = None) -> Any:
|
||||
enqueue_market_report,
|
||||
enqueue_project_weekly_push,
|
||||
enqueue_risk_progress_push,
|
||||
enqueue_subscription_cycle,
|
||||
enqueue_work_daily_push,
|
||||
enqueue_work_weekly_push,
|
||||
)
|
||||
from app.modules.observability.service import ObservabilityService
|
||||
from app.modules.personalization.services import ConversationService
|
||||
from app.modules.reports.services import ReportService
|
||||
|
||||
settings = get_settings()
|
||||
scheduler = BackgroundScheduler(timezone="Asia/Shanghai")
|
||||
scheduler = BackgroundScheduler(
|
||||
timezone="Asia/Shanghai",
|
||||
job_defaults={
|
||||
"coalesce": True,
|
||||
"max_instances": 1,
|
||||
"misfire_grace_time": 300,
|
||||
},
|
||||
)
|
||||
|
||||
def deliver_report(
|
||||
state_key: str,
|
||||
@@ -189,7 +198,19 @@ def create_scheduler(app: FastAPI | None = None) -> Any:
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
if settings.lifecycle_pipeline_enabled and not settings.read_only_mode:
|
||||
def run_subscription_cycle() -> None:
|
||||
dispatch = enqueue_subscription_cycle(actor=ActorValue.SCHEDULER)
|
||||
_set_state(app, "last_subscription_cycle", dispatch)
|
||||
|
||||
def run_personalization_retention_cleanup() -> None:
|
||||
db = SessionLocal()
|
||||
try:
|
||||
deleted = ConversationService(db).cleanup_expired_globally()
|
||||
_set_state(app, "last_personalization_retention_cleanup", deleted)
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
if settings.lifecycle_pipeline_enabled:
|
||||
scheduler.add_job(
|
||||
run_daily_lifecycle,
|
||||
trigger="cron",
|
||||
@@ -266,7 +287,7 @@ def create_scheduler(app: FastAPI | None = None) -> Any:
|
||||
id="event_dispatch",
|
||||
replace_existing=True,
|
||||
)
|
||||
if settings.market_analysis_enabled and not settings.read_only_mode:
|
||||
if settings.market_analysis_enabled:
|
||||
scheduler.add_job(
|
||||
run_market_premarket,
|
||||
trigger="cron",
|
||||
@@ -301,9 +322,23 @@ def create_scheduler(app: FastAPI | None = None) -> Any:
|
||||
id="scheduler_heartbeat",
|
||||
replace_existing=True,
|
||||
)
|
||||
if settings.feishu_user_features_enabled:
|
||||
scheduler.add_job(
|
||||
run_subscription_cycle,
|
||||
trigger="interval",
|
||||
minutes=1,
|
||||
id="subscription_delivery_cycle",
|
||||
replace_existing=True,
|
||||
)
|
||||
scheduler.add_job(
|
||||
run_personalization_retention_cleanup,
|
||||
trigger="interval",
|
||||
minutes=1,
|
||||
id="personalization_retention_cleanup",
|
||||
replace_existing=True,
|
||||
)
|
||||
if (
|
||||
not settings.lifecycle_pipeline_enabled
|
||||
and not settings.read_only_mode
|
||||
and settings.legacy_sync_enabled
|
||||
and settings.legacy_project_query
|
||||
):
|
||||
@@ -317,7 +352,6 @@ def create_scheduler(app: FastAPI | None = None) -> Any:
|
||||
)
|
||||
if (
|
||||
not settings.lifecycle_pipeline_enabled
|
||||
and not settings.read_only_mode
|
||||
and settings.legacy_sync_enabled
|
||||
and settings.legacy_task_query
|
||||
):
|
||||
|
||||
Reference in New Issue
Block a user