فهرست منبع

fix: add limitDailyUsd validation and dailyResetMode parameter support

- Add validation to ensure Key's daily limit does not exceed user's daily quota
- Apply validation in both addKey and editKey functions
- Add dailyResetMode parameter to editKey function signature
- Addresses code review feedback from PR #161
ding113 3 ماه پیش
والد
کامیت
2fd3936091
1فایلهای تغییر یافته به همراه19 افزوده شده و 0 حذف شده
  1. 19 0
      src/actions/keys.ts

+ 19 - 0
src/actions/keys.ts

@@ -81,6 +81,13 @@ export async function addKey(data: {
       };
       };
     }
     }
 
 
+    if (data.limitDailyUsd && user.dailyQuota && data.limitDailyUsd > user.dailyQuota) {
+      return {
+        ok: false,
+        error: `Key的日消费上限(${data.limitDailyUsd})不能超过用户限额(${user.dailyQuota})`,
+      };
+    }
+
     if (data.limitWeeklyUsd && user.limitWeeklyUsd && data.limitWeeklyUsd > user.limitWeeklyUsd) {
     if (data.limitWeeklyUsd && user.limitWeeklyUsd && data.limitWeeklyUsd > user.limitWeeklyUsd) {
       return {
       return {
         ok: false,
         ok: false,
@@ -152,6 +159,7 @@ export async function editKey(
     canLoginWebUi?: boolean;
     canLoginWebUi?: boolean;
     limit5hUsd?: number | null;
     limit5hUsd?: number | null;
     limitDailyUsd?: number | null;
     limitDailyUsd?: number | null;
+    dailyResetMode?: "fixed" | "rolling";
     dailyResetTime?: string;
     dailyResetTime?: string;
     limitWeeklyUsd?: number | null;
     limitWeeklyUsd?: number | null;
     limitMonthlyUsd?: number | null;
     limitMonthlyUsd?: number | null;
@@ -191,6 +199,17 @@ export async function editKey(
       };
       };
     }
     }
 
 
+    if (
+      validatedData.limitDailyUsd &&
+      user.dailyQuota &&
+      validatedData.limitDailyUsd > user.dailyQuota
+    ) {
+      return {
+        ok: false,
+        error: `Key的日消费上限(${validatedData.limitDailyUsd})不能超过用户限额(${user.dailyQuota})`,
+      };
+    }
+
     if (
     if (
       validatedData.limitWeeklyUsd &&
       validatedData.limitWeeklyUsd &&
       user.limitWeeklyUsd &&
       user.limitWeeklyUsd &&