Files
server-core/app/api/schemas/operator.py
T
Pine 866f82dbc4 feat(admin): 运营端培训业务 P0 — 新增 /admin/courses|activities|bookings|tests
新增 courses 表(app/training/db.py SEED_COURSES),经 training_admin_bridge 桥接
app.training 的课程/活动(events)/报名(bookings)/测评(tests) 数据为统一运营视图;
schemas 增 Course/Activity/Booking/Test 请求模型;rbac_operator.py 增四件套端点
(含 create/status/patch),走 operator 角色 + action:* 权限码 + write_audit。
2026-08-24 16:57:13 +08:00

121 lines
2.6 KiB
Python

from pydantic import BaseModel
class TaskCreateRequest(BaseModel):
title: str
category: str = ""
sub_category: str = ""
description: str = ""
mode: str = "grab"
budget_min: int = 0
budget_max: int = 0
deadline: str = ""
publisher_name: str = ""
class TaskStatusRequest(BaseModel):
status: str # review/published/completed/cancelled
class ProviderCreateRequest(BaseModel):
name: str
category: str = ""
level: str = "certified"
status: str = "pending"
contact: str = ""
class ProviderUpdateRequest(BaseModel):
level: str | None = None
status: str | None = None
contact: str | None = None
class ContentCreateRequest(BaseModel):
type: str = "news"
title: str
summary: str = ""
body: str = ""
status: str = "draft"
class ContentStatusRequest(BaseModel):
status: str # published/offline/draft
class ConfigUpdateRequest(BaseModel):
value: str
description: str = ""
# ── 任务管理 ──────────────────────────────────────────────────────────────
# ── 算力对接(compute-engine)─────────────────────────────────────────────
# ── 培训业务四件套(课程 / 活动 / 报名 / 测评)→ 桥接 app.training ─────────
class CourseCreateRequest(BaseModel):
title: str
category: str = ""
level: str = ""
subtitle: str = ""
desc: str = ""
price: float = 0
status: str = "draft"
start_at: str = ""
end_at: str = ""
venue: str = ""
quota: int = 0
image: str = ""
host: str = ""
class CourseStatusRequest(BaseModel):
status: str # draft/published/ended/offline
class ActivityStatusRequest(BaseModel):
status: str # open/invite/pending/done/ended
class BookingUpdateRequest(BaseModel):
status: str | None = None
audit_status: str | None = None
note: str | None = None
class TestCreateRequest(BaseModel):
title: str
category: str = ""
pass_score: int = 0
question_count: int = 30
class TestStatusRequest(BaseModel):
status: str # enabled/disabled
class ComputePingResponse(BaseModel):
ok: bool
version: str | None = None
detail: str | None = None
class ComputeProvisionRequest(BaseModel):
user_id: str
class ComputeProvisionResponse(BaseModel):
engine_user_id: str | None = None
engine_username: str | None = None
pat: str | None = None
created: bool = False
detail: str | None = None