- Refactor quota management logic to support usage checks scoped by workspace. - Update quota statistics API to return granular quota details for each workspace. - Revise default configuration settings for terminal user and model limits. - Remove quota check decorators from the model controller.
78 lines
2.1 KiB
Python
78 lines
2.1 KiB
Python
"""
|
||
社区版默认免费套餐配置
|
||
当无法从 SaaS 版获取 premium 模块时,使用此配置作为兜底
|
||
|
||
可通过环境变量覆盖配额配置,格式:QUOTA_<QUOTA_NAME>
|
||
例如:QUOTA_END_USER_QUOTA=100
|
||
"""
|
||
|
||
import os
|
||
|
||
|
||
def _get_quota_from_env():
|
||
"""从环境变量获取配额配置"""
|
||
quota_keys = [
|
||
"workspace_quota",
|
||
"skill_quota",
|
||
"app_quota",
|
||
"knowledge_capacity_quota",
|
||
"memory_engine_quota",
|
||
"end_user_quota",
|
||
"ontology_project_quota",
|
||
"model_quota",
|
||
"api_ops_rate_limit",
|
||
]
|
||
quotas = {}
|
||
for key in quota_keys:
|
||
env_key = f"QUOTA_{key.upper()}"
|
||
env_value = os.getenv(env_key)
|
||
if env_value is not None:
|
||
try:
|
||
quotas[key] = float(env_value) if '.' in env_value else int(env_value)
|
||
except ValueError:
|
||
pass
|
||
return quotas
|
||
|
||
|
||
def _build_default_free_plan():
|
||
"""构建默认免费套餐配置"""
|
||
base = {
|
||
"name": "记忆体验版",
|
||
"name_en": "Memory Experience",
|
||
"category": "saas_personal",
|
||
"tier_level": 0,
|
||
"version": "1.0",
|
||
"status": True,
|
||
"price": 0,
|
||
"billing_cycle": "permanent_free",
|
||
"core_value": "感受永久记忆",
|
||
"core_value_en": "Experience Permanent Memory",
|
||
"tech_support": "社群交流",
|
||
"tech_support_en": "Community Support",
|
||
"sla_compliance": "无",
|
||
"sla_compliance_en": "None",
|
||
"page_customization": "无",
|
||
"page_customization_en": "None",
|
||
"theme_color": "#64748B",
|
||
"quotas": {
|
||
"workspace_quota": 1,
|
||
"skill_quota": 5,
|
||
"app_quota": 2,
|
||
"knowledge_capacity_quota": 0.3,
|
||
"memory_engine_quota": 1,
|
||
"end_user_quota": 10,
|
||
"ontology_project_quota": 3,
|
||
"model_quota": 1,
|
||
"api_ops_rate_limit": 50,
|
||
},
|
||
}
|
||
|
||
env_quotas = _get_quota_from_env()
|
||
if env_quotas:
|
||
base["quotas"].update(env_quotas)
|
||
|
||
return base
|
||
|
||
|
||
DEFAULT_FREE_PLAN = _build_default_free_plan()
|