Files
keeppay/lib/schemas.ts
T
root 841faca34a feat: 添加项目规范和配置文件
- 新增项目规范文档,包含语言设置和 Git 提交规范
- 更新 .gitignore 文件,添加环境文件和数据目录
- 新增 Prettier 配置文件和忽略文件
- 更新 package.json,添加 prettier 和 prisma 相关依赖
- 新增 API 路由处理佣金和消费数据

这些更改为项目提供了更好的结构和代码风格规范。
2026-05-12 21:43:25 +08:00

43 lines
1.9 KiB
TypeScript

import { z } from 'zod'
export const MediaSchema = z.object({
id: z.string(),
type: z.enum(['image', 'video']),
url: z.string().url('图片/视频 URL 格式不正确').or(z.string().min(1)),
})
export const CreateWaiterSchema = z.object({
name: z.string().min(1, '请输入姓名'),
avatar: z.string().optional(),
gallery: z.array(MediaSchema).optional().default([]),
specialty: z.string().min(1, '请输入擅长领域'),
commissionRate: z.number().min(0).max(100, '分成比例不能超过100%'),
status: z.enum(['上班中', '休息中', '禁用', '初始化']).optional(),
})
export const UpdateWaiterSchema = CreateWaiterSchema.partial()
export const CreateReservationSchema = z.object({
customerName: z.string().min(1, '请输入顾客姓名'),
date: z.string().regex(/^\d{4}-\d{2}-\d{2}$/, '日期格式不正确'),
time: z.string().regex(/^\d{2}:\d{2}$/, '时间格式不正确'),
waiterId: z.string().min(1, '请选择服务员'),
package: z.string().optional(),
note: z.string().optional(),
state: z.enum(['待分账', '已分账']).optional().default('待分账'),
})
export const CreateConsumptionSchema = z.object({
customerName: z.string().min(1, '请输入顾客姓名'),
date: z.string().regex(/^\d{4}-\d{2}-\d{2}$/, '日期格式不正确'),
time: z.string().regex(/^\d{2}:\d{2}$/, '时间格式不正确'),
waiterId: z.string().min(1, '请选择服务员'),
amount: z.number().positive('消费金额必须大于0'),
state: z.enum(['待分账', '已分账']).optional().default('待分账'),
})
export type CreateWaiterInput = z.infer<typeof CreateWaiterSchema>
export type UpdateWaiterInput = z.infer<typeof UpdateWaiterSchema>
export type CreateReservationInput = z.infer<typeof CreateReservationSchema>
export type CreateConsumptionInput = z.infer<typeof CreateConsumptionSchema>