mirror of
https://github.com/DayuanJiang/next-ai-draw-io.git
synced 2026-01-02 22:32:27 +08:00
feat: replace hardcoded usage limits with dynamic env variables (#180)
- About pages now read DAILY_REQUEST_LIMIT, DAILY_TOKEN_LIMIT, TPM_LIMIT from env - Removed unused /app/api/config/ route - Numbers formatted as Xk (e.g., 30k, 10k)
This commit is contained in:
@@ -10,7 +10,18 @@ export const metadata: Metadata = {
|
|||||||
keywords: ["AI图表", "draw.io", "AWS架构", "GCP图表", "Azure图表", "LLM"],
|
keywords: ["AI图表", "draw.io", "AWS架构", "GCP图表", "Azure图表", "LLM"],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function formatNumber(num: number): string {
|
||||||
|
if (num >= 1000) {
|
||||||
|
return `${num / 1000}k`
|
||||||
|
}
|
||||||
|
return num.toString()
|
||||||
|
}
|
||||||
|
|
||||||
export default function AboutCN() {
|
export default function AboutCN() {
|
||||||
|
const dailyRequestLimit = Number(process.env.DAILY_REQUEST_LIMIT) || 20
|
||||||
|
const dailyTokenLimit = Number(process.env.DAILY_TOKEN_LIMIT) || 500000
|
||||||
|
const tpmLimit = Number(process.env.TPM_LIMIT) || 50000
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="min-h-screen bg-gray-50">
|
<div className="min-h-screen bg-gray-50">
|
||||||
{/* Navigation */}
|
{/* Navigation */}
|
||||||
@@ -122,13 +133,13 @@ export default function AboutCN() {
|
|||||||
Token 用量
|
Token 用量
|
||||||
</div>
|
</div>
|
||||||
<div className="text-lg font-bold text-gray-900">
|
<div className="text-lg font-bold text-gray-900">
|
||||||
5万
|
{formatNumber(tpmLimit)}
|
||||||
<span className="text-sm font-normal text-gray-600">
|
<span className="text-sm font-normal text-gray-600">
|
||||||
/分钟
|
/分钟
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div className="text-lg font-bold text-gray-900">
|
<div className="text-lg font-bold text-gray-900">
|
||||||
50万
|
{formatNumber(dailyTokenLimit)}
|
||||||
<span className="text-sm font-normal text-gray-600">
|
<span className="text-sm font-normal text-gray-600">
|
||||||
/天
|
/天
|
||||||
</span>
|
</span>
|
||||||
@@ -139,7 +150,7 @@ export default function AboutCN() {
|
|||||||
每日请求数
|
每日请求数
|
||||||
</div>
|
</div>
|
||||||
<div className="text-2xl font-bold text-gray-900">
|
<div className="text-2xl font-bold text-gray-900">
|
||||||
20
|
{dailyRequestLimit}
|
||||||
</div>
|
</div>
|
||||||
<div className="text-sm text-gray-600">
|
<div className="text-sm text-gray-600">
|
||||||
次
|
次
|
||||||
|
|||||||
@@ -17,7 +17,18 @@ export const metadata: Metadata = {
|
|||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function formatNumber(num: number): string {
|
||||||
|
if (num >= 1000) {
|
||||||
|
return `${num / 1000}k`
|
||||||
|
}
|
||||||
|
return num.toString()
|
||||||
|
}
|
||||||
|
|
||||||
export default function AboutJA() {
|
export default function AboutJA() {
|
||||||
|
const dailyRequestLimit = Number(process.env.DAILY_REQUEST_LIMIT) || 20
|
||||||
|
const dailyTokenLimit = Number(process.env.DAILY_TOKEN_LIMIT) || 500000
|
||||||
|
const tpmLimit = Number(process.env.TPM_LIMIT) || 50000
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="min-h-screen bg-gray-50">
|
<div className="min-h-screen bg-gray-50">
|
||||||
{/* Navigation */}
|
{/* Navigation */}
|
||||||
@@ -130,13 +141,13 @@ export default function AboutJA() {
|
|||||||
トークン使用量
|
トークン使用量
|
||||||
</div>
|
</div>
|
||||||
<div className="text-lg font-bold text-gray-900">
|
<div className="text-lg font-bold text-gray-900">
|
||||||
5万
|
{formatNumber(tpmLimit)}
|
||||||
<span className="text-sm font-normal text-gray-600">
|
<span className="text-sm font-normal text-gray-600">
|
||||||
/分
|
/分
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div className="text-lg font-bold text-gray-900">
|
<div className="text-lg font-bold text-gray-900">
|
||||||
50万
|
{formatNumber(dailyTokenLimit)}
|
||||||
<span className="text-sm font-normal text-gray-600">
|
<span className="text-sm font-normal text-gray-600">
|
||||||
/日
|
/日
|
||||||
</span>
|
</span>
|
||||||
@@ -147,7 +158,7 @@ export default function AboutJA() {
|
|||||||
1日のリクエスト数
|
1日のリクエスト数
|
||||||
</div>
|
</div>
|
||||||
<div className="text-2xl font-bold text-gray-900">
|
<div className="text-2xl font-bold text-gray-900">
|
||||||
20
|
{dailyRequestLimit}
|
||||||
</div>
|
</div>
|
||||||
<div className="text-sm text-gray-600">
|
<div className="text-sm text-gray-600">
|
||||||
回
|
回
|
||||||
|
|||||||
@@ -17,7 +17,18 @@ export const metadata: Metadata = {
|
|||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function formatNumber(num: number): string {
|
||||||
|
if (num >= 1000) {
|
||||||
|
return `${num / 1000}k`
|
||||||
|
}
|
||||||
|
return num.toString()
|
||||||
|
}
|
||||||
|
|
||||||
export default function About() {
|
export default function About() {
|
||||||
|
const dailyRequestLimit = Number(process.env.DAILY_REQUEST_LIMIT) || 20
|
||||||
|
const dailyTokenLimit = Number(process.env.DAILY_TOKEN_LIMIT) || 500000
|
||||||
|
const tpmLimit = Number(process.env.TPM_LIMIT) || 50000
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="min-h-screen bg-gray-50">
|
<div className="min-h-screen bg-gray-50">
|
||||||
{/* Navigation */}
|
{/* Navigation */}
|
||||||
@@ -136,13 +147,13 @@ export default function About() {
|
|||||||
Token Usage
|
Token Usage
|
||||||
</div>
|
</div>
|
||||||
<div className="text-lg font-bold text-gray-900">
|
<div className="text-lg font-bold text-gray-900">
|
||||||
50k
|
{formatNumber(tpmLimit)}
|
||||||
<span className="text-sm font-normal text-gray-600">
|
<span className="text-sm font-normal text-gray-600">
|
||||||
/min
|
/min
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div className="text-lg font-bold text-gray-900">
|
<div className="text-lg font-bold text-gray-900">
|
||||||
500k
|
{formatNumber(dailyTokenLimit)}
|
||||||
<span className="text-sm font-normal text-gray-600">
|
<span className="text-sm font-normal text-gray-600">
|
||||||
/day
|
/day
|
||||||
</span>
|
</span>
|
||||||
@@ -153,7 +164,7 @@ export default function About() {
|
|||||||
Daily Requests
|
Daily Requests
|
||||||
</div>
|
</div>
|
||||||
<div className="text-2xl font-bold text-gray-900">
|
<div className="text-2xl font-bold text-gray-900">
|
||||||
20
|
{dailyRequestLimit}
|
||||||
</div>
|
</div>
|
||||||
<div className="text-sm text-gray-600">
|
<div className="text-sm text-gray-600">
|
||||||
requests
|
requests
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
import { NextResponse } from "next/server"
|
|
||||||
|
|
||||||
export async function GET() {
|
|
||||||
const accessCodes =
|
|
||||||
process.env.ACCESS_CODE_LIST?.split(",")
|
|
||||||
.map((code) => code.trim())
|
|
||||||
.filter(Boolean) || []
|
|
||||||
|
|
||||||
return NextResponse.json({
|
|
||||||
accessCodeRequired: accessCodes.length > 0,
|
|
||||||
dailyRequestLimit: parseInt(process.env.DAILY_REQUEST_LIMIT || "0", 10),
|
|
||||||
dailyTokenLimit: parseInt(process.env.DAILY_TOKEN_LIMIT || "0", 10),
|
|
||||||
tpmLimit: parseInt(process.env.TPM_LIMIT || "0", 10),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user