mirror of
https://github.com/langgenius/dify.git
synced 2026-05-03 07:46:31 +08:00
feat: add sandbox api rate limit email template
This commit is contained in:
parent
d3d3868b4a
commit
8fb027d331
@ -42,6 +42,8 @@ class EmailType(StrEnum):
|
|||||||
TRIGGER_EVENTS_LIMIT_PROFESSIONAL = auto()
|
TRIGGER_EVENTS_LIMIT_PROFESSIONAL = auto()
|
||||||
TRIGGER_EVENTS_USAGE_WARNING_SANDBOX = auto()
|
TRIGGER_EVENTS_USAGE_WARNING_SANDBOX = auto()
|
||||||
TRIGGER_EVENTS_USAGE_WARNING_PROFESSIONAL = auto()
|
TRIGGER_EVENTS_USAGE_WARNING_PROFESSIONAL = auto()
|
||||||
|
API_RATE_LIMIT_LIMIT_SANDBOX = auto()
|
||||||
|
API_RATE_LIMIT_WARNING_SANDBOX = auto()
|
||||||
|
|
||||||
|
|
||||||
class EmailLanguage(StrEnum):
|
class EmailLanguage(StrEnum):
|
||||||
@ -497,6 +499,30 @@ def create_default_email_config() -> EmailI18nConfig:
|
|||||||
branded_template_path="without-brand/trigger_events_usage_warning_template_zh-CN.html",
|
branded_template_path="without-brand/trigger_events_usage_warning_template_zh-CN.html",
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
|
EmailType.API_RATE_LIMIT_LIMIT_SANDBOX: {
|
||||||
|
EmailLanguage.EN_US: EmailTemplate(
|
||||||
|
subject="You’ve reached your API Rate Limit",
|
||||||
|
template_path="api_rate_limit_limit_template_en-US.html",
|
||||||
|
branded_template_path="without-brand/api_rate_limit_limit_template_en-US.html",
|
||||||
|
),
|
||||||
|
EmailLanguage.ZH_HANS: EmailTemplate(
|
||||||
|
subject="您的 API 速率额度已用尽",
|
||||||
|
template_path="api_rate_limit_limit_template_zh-CN.html",
|
||||||
|
branded_template_path="without-brand/api_rate_limit_limit_template_zh-CN.html",
|
||||||
|
),
|
||||||
|
},
|
||||||
|
EmailType.API_RATE_LIMIT_WARNING_SANDBOX: {
|
||||||
|
EmailLanguage.EN_US: EmailTemplate(
|
||||||
|
subject="You’re nearing your API Rate Limit",
|
||||||
|
template_path="api_rate_limit_warning_template_en-US.html",
|
||||||
|
branded_template_path="without-brand/api_rate_limit_warning_template_en-US.html",
|
||||||
|
),
|
||||||
|
EmailLanguage.ZH_HANS: EmailTemplate(
|
||||||
|
subject="您的 API 速率额度接近上限",
|
||||||
|
template_path="api_rate_limit_warning_template_zh-CN.html",
|
||||||
|
branded_template_path="without-brand/api_rate_limit_warning_template_zh-CN.html",
|
||||||
|
),
|
||||||
|
},
|
||||||
EmailType.EMAIL_REGISTER: {
|
EmailType.EMAIL_REGISTER: {
|
||||||
EmailLanguage.EN_US: EmailTemplate(
|
EmailLanguage.EN_US: EmailTemplate(
|
||||||
subject="Register Your {application_title} Account",
|
subject="Register Your {application_title} Account",
|
||||||
|
|||||||
133
api/templates/api_rate_limit_limit_template_en-US.html
Normal file
133
api/templates/api_rate_limit_limit_template_en-US.html
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: 'Inter', 'Arial', sans-serif;
|
||||||
|
background-color: #e9ebf0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
*, *::before, *::after {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card {
|
||||||
|
width: 600px;
|
||||||
|
min-height: 434px;
|
||||||
|
margin: 40px auto;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
background: #fcfcfd;
|
||||||
|
border: 1px solid #ffffff;
|
||||||
|
box-shadow: 0px 3px 10px -2px rgba(9, 9, 11, 0.08), 0px 2px 4px -2px rgba(9, 9, 11, 0.06);
|
||||||
|
border-radius: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-header {
|
||||||
|
padding: 36px 48px 24px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-header img {
|
||||||
|
width: 68px;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 16px;
|
||||||
|
padding: 8px 48px 48px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 120%;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-group {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 12px;
|
||||||
|
padding: 16px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-text {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 20px;
|
||||||
|
letter-spacing: -0.005em;
|
||||||
|
color: #354052;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-text strong {
|
||||||
|
font-weight: 600;
|
||||||
|
color: #101828;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta {
|
||||||
|
display: inline-flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 504px;
|
||||||
|
height: 32px;
|
||||||
|
padding: 0 16px;
|
||||||
|
gap: 8px;
|
||||||
|
background: #1677ff;
|
||||||
|
border-radius: 6px;
|
||||||
|
text-decoration: none;
|
||||||
|
color: #ffffff !important;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 22px;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
|
||||||
|
.note {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 20px;
|
||||||
|
letter-spacing: -0.005em;
|
||||||
|
color: #354052;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<img src="https://assets.dify.ai/images/logo.png" alt="Dify Logo" />
|
||||||
|
</div>
|
||||||
|
<div class="card-content">
|
||||||
|
<h1 class="title">You’ve reached your API Rate Limit</h1>
|
||||||
|
<div class="body-group">
|
||||||
|
<p class="body-text">
|
||||||
|
Your workspace <strong>{{workspaceName}}</strong> has used all available <strong>Monthly API Rate Limit</strong> for the
|
||||||
|
<strong>{{planName}} Plan (limit: {{planLimit}})</strong>.
|
||||||
|
</p>
|
||||||
|
<p class="body-text">
|
||||||
|
As a result, API access has been temporarily paused.
|
||||||
|
</p>
|
||||||
|
<p class="body-text">
|
||||||
|
To continue using the Dify API and unlock a higher limit, please upgrade to a paid plan.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<a class="cta" href="{{upgradeUrl}}" target="_blank" rel="noopener noreferrer">{{ctaLabel}}</a>
|
||||||
|
<p class="note">
|
||||||
|
<strong>Monthly API Rate Limit</strong> for the <strong>{{planName}} Plan</strong> will reset on <strong>{{resetDate}}</strong>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
133
api/templates/api_rate_limit_limit_template_zh-CN.html
Normal file
133
api/templates/api_rate_limit_limit_template_zh-CN.html
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh-CN">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: 'Inter', 'PingFang SC', 'Arial', sans-serif;
|
||||||
|
background-color: #e9ebf0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
*, *::before, *::after {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card {
|
||||||
|
width: 600px;
|
||||||
|
min-height: 434px;
|
||||||
|
margin: 40px auto;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
background: #fcfcfd;
|
||||||
|
border: 1px solid #ffffff;
|
||||||
|
box-shadow: 0px 3px 10px -2px rgba(9, 9, 11, 0.08), 0px 2px 4px -2px rgba(9, 9, 11, 0.06);
|
||||||
|
border-radius: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-header {
|
||||||
|
padding: 36px 48px 24px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-header img {
|
||||||
|
width: 68px;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 16px;
|
||||||
|
padding: 8px 48px 48px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 120%;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-group {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 12px;
|
||||||
|
padding: 16px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-text {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 20px;
|
||||||
|
letter-spacing: -0.005em;
|
||||||
|
color: #354052;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-text strong {
|
||||||
|
font-weight: 600;
|
||||||
|
color: #101828;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta {
|
||||||
|
display: inline-flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 504px;
|
||||||
|
height: 32px;
|
||||||
|
padding: 0 16px;
|
||||||
|
gap: 8px;
|
||||||
|
background: #1677ff;
|
||||||
|
border-radius: 6px;
|
||||||
|
text-decoration: none;
|
||||||
|
color: #ffffff !important;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 22px;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
|
||||||
|
.note {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 20px;
|
||||||
|
letter-spacing: -0.005em;
|
||||||
|
color: #354052;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<img src="https://assets.dify.ai/images/logo.png" alt="Dify Logo" />
|
||||||
|
</div>
|
||||||
|
<div class="card-content">
|
||||||
|
<h1 class="title">您的 API 速率额度已用尽</h1>
|
||||||
|
<div class="body-group">
|
||||||
|
<p class="body-text">
|
||||||
|
您的工作区 <strong>{{workspaceName}}</strong> 已用完 <strong>Monthly API Rate Limit</strong>,触及
|
||||||
|
<strong>{{planName}} 计划(上限:{{planLimit}})</strong>。
|
||||||
|
</p>
|
||||||
|
<p class="body-text">
|
||||||
|
因此,API 访问已被暂时暂停。
|
||||||
|
</p>
|
||||||
|
<p class="body-text">
|
||||||
|
若要继续使用 Dify API 并解锁更高额度,请升级到付费套餐。
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<a class="cta" href="{{upgradeUrl}}" target="_blank" rel="noopener noreferrer">{{ctaLabel}}</a>
|
||||||
|
<p class="note">
|
||||||
|
<strong>{{planName}} 计划的 Monthly API Rate Limit</strong> 将于 <strong>{{resetDate}}</strong> 重置。
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
134
api/templates/api_rate_limit_warning_template_en-US.html
Normal file
134
api/templates/api_rate_limit_warning_template_en-US.html
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: 'Inter', 'Arial', sans-serif;
|
||||||
|
background-color: #e9ebf0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
*, *::before, *::after {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card {
|
||||||
|
width: 600px;
|
||||||
|
min-height: 454px;
|
||||||
|
margin: 40px auto;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
background: #fcfcfd;
|
||||||
|
border: 1px solid #ffffff;
|
||||||
|
box-shadow: 0px 3px 10px -2px rgba(9, 9, 11, 0.08), 0px 2px 4px -2px rgba(9, 9, 11, 0.06);
|
||||||
|
border-radius: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-header {
|
||||||
|
padding: 36px 48px 24px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-header img {
|
||||||
|
width: 68px;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 16px;
|
||||||
|
padding: 8px 48px 48px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 120%;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-group {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 12px;
|
||||||
|
padding: 16px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-text {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 20px;
|
||||||
|
letter-spacing: -0.005em;
|
||||||
|
color: #354052;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-text strong {
|
||||||
|
font-weight: 600;
|
||||||
|
color: #101828;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta {
|
||||||
|
display: inline-flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 504px;
|
||||||
|
height: 32px;
|
||||||
|
padding: 0 16px;
|
||||||
|
gap: 8px;
|
||||||
|
background: #1677ff;
|
||||||
|
border-radius: 6px;
|
||||||
|
text-decoration: none;
|
||||||
|
color: #ffffff !important;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 22px;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
|
||||||
|
.note {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 20px;
|
||||||
|
letter-spacing: -0.005em;
|
||||||
|
color: #354052;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<img src="https://assets.dify.ai/images/logo.png" alt="Dify Logo" />
|
||||||
|
</div>
|
||||||
|
<div class="card-content">
|
||||||
|
<h1 class="title">You’re nearing your API Rate Limit</h1>
|
||||||
|
<div class="body-group">
|
||||||
|
<p class="body-text">
|
||||||
|
Your workspace <strong>{{workspaceName}}</strong> has used <strong>80% of its Monthly API Rate Limit</strong> for the
|
||||||
|
<strong>{{planName}} Plan (limit: {{planLimit}})</strong>.
|
||||||
|
</p>
|
||||||
|
<p class="body-text">
|
||||||
|
Once the limit is reached, API access will be temporarily paused until the next monthly reset.
|
||||||
|
</p>
|
||||||
|
<p class="body-text">
|
||||||
|
To avoid service interruptions and ensure continued access to the Dify API, please consider upgrading your plan for a higher API
|
||||||
|
Rate Limit.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<a class="cta" href="{{upgradeUrl}}" target="_blank" rel="noopener noreferrer">{{ctaLabel}}</a>
|
||||||
|
<p class="note">
|
||||||
|
<strong>Monthly API Rate Limit</strong> for the <strong>{{planName}} Plan</strong> will reset on <strong>{{resetDate}}</strong>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
133
api/templates/api_rate_limit_warning_template_zh-CN.html
Normal file
133
api/templates/api_rate_limit_warning_template_zh-CN.html
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh-CN">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: 'Inter', 'PingFang SC', 'Arial', sans-serif;
|
||||||
|
background-color: #e9ebf0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
*, *::before, *::after {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card {
|
||||||
|
width: 600px;
|
||||||
|
min-height: 454px;
|
||||||
|
margin: 40px auto;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
background: #fcfcfd;
|
||||||
|
border: 1px solid #ffffff;
|
||||||
|
box-shadow: 0px 3px 10px -2px rgba(9, 9, 11, 0.08), 0px 2px 4px -2px rgba(9, 9, 11, 0.06);
|
||||||
|
border-radius: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-header {
|
||||||
|
padding: 36px 48px 24px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-header img {
|
||||||
|
width: 68px;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 16px;
|
||||||
|
padding: 8px 48px 48px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 120%;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-group {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 12px;
|
||||||
|
padding: 16px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-text {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 20px;
|
||||||
|
letter-spacing: -0.005em;
|
||||||
|
color: #354052;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-text strong {
|
||||||
|
font-weight: 600;
|
||||||
|
color: #101828;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta {
|
||||||
|
display: inline-flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 504px;
|
||||||
|
height: 32px;
|
||||||
|
padding: 0 16px;
|
||||||
|
gap: 8px;
|
||||||
|
background: #1677ff;
|
||||||
|
border-radius: 6px;
|
||||||
|
text-decoration: none;
|
||||||
|
color: #ffffff !important;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 22px;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
|
||||||
|
.note {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 20px;
|
||||||
|
letter-spacing: -0.005em;
|
||||||
|
color: #354052;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<img src="https://assets.dify.ai/images/logo.png" alt="Dify Logo" />
|
||||||
|
</div>
|
||||||
|
<div class="card-content">
|
||||||
|
<h1 class="title">您的 API 速率额度接近上限</h1>
|
||||||
|
<div class="body-group">
|
||||||
|
<p class="body-text">
|
||||||
|
您的工作区 <strong>{{workspaceName}}</strong> 已使用 <strong>80% 的 Monthly API Rate Limit</strong>,触及
|
||||||
|
<strong>{{planName}} 计划(上限:{{planLimit}})</strong>。
|
||||||
|
</p>
|
||||||
|
<p class="body-text">
|
||||||
|
一旦达到上限,API 访问将暂停,直至下一个月度重置。
|
||||||
|
</p>
|
||||||
|
<p class="body-text">
|
||||||
|
为避免服务中断并持续访问 Dify API,请考虑升级到额度更高的套餐。
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<a class="cta" href="{{upgradeUrl}}" target="_blank" rel="noopener noreferrer">{{ctaLabel}}</a>
|
||||||
|
<p class="note">
|
||||||
|
<strong>{{planName}} 计划的 Monthly API Rate Limit</strong> 将于 <strong>{{resetDate}}</strong> 重置。
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@ -0,0 +1,124 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: 'Inter', 'Arial', sans-serif;
|
||||||
|
background-color: #e9ebf0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
*, *::before, *::after {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card {
|
||||||
|
width: 600px;
|
||||||
|
min-height: 434px;
|
||||||
|
margin: 40px auto;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
background: #fcfcfd;
|
||||||
|
border: 1px solid #ffffff;
|
||||||
|
box-shadow: 0px 3px 10px -2px rgba(9, 9, 11, 0.08), 0px 2px 4px -2px rgba(9, 9, 11, 0.06);
|
||||||
|
border-radius: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-header {
|
||||||
|
padding: 36px 48px 24px;
|
||||||
|
min-height: 101px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 16px;
|
||||||
|
padding: 8px 48px 48px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 120%;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-group {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 12px;
|
||||||
|
padding: 16px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-text {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 20px;
|
||||||
|
letter-spacing: -0.005em;
|
||||||
|
color: #354052;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-text strong {
|
||||||
|
font-weight: 600;
|
||||||
|
color: #101828;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta {
|
||||||
|
display: inline-flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 504px;
|
||||||
|
height: 32px;
|
||||||
|
padding: 0 16px;
|
||||||
|
gap: 8px;
|
||||||
|
background: #1677ff;
|
||||||
|
border-radius: 6px;
|
||||||
|
text-decoration: none;
|
||||||
|
color: #ffffff !important;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 22px;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
|
||||||
|
.note {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 20px;
|
||||||
|
letter-spacing: -0.005em;
|
||||||
|
color: #354052;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header"></div>
|
||||||
|
<div class="card-content">
|
||||||
|
<h1 class="title">You’ve reached your API Rate Limit</h1>
|
||||||
|
<div class="body-group">
|
||||||
|
<p class="body-text">
|
||||||
|
Your workspace <strong>{{workspaceName}}</strong> has used all available <strong>Monthly API Rate Limit</strong> for the
|
||||||
|
<strong>{{planName}} Plan (limit: {{planLimit}})</strong>.
|
||||||
|
</p>
|
||||||
|
<p class="body-text">
|
||||||
|
As a result, API access has been temporarily paused.
|
||||||
|
</p>
|
||||||
|
<p class="body-text">
|
||||||
|
To continue using the Dify API and unlock a higher limit, please upgrade to a paid plan.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<a class="cta" href="{{upgradeUrl}}" target="_blank" rel="noopener noreferrer">{{ctaLabel}}</a>
|
||||||
|
<p class="note">
|
||||||
|
<strong>Monthly API Rate Limit</strong> for the <strong>{{planName}} Plan</strong> will reset on <strong>{{resetDate}}</strong>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@ -0,0 +1,124 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh-CN">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: 'Inter', 'PingFang SC', 'Arial', sans-serif;
|
||||||
|
background-color: #e9ebf0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
*, *::before, *::after {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card {
|
||||||
|
width: 600px;
|
||||||
|
min-height: 434px;
|
||||||
|
margin: 40px auto;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
background: #fcfcfd;
|
||||||
|
border: 1px solid #ffffff;
|
||||||
|
box-shadow: 0px 3px 10px -2px rgba(9, 9, 11, 0.08), 0px 2px 4px -2px rgba(9, 9, 11, 0.06);
|
||||||
|
border-radius: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-header {
|
||||||
|
padding: 36px 48px 24px;
|
||||||
|
min-height: 101px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 16px;
|
||||||
|
padding: 8px 48px 48px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 120%;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-group {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 12px;
|
||||||
|
padding: 16px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-text {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 20px;
|
||||||
|
letter-spacing: -0.005em;
|
||||||
|
color: #354052;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-text strong {
|
||||||
|
font-weight: 600;
|
||||||
|
color: #101828;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta {
|
||||||
|
display: inline-flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 504px;
|
||||||
|
height: 32px;
|
||||||
|
padding: 0 16px;
|
||||||
|
gap: 8px;
|
||||||
|
background: #1677ff;
|
||||||
|
border-radius: 6px;
|
||||||
|
text-decoration: none;
|
||||||
|
color: #ffffff !important;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 22px;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
|
||||||
|
.note {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 20px;
|
||||||
|
letter-spacing: -0.005em;
|
||||||
|
color: #354052;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header"></div>
|
||||||
|
<div class="card-content">
|
||||||
|
<h1 class="title">您的 API 速率额度已用尽</h1>
|
||||||
|
<div class="body-group">
|
||||||
|
<p class="body-text">
|
||||||
|
您的工作区 <strong>{{workspaceName}}</strong> 已用完 <strong>Monthly API Rate Limit</strong>,触及
|
||||||
|
<strong>{{planName}} 计划(上限:{{planLimit}})</strong>。
|
||||||
|
</p>
|
||||||
|
<p class="body-text">
|
||||||
|
因此,API 访问已被暂时暂停。
|
||||||
|
</p>
|
||||||
|
<p class="body-text">
|
||||||
|
若要继续使用 Dify API 并解锁更高额度,请升级到付费套餐。
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<a class="cta" href="{{upgradeUrl}}" target="_blank" rel="noopener noreferrer">{{ctaLabel}}</a>
|
||||||
|
<p class="note">
|
||||||
|
<strong>{{planName}} 计划的 Monthly API Rate Limit</strong> 将于 <strong>{{resetDate}}</strong> 重置。
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@ -0,0 +1,125 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: 'Inter', 'Arial', sans-serif;
|
||||||
|
background-color: #e9ebf0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
*, *::before, *::after {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card {
|
||||||
|
width: 600px;
|
||||||
|
min-height: 454px;
|
||||||
|
margin: 40px auto;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
background: #fcfcfd;
|
||||||
|
border: 1px solid #ffffff;
|
||||||
|
box-shadow: 0px 3px 10px -2px rgba(9, 9, 11, 0.08), 0px 2px 4px -2px rgba(9, 9, 11, 0.06);
|
||||||
|
border-radius: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-header {
|
||||||
|
padding: 36px 48px 24px;
|
||||||
|
min-height: 101px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 16px;
|
||||||
|
padding: 8px 48px 48px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 120%;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-group {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 12px;
|
||||||
|
padding: 16px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-text {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 20px;
|
||||||
|
letter-spacing: -0.005em;
|
||||||
|
color: #354052;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-text strong {
|
||||||
|
font-weight: 600;
|
||||||
|
color: #101828;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta {
|
||||||
|
display: inline-flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 504px;
|
||||||
|
height: 32px;
|
||||||
|
padding: 0 16px;
|
||||||
|
gap: 8px;
|
||||||
|
background: #1677ff;
|
||||||
|
border-radius: 6px;
|
||||||
|
text-decoration: none;
|
||||||
|
color: #ffffff !important;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 22px;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
|
||||||
|
.note {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 20px;
|
||||||
|
letter-spacing: -0.005em;
|
||||||
|
color: #354052;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header"></div>
|
||||||
|
<div class="card-content">
|
||||||
|
<h1 class="title">You’re nearing your API Rate Limit</h1>
|
||||||
|
<div class="body-group">
|
||||||
|
<p class="body-text">
|
||||||
|
Your workspace <strong>{{workspaceName}}</strong> has used <strong>80% of its Monthly API Rate Limit</strong> for the
|
||||||
|
<strong>{{planName}} Plan (limit: {{planLimit}})</strong>.
|
||||||
|
</p>
|
||||||
|
<p class="body-text">
|
||||||
|
Once the limit is reached, API access will be temporarily paused until the next monthly reset.
|
||||||
|
</p>
|
||||||
|
<p class="body-text">
|
||||||
|
To avoid service interruptions and ensure continued access to the Dify API, please consider upgrading your plan for a higher API
|
||||||
|
Rate Limit.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<a class="cta" href="{{upgradeUrl}}" target="_blank" rel="noopener noreferrer">{{ctaLabel}}</a>
|
||||||
|
<p class="note">
|
||||||
|
<strong>Monthly API Rate Limit</strong> for the <strong>{{planName}} Plan</strong> will reset on <strong>{{resetDate}}</strong>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@ -0,0 +1,124 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh-CN">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: 'Inter', 'PingFang SC', 'Arial', sans-serif;
|
||||||
|
background-color: #e9ebf0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
*, *::before, *::after {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card {
|
||||||
|
width: 600px;
|
||||||
|
min-height: 454px;
|
||||||
|
margin: 40px auto;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
background: #fcfcfd;
|
||||||
|
border: 1px solid #ffffff;
|
||||||
|
box-shadow: 0px 3px 10px -2px rgba(9, 9, 11, 0.08), 0px 2px 4px -2px rgba(9, 9, 11, 0.06);
|
||||||
|
border-radius: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-header {
|
||||||
|
padding: 36px 48px 24px;
|
||||||
|
min-height: 101px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 16px;
|
||||||
|
padding: 8px 48px 48px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 120%;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-group {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 12px;
|
||||||
|
padding: 16px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-text {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 20px;
|
||||||
|
letter-spacing: -0.005em;
|
||||||
|
color: #354052;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-text strong {
|
||||||
|
font-weight: 600;
|
||||||
|
color: #101828;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta {
|
||||||
|
display: inline-flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 504px;
|
||||||
|
height: 32px;
|
||||||
|
padding: 0 16px;
|
||||||
|
gap: 8px;
|
||||||
|
background: #1677ff;
|
||||||
|
border-radius: 6px;
|
||||||
|
text-decoration: none;
|
||||||
|
color: #ffffff !important;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 22px;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
|
||||||
|
.note {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 20px;
|
||||||
|
letter-spacing: -0.005em;
|
||||||
|
color: #354052;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header"></div>
|
||||||
|
<div class="card-content">
|
||||||
|
<h1 class="title">您的 API 速率额度接近上限</h1>
|
||||||
|
<div class="body-group">
|
||||||
|
<p class="body-text">
|
||||||
|
您的工作区 <strong>{{workspaceName}}</strong> 已使用 <strong>80% 的 Monthly API Rate Limit</strong>,触及
|
||||||
|
<strong>{{planName}} 计划(上限:{{planLimit}})</strong>。
|
||||||
|
</p>
|
||||||
|
<p class="body-text">
|
||||||
|
一旦达到上限,API 访问将暂停,直至下一个月度重置。
|
||||||
|
</p>
|
||||||
|
<p class="body-text">
|
||||||
|
为避免服务中断并持续访问 Dify API,请考虑升级到额度更高的套餐。
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<a class="cta" href="{{upgradeUrl}}" target="_blank" rel="noopener noreferrer">{{ctaLabel}}</a>
|
||||||
|
<p class="note">
|
||||||
|
<strong>{{planName}} 计划的 Monthly API Rate Limit</strong> 将于 <strong>{{resetDate}}</strong> 重置。
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
Loading…
Reference in New Issue
Block a user