chapter.ts 859 B

1234567891011121314151617181920212223242526272829303132
  1. import { z } from "zod";
  2. export const ChapterStatusSchema = z.enum([
  3. "card-generated",
  4. "drafting",
  5. "drafted",
  6. "auditing",
  7. "audit-passed",
  8. "audit-failed",
  9. "revising",
  10. "ready-for-review",
  11. "approved",
  12. "rejected",
  13. "published",
  14. ]);
  15. export type ChapterStatus = z.infer<typeof ChapterStatusSchema>;
  16. export const ChapterMetaSchema = z.object({
  17. number: z.number().int().min(1),
  18. title: z.string(),
  19. status: ChapterStatusSchema,
  20. wordCount: z.number().int().default(0),
  21. createdAt: z.string().datetime(),
  22. updatedAt: z.string().datetime(),
  23. auditIssues: z.array(z.string()).default([]),
  24. reviewNote: z.string().optional(),
  25. detectionScore: z.number().min(0).max(1).optional(),
  26. detectionProvider: z.string().optional(),
  27. detectedAt: z.string().datetime().optional(),
  28. });
  29. export type ChapterMeta = z.infer<typeof ChapterMetaSchema>;