feat: 首页功能特点根据用户类型动态显示
- 访客/免费/VIP各等级显示不同可用功能 - 有权限显示✅,无权限显示❌ - 添加.gitignore排除uploads/outputs/cache目录
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,3 +1,6 @@
|
|||||||
instance/
|
instance/
|
||||||
*.db
|
*.db
|
||||||
__pycache__/
|
__pycache__/
|
||||||
|
uploads/
|
||||||
|
outputs/
|
||||||
|
cache/
|
||||||
|
|||||||
37
app.py
37
app.py
@@ -120,12 +120,47 @@ def index():
|
|||||||
daily_remaining = limits['daily_translations'] - guest.daily_count
|
daily_remaining = limits['daily_translations'] - guest.daily_count
|
||||||
max_pages = limits['max_pages']
|
max_pages = limits['max_pages']
|
||||||
|
|
||||||
|
# 获取用户的功能列表
|
||||||
|
if user:
|
||||||
|
user_features = limits.get('features', [])
|
||||||
|
else:
|
||||||
|
user_features = USER_LIMITS['guest']['features']
|
||||||
|
|
||||||
|
# 定义所有功能及其描述
|
||||||
|
all_features = {
|
||||||
|
'basic_translate': {'name': '自动翻译缓存,相同文件秒出结果', 'base': True},
|
||||||
|
'custom_instruction': {'name': '自定义翻译要求', 'base': False},
|
||||||
|
'compare_view': {'name': '原文译文对比查看', 'base': False},
|
||||||
|
'history': {'name': '翻译历史记录', 'base': False},
|
||||||
|
'retranslate': {'name': '不满意重新翻译', 'base': False},
|
||||||
|
'export_pdf': {'name': '导出PDF格式', 'base': False},
|
||||||
|
'batch_translate': {'name': '批量翻译', 'base': False},
|
||||||
|
'custom_terms': {'name': '自定义术语库', 'base': False},
|
||||||
|
'priority_queue': {'name': '优先队列处理', 'base': False},
|
||||||
|
}
|
||||||
|
|
||||||
|
# 判断功能是否可用(vip_enterprise 的 features=["all"] 表示全部可用)
|
||||||
|
if user_features == ['all']:
|
||||||
|
user_features = list(all_features.keys())
|
||||||
|
|
||||||
|
# 构建功能展示列表
|
||||||
|
feature_display = []
|
||||||
|
for feat_key, feat_info in all_features.items():
|
||||||
|
has_feature = feat_key in user_features
|
||||||
|
# 基础功能(所有用户都有)不显示,只显示需要权限的功能
|
||||||
|
if not feat_info['base']:
|
||||||
|
feature_display.append({
|
||||||
|
'name': feat_info['name'],
|
||||||
|
'has': has_feature
|
||||||
|
})
|
||||||
|
|
||||||
return render_template('index.html',
|
return render_template('index.html',
|
||||||
user=user,
|
user=user,
|
||||||
limits=limits,
|
limits=limits,
|
||||||
daily_remaining=daily_remaining,
|
daily_remaining=daily_remaining,
|
||||||
max_pages=max_pages,
|
max_pages=max_pages,
|
||||||
plans=MEMBERSHIP_PLANS
|
plans=MEMBERSHIP_PLANS,
|
||||||
|
features=feature_display
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -72,10 +72,13 @@
|
|||||||
<h5 class="card-title">✨ 功能特点</h5>
|
<h5 class="card-title">✨ 功能特点</h5>
|
||||||
<ul class="list-unstyled">
|
<ul class="list-unstyled">
|
||||||
<li>✅ 自动翻译缓存,相同文件秒出结果</li>
|
<li>✅ 自动翻译缓存,相同文件秒出结果</li>
|
||||||
<li>✅ 支持自定义翻译要求</li>
|
{% for feat in features %}
|
||||||
<li>✅ 原文译文对比查看</li>
|
<li>{% if feat.has %}✅{% else %}❌{% endif %} {{ feat.name }}</li>
|
||||||
<li>✅ 翻译历史记录</li>
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
|
{% if not user or user.user_type == 'free' %}
|
||||||
|
<small class="text-muted">❌ 标记为会员专属功能,<a href="/pricing">升级会员</a>解锁</small>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user