feat(api): expose CC unread count and mark-read endpoints.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
zlwuandCursor committed 2026-08-06 12:11:14 +08:00
1 parent 7f8c163c47
commit fbfbaa6d17
1 file changed
+70 -1
+70 -1
View File
@@ -490,6 +490,11 @@ class OaTaskActionBody(BaseModel):
comment: Optional[str] = None
class OaCcReadBatchBody(BaseModel):
model_config = ConfigDict(populate_by_name=True)
ids: List[str] = Field(default_factory=list)
class OaAddSignBody(BaseModel):
model_config = ConfigDict(populate_by_name=True)
user_ids: List[str] = Field(default_factory=list, alias="userIds")
@@ -695,9 +700,69 @@ async def get_related_summaries(
return success_response({"list": items})
@router.get("/tasks/cc/unread-count")
async def oa_cc_unread_count(
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
from app.services.oa_engine import OaEngineError, count_cc_unread
try:
tenant_no = _get_tenant_no(db, user)
n = count_cc_unread(
db, tenant_no=tenant_no, user_id=user.get("user_id") or ""
)
return success_response({"count": int(n)})
except OaEngineError as e:
return error_response(400, str(e))
@router.post("/tasks/cc/read-batch")
async def oa_cc_read_batch(
body: OaCcReadBatchBody,
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
from app.services.oa_engine import OaEngineError, mark_cc_tasks_read_batch
try:
tenant_no = _get_tenant_no(db, user)
data = mark_cc_tasks_read_batch(
db,
tenant_no=tenant_no,
user_id=user.get("user_id") or "",
ids=body.ids or [],
)
return success_response(data, message="已标记已读")
except OaEngineError as e:
return error_response(400, str(e))
@router.post("/tasks/{task_id}/read")
async def oa_task_mark_read(
task_id: str,
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
from app.services.oa_engine import OaEngineError, mark_cc_task_read
try:
tenant_no = _get_tenant_no(db, user)
data = mark_cc_task_read(
db,
tenant_no=tenant_no,
user_id=user.get("user_id") or "",
task_id=task_id,
)
return success_response(data, message="已标记已读")
except OaEngineError as e:
return error_response(400, str(e))
@router.get("/tasks/{kind}")
async def list_oa_tasks(
kind: str,
readStatus: Optional[str] = Query(None, alias="readStatus"),
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
@@ -706,7 +771,11 @@ async def list_oa_tasks(
try:
tenant_no = _get_tenant_no(db, user)
items = list_tasks(
db, tenant_no=tenant_no, user_id=user.get("user_id") or "", kind=kind
db,
tenant_no=tenant_no,
user_id=user.get("user_id") or "",
kind=kind,
read_status=readStatus,
)
return success_response({"list": items})
except OaEngineError as e: