25 lines
961 B
TypeScript
25 lines
961 B
TypeScript
|
|
// services/api/src/interactions/dto.ts —— 点赞批次上报请求体(P2 Task 7)。
|
||
|
|
// 校验边界与契约 LikeBatchRequest 逐字段对齐(sessionId/batchId 1..64、
|
||
|
|
// delta 1..20 整数);越界一律 400 VALIDATION_FAILED(全局 ValidationPipe
|
||
|
|
// whitelist 剥离未声明字段)。delta 必须是 JSON number 整数(管道未开
|
||
|
|
// transform,字符串数字不静默转换——公开匿名端点从严)。
|
||
|
|
import { IsInt, IsString, Length, Max, Min } from 'class-validator';
|
||
|
|
|
||
|
|
export class LikeBatchDto {
|
||
|
|
/** 会话标识(客户端随机生成、会话期间复用;限速滑窗的键之一)。 */
|
||
|
|
@IsString()
|
||
|
|
@Length(1, 64)
|
||
|
|
sessionId!: string;
|
||
|
|
|
||
|
|
/** 批次幂等键:同批失败重试必须复用,跨批次不得复用。 */
|
||
|
|
@IsString()
|
||
|
|
@Length(1, 64)
|
||
|
|
batchId!: string;
|
||
|
|
|
||
|
|
/** 本批新增点赞数(客户端短窗合并后的累计点击数)。 */
|
||
|
|
@IsInt()
|
||
|
|
@Min(1)
|
||
|
|
@Max(20)
|
||
|
|
delta!: number;
|
||
|
|
}
|