1d37666114
- PickTitleUseCase:优先使用次数少的,从前5个中随机选,兼顾公平和多样性 - 支持 category 过滤 + exclude_ids 排除(批量生成避免重复) - 空库时返回 404 提示先添加标题
45 lines
967 B
Python
Executable File
45 lines
967 B
Python
Executable File
"""Title library commands."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass, field
|
|
from typing import List, Optional
|
|
|
|
|
|
@dataclass
|
|
class CreateTitleLibraryCommand:
|
|
user_id: str
|
|
name: str
|
|
text: str
|
|
category: str = "default"
|
|
description: str = ""
|
|
tags: List[str] = field(default_factory=list)
|
|
metadata_: dict = field(default_factory=dict)
|
|
|
|
|
|
@dataclass
|
|
class UpdateTitleLibraryCommand:
|
|
title_id: str
|
|
user_id: str
|
|
name: Optional[str] = None
|
|
text: Optional[str] = None
|
|
category: Optional[str] = None
|
|
description: Optional[str] = None
|
|
tags: Optional[List[str]] = None
|
|
is_active: Optional[bool] = None
|
|
metadata_: Optional[dict] = None
|
|
|
|
|
|
@dataclass
|
|
class IncrementTitleUsageCommand:
|
|
title_id: str
|
|
user_id: str
|
|
increment: int = 1
|
|
|
|
|
|
@dataclass
|
|
class PickTitleCommand:
|
|
user_id: str
|
|
category: Optional[str] = None
|
|
exclude_ids: List[str] = field(default_factory=list)
|