Files
Cheng Zhou 3e77127687
Client Quality Gates / Shared client and Web (push) Has been cancelled
Client Quality Gates / macOS Desktop (push) Has been cancelled
功能(提醒):统一项目提醒中心与桌面通知链路
增加通用提醒状态、数据库迁移和定时同步,覆盖风险时效、文件回执、项目里程碑、访视窗口与协作申请。

新增网页端和桌面端提醒中心、真实投递诊断与固定隐私通知正文,并补齐登录来源聚合、测试和说明文档。
2026-07-16 16:50:34 +08:00

75 lines
1.7 KiB
Python

from __future__ import annotations
import uuid
from datetime import datetime
from pydantic import BaseModel, ConfigDict
class NotificationItem(BaseModel):
id: uuid.UUID
document_id: uuid.UUID
version_id: uuid.UUID
document_title: str
document_no: str | None = None
version_no: str
change_summary: str | None = None
effective_at: datetime | None = None
created_at: datetime
study_id: uuid.UUID | None = None
study_name: str | None = None
delivered_at: datetime | None = None
read_at: datetime | None = None
model_config = ConfigDict(from_attributes=True)
class DesktopNotificationSubscriptionRead(BaseModel):
enabled: bool
enabled_at: datetime | None = None
class DesktopNotificationSubscriptionUpdate(BaseModel):
enabled: bool
class DesktopNotificationClaimRequest(BaseModel):
limit: int = 20
class GeneralNotificationRead(BaseModel):
id: uuid.UUID
study_id: uuid.UUID
recipient_id: uuid.UUID
category: str
priority: str
title: str
message: str
action_path: str | None = None
source_type: str
source_id: str
requires_action: bool = True
due_at: datetime | None = None
read_at: datetime | None = None
resolved_at: datetime | None = None
created_at: datetime
model_config = ConfigDict(from_attributes=True)
class DesktopNotificationClaimResponse(BaseModel):
claim_token: uuid.UUID | None = None
lease_expires_at: datetime | None = None
items: list[GeneralNotificationRead]
class DesktopNotificationAckRequest(BaseModel):
claim_token: uuid.UUID
delivered_ids: list[uuid.UUID]
class GeneralNotificationFeed(BaseModel):
unread_count: int
total_count: int
items: list[GeneralNotificationRead]