""" 用户协议 & 隐私政策 API """ from fastapi import APIRouter, Depends from pydantic import BaseModel from sqlalchemy.orm import Session from datetime import datetime from app.core.database import get_db from app.core.exceptions import ConflictError from app.api.auth import get_current_user from app.models.user import User router = APIRouter( prefix="/api/v1/legal", tags=["legal"], ) # ─── 协议版本 ─────────────────────────────────────────────── CURRENT_TERMS_VERSION = "1.0" CURRENT_PRIVACY_VERSION = "1.0" # ─── 内容 ─────────────────────────────────────────────────── PRIVACY_POLICY = """# 天工智能体平台 隐私政策 **更新日期:2026年7月1日** **生效日期:2026年7月1日** ## 一、信息收集 1. 您在注册账户时提供的个人信息,包括用户名、邮箱地址和手机号码。 2. 您在使用智能体对话功能时产生的对话内容和交互记录。 3. 设备信息:我们可能收集您的设备型号、操作系统版本、设备标识符等信息用于优化服务。 ## 二、信息使用 1. 为您提供智能体对话、语音识别、推送通知等核心服务。 2. 改善产品质量和用户体验,包括对话模型的训练和优化。 3. 提供客户支持和故障排除。 ## 三、信息存储和保护 1. 您的数据存储在中国境内的服务器上。 2. 我们采用加密传输、访问控制、数据备份等安全措施保护您的信息。 3. 对话数据在您主动删除或账号注销后将在30天内清除。 ## 四、信息共享 1. 未经您的明确同意,我们不会将您的个人信息共享给第三方。 2. 法律法规要求披露的除外。 ## 五、您的权利 1. 您可以随时查看、修改您的个人信息。 2. 您可以导出您的对话数据。 3. 您可以注销账号并要求删除数据。 ## 六、联系我们 如有隐私相关问题,请联系:support@tiangong.ai """ USER_AGREEMENT = """# 天工智能体平台 用户协议 **更新日期:2026年7月1日** **生效日期:2026年7月1日** ## 一、总则 1. 天工智能体平台(以下简称"本平台")是一个提供AI智能体服务的在线平台。 2. 您注册和使用本平台即表示您已阅读、理解并同意本协议的全部条款。 ## 二、账号管理 1. 您应当提供真实、准确的注册信息。 2. 您对账号下的所有活动负责,请妥善保管账号和密码。 3. 您不得将账号转让、出借或出售给他人。 ## 三、使用规范 1. 您不得利用本平台从事违法活动,包括但不限于: - 生成、传播违法或有害内容 - 侵犯他人知识产权或隐私权 - 干扰或破坏平台正常运行 2. 您不得对智能体进行恶意引导、注入攻击或其他危害系统安全的行为。 ## 四、知识产权 1. 平台本身的软件、界面设计、商标等知识产权归平台所有。 2. 您创建的智能体配置归您所有。 3. 您与智能体对话产生的内容归您所有。 ## 五、免责声明 1. AI生成内容仅供参考,不构成专业建议。 2. 平台不对AI生成内容的准确性、完整性负责。 3. 因不可抗力或第三方原因导致的服务中断,平台不承担责任。 ## 六、协议变更 1. 我们可能会不时更新本协议,更新后会通过应用内通知告知。 2. 如果您不同意更新后的条款,您可以停止使用本平台并注销账号。 ## 七、法律适用与争议解决 1. 本协议适用中华人民共和国法律。 2. 因本协议产生的争议,双方应协商解决;协商不成的,提交平台所在地法院管辖。 """ # ─── Response/Request Models ────────────────────────────────── class LegalContentResponse(BaseModel): content: str version: str class AgreeRequest(BaseModel): terms_version: str | None = None privacy_version: str | None = None class AgreeResponse(BaseModel): message: str agreed_terms: bool agreed_terms_version: str # ─── Endpoints ──────────────────────────────────────────────── @router.get("/privacy", response_model=LegalContentResponse) async def get_privacy_policy(): """获取隐私政策内容。""" return LegalContentResponse(content=PRIVACY_POLICY, version=CURRENT_PRIVACY_VERSION) @router.get("/terms", response_model=LegalContentResponse) async def get_user_agreement(): """获取用户协议内容。""" return LegalContentResponse(content=USER_AGREEMENT, version=CURRENT_TERMS_VERSION) @router.post("/agree", response_model=AgreeResponse) async def agree_terms( body: AgreeRequest, current_user: User = Depends(get_current_user), db: Session = Depends(get_db), ): """记录用户同意协议。""" current_user.agreed_terms = True current_user.agreed_terms_version = body.terms_version or CURRENT_TERMS_VERSION current_user.agreed_terms_at = datetime.utcnow() db.commit() return AgreeResponse( message="协议同意已记录", agreed_terms=True, agreed_terms_version=current_user.agreed_terms_version, )