Files
shutiaozhao127-boop cfdeeb5e41 chore: 初始化项目结构并添加基础配置文件
添加后端API和前端项目的初始目录结构,包括应用层模块、工具模块和模型定义
配置前后端的.dockerignore文件以排除开发环境文件
添加前端样式文件,包括字体、Tailwind CSS和主题配置
初始化Python虚拟环境中的类型标记文件
2026-04-01 16:55:24 +08:00

71 lines
2.3 KiB
Python

from fastapi import APIRouter, Depends, HTTPException
from pydantic import BaseModel
from app.middleware.auth import get_current_user
from app.models.analysis import Analysis
from app.models.report import Report
from app.models.user import User
from app.utils.helpers import parse_object_id, mask_name
router = APIRouter()
class ShareOptions(BaseModel):
privacy_mode: bool = True # 隐私模式,脱敏个人信息
include_details: bool = False # 是否包含详细数据
@router.post("/{report_id}/generate")
async def generate_share_data(
report_id: str,
options: ShareOptions = ShareOptions(privacy_mode=True, include_details=True),
user: User = Depends(get_current_user),
):
"""生成分享数据"""
oid = parse_object_id(report_id)
report = await Report.get(oid)
if not report or report.user_id != user.id:
raise HTTPException(status_code=404, detail="报告不存在")
analysis = await Analysis.find_one(Analysis.report_id == report.id)
if not analysis:
raise HTTPException(status_code=404, detail="暂无解读结果")
# Build share data
share_data = {
"report_type": report.report_type,
"pregnancy_week": report.pregnancy_week,
"overall_status": analysis.overall_status,
"risk_level": analysis.risk_level,
"overall_summary": analysis.overall_summary,
"emotional_summary": analysis.emotional_summary,
"action_items": [a.model_dump() for a in analysis.action_items],
"tips": analysis.tips,
"categories": [
{
"category": cat.category,
"status": cat.status,
"indicators": [
{
"name": ind.name,
"nickname": ind.nickname,
"value": ind.value,
"status": ind.status,
"what_is_it": ind.what_is_it,
"impact": ind.impact,
"suggestion": ind.suggestion,
}
for ind in cat.indicators
],
}
for cat in analysis.categories
],
}
if not options.privacy_mode:
share_data["user_name"] = user.name
else:
share_data["user_name"] = mask_name(user.name)
return {"share_data": share_data}