ea904d3a50
- Task 加 published_at/delivery_days/headcount/exclusive/publisher_id/category_id;新增 TaskCategory 分类字典表(35 类)。
- mode 归一 grab/bid/assign/recommend(旧 designated→assign、dispatch→recommend);TaskService 加 assign/recommend/select_recommend,claim 支持独占/限额、published+claimed 均可抢(多人)。
- TaskClaim 支持 source=assign/recommend、status=assigned/recommended/withdrawn + count_active_by_task;TaskCategoryRepository;Database 装配 task_categories。
- 端口:operator GET /admin/task-categories + POST tasks/{id}/assign|recommend|select;opc 同;park /api/tasks 返回 mode/deadline/delivery_days/headcount/exclusive/publisher_name。
- 迁移 0009(tasks 加列+task_categories)已应用+stamp;seed 35 分类字典 + task 新字段(含独占/推荐演示) + 补种已初始化库。
- 测试 test_task_system.py(独占/限额/指派/推荐/list_published/publish/category)+补齐 test_task_claim 语义, 15 passed。
Co-Authored-By: Claude <noreply@anthropic.com>
44 lines
757 B
Python
44 lines
757 B
Python
from pydantic import BaseModel
|
|
|
|
class BidRequest(BaseModel):
|
|
quote: int = 0
|
|
plan: str = ""
|
|
|
|
|
|
class TaskClaimRequest(BaseModel):
|
|
task_code: str = ""
|
|
task_id: str = ""
|
|
|
|
|
|
class TaskAssignRequest(BaseModel):
|
|
taker_user_id: str
|
|
|
|
|
|
class TaskRecommendRequest(BaseModel):
|
|
candidates: list[str] = []
|
|
|
|
|
|
class TaskSelectRecommendRequest(BaseModel):
|
|
taker_user_id: str = ""
|
|
|
|
|
|
|
|
class ProfileUpdate(BaseModel):
|
|
nickname: str | None = None
|
|
account: str | None = None
|
|
company: str | None = None
|
|
room: str | None = None
|
|
skills: list[str] = []
|
|
credit_score: int | None = None
|
|
|
|
|
|
|
|
class FinanceRecordCreate(BaseModel):
|
|
category: str = "income" # income | expense
|
|
amount: int
|
|
date: str = ""
|
|
note: str = ""
|
|
|
|
|
|
|