🏁 Final commit: Project Token Usage Viewer completed

This commit is contained in:
2026-01-21 14:21:43 +08:00
parent b967deb4b1
commit a77fcdd3dc
24 changed files with 1087 additions and 651 deletions

View File

@@ -1,60 +0,0 @@
/**
* Todo API 契约
*
* 使用 ORPC 契约定义 API 的输入/输出类型。
* drizzle-zod 自动从表 schema 生成验证规则。
*/
import { oc } from '@orpc/contract'
import {
createInsertSchema,
createSelectSchema,
createUpdateSchema,
} from 'drizzle-zod'
import { z } from 'zod'
import { todoTable } from '@/db/schema'
/** 查询返回的完整 Todo 类型 */
const selectSchema = createSelectSchema(todoTable)
/** 创建 Todo 时的输入类型 (排除自动生成的字段) */
const insertSchema = createInsertSchema(todoTable).omit({
id: true,
createdAt: true,
updatedAt: true,
})
/** 更新 Todo 时的输入类型 (所有字段可选) */
const updateSchema = createUpdateSchema(todoTable).omit({
id: true,
createdAt: true,
updatedAt: true,
})
// ============================================================
// API 契约定义
// ============================================================
/** 获取所有 Todo */
export const list = oc.input(z.void()).output(z.array(selectSchema))
/** 创建新 Todo */
export const create = oc.input(insertSchema).output(selectSchema)
/** 更新 Todo */
export const update = oc
.input(
z.object({
id: z.uuid(),
data: updateSchema,
}),
)
.output(selectSchema)
/** 删除 Todo */
export const remove = oc
.input(
z.object({
id: z.uuid(),
}),
)
.output(z.void())

View File

@@ -0,0 +1,31 @@
/**
* Token 使用量契约定义
*/
import { oc } from '@orpc/contract'
import { z } from 'zod'
/** 单个模型的使用量数据 */
const ModelUsageSchema = z.object({
/** 账户名称 */
account: z.string(),
/** 模型标识符 */
model: z.string(),
/** 模型显示名称 */
displayName: z.string().optional(),
/** 剩余配额百分比 (0-1) */
remainingFraction: z.number().min(0).max(1),
/** 配额重置时间 (ISO 8601) */
resetTime: z.string().optional(),
})
export type ModelUsage = z.infer<typeof ModelUsageSchema>
/** 获取当前使用量 */
export const getUsage = oc.output(
z.object({
/** 筛选出的 Opus/Thinking 模型列表 */
opusModels: z.array(ModelUsageSchema),
/** 数据获取时间 */
fetchedAt: z.string(),
}),
)