feat: 完善周期报告与用户行为分析
- 支持可配置周报月报模板与登录后异步补生成\n- 增加用户行为埋点和后台分析页面\n- 移除主题额度并保留实修回顾结算\n- 修复历史会话续聊上下文丢失
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from fastapi import APIRouter, Depends
|
||||
from fastapi import APIRouter, Depends, Query
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.core.database import get_db
|
||||
@@ -10,8 +10,8 @@ from app.models.user import User
|
||||
from app.schemas.user import UserProfile
|
||||
from app.services.entitlement_service import EntitlementService, entitlement_dict
|
||||
from app.services.growth_profile_service import GrowthProfileService, growth_profile_dict
|
||||
from app.services.periodic_report_service import PeriodicReportService, periodic_report_dict
|
||||
from app.services.topic_session_service import TopicSessionService
|
||||
from app.services.periodic_report_service import PeriodicReportService, periodic_report_user_dict
|
||||
from app.services.periodic_report_lazy_service import PeriodicReportLazyService
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -22,11 +22,7 @@ def profile(
|
||||
current_user: User = Depends(get_current_user),
|
||||
) -> dict:
|
||||
data = UserProfile.model_validate(current_user).model_dump(mode="json")
|
||||
view = EntitlementService.active_entitlement(
|
||||
db,
|
||||
current_user,
|
||||
monthly_topic_used=TopicSessionService.monthly_used_count(db, current_user.id),
|
||||
)
|
||||
view = EntitlementService.active_entitlement(db, current_user)
|
||||
data["entitlement"] = entitlement_dict(view)
|
||||
return api_success(data)
|
||||
|
||||
@@ -67,13 +63,20 @@ def growth_profile(
|
||||
@router.get("/periodic-report/list")
|
||||
def periodic_reports(
|
||||
limit: int = 20,
|
||||
ensure: bool = Query(default=False),
|
||||
db: Session = Depends(get_db),
|
||||
current_user: User = Depends(get_current_user),
|
||||
) -> dict:
|
||||
entitlement = EntitlementService.active_entitlement(db, current_user)
|
||||
if not entitlement.enable_periodic_reports:
|
||||
return api_success([])
|
||||
if ensure:
|
||||
PeriodicReportLazyService.enqueue_missing_reports(db, user=current_user)
|
||||
db.commit()
|
||||
reports = PeriodicReportService.list_user_reports(
|
||||
db,
|
||||
user_id=current_user.id,
|
||||
limit=max(1, min(limit, 50)),
|
||||
statuses=("success",),
|
||||
statuses=("pending", "running", "success", "failed", "empty"),
|
||||
)
|
||||
return api_success([periodic_report_dict(item) for item in reports])
|
||||
return api_success([periodic_report_user_dict(item) for item in reports])
|
||||
|
||||
Reference in New Issue
Block a user