diff --git a/src/flask_prompt_master/routes/routes.py b/src/flask_prompt_master/routes/routes.py index ed8a9fd..52f6ea5 100644 --- a/src/flask_prompt_master/routes/routes.py +++ b/src/flask_prompt_master/routes/routes.py @@ -174,6 +174,59 @@ def get_template_icon(category): } return icons.get(category, 'fa-star') # 默认返回星星图标 + +def build_sample_input_text(template): + """选择模板时填入输入框的示例需求文案(不自动调用 LLM)""" + name = (template.name or '模板').strip() + desc = (template.description or '').strip() + if desc: + return ( + f"我的需求背景:\n{desc}\n\n" + f"请结合「{name}」的能力,帮我生成专业提示词。可补充:受众、语气、篇幅与输出格式。" + ) + return ( + f"我想使用「{name}」完成以下任务:\n\n" + f"【请描述具体目标、约束条件、参考材料与期望的输出形式】" + ) + + +def select_quick_start_templates(template_list, limit=5): + """从当前列表中选取若干模板用于「快速开始」""" + pool = list(template_list or []) + if not pool: + return [] + + def score(t): + s = 0 + if getattr(t, 'is_default', False): + s += 100 + if getattr(t, 'is_hot', False): + s += 50 + if getattr(t, 'is_recommended', False): + s += 40 + if getattr(t, 'is_featured', False): + s += 30 + return s + + pool.sort(key=lambda t: (-score(t), (t.name or ''))) + out = [] + seen = set() + for t in pool: + if t.id in seen: + continue + seen.add(t.id) + out.append(t) + if len(out) >= limit: + break + return out + + +@main_bp.route('/featured') +def featured_hub(): + """特色功能:更多 AI 应用入口(二级页面)""" + return render_template('featured_hub.html') + + @main_bp.route('/', methods=['GET', 'POST']) def index(): form = PromptForm() @@ -183,6 +236,8 @@ def index(): # 默认只显示"通用"分类的模板,提升加载性能 templates = PromptTemplate.query.filter_by(category="通用").all() + sample_inputs = {t.id: build_sample_input_text(t) for t in templates} + quick_start_templates = select_quick_start_templates(templates, 5) # 获取所有可用的分类选项(基于所有模板) industries = sorted(set(t.industry for t in all_templates if t.industry)) @@ -207,7 +262,9 @@ def index(): return render_template('generate.html', form=form, prompt=None, templates=templates, get_template_icon=get_template_icon, industries=industries, professions=professions, categories=categories, - sub_categories=sub_categories) + sub_categories=sub_categories, + sample_inputs=sample_inputs, + quick_start_templates=quick_start_templates) # 调用LLM生成提示词 generated_text = generate_with_llm(input_text, template_id) @@ -218,7 +275,9 @@ def index(): return render_template('generate.html', form=form, prompt=None, templates=templates, get_template_icon=get_template_icon, industries=industries, professions=professions, categories=categories, - sub_categories=sub_categories) + sub_categories=sub_categories, + sample_inputs=sample_inputs, + quick_start_templates=quick_start_templates) # 获取搜索状态 search_state = request.form.get('search_state', '') @@ -250,7 +309,9 @@ def index(): get_template_icon=get_template_icon, industries=industries, professions=professions, categories=categories, sub_categories=sub_categories, selected_template_id=template_id, - search_state=search_state) + search_state=search_state, + sample_inputs=sample_inputs, + quick_start_templates=quick_start_templates) except Exception as e: current_app.logger.error(f"生成提示词时发生错误: {str(e)}") @@ -259,11 +320,15 @@ def index(): return render_template('generate.html', form=form, prompt=None, templates=templates, get_template_icon=get_template_icon, industries=industries, professions=professions, categories=categories, - sub_categories=sub_categories) + sub_categories=sub_categories, + sample_inputs=sample_inputs, + quick_start_templates=quick_start_templates) return render_template('generate.html', form=form, prompt=None, templates=templates, get_template_icon=get_template_icon, industries=industries, professions=professions, categories=categories, - sub_categories=sub_categories) + sub_categories=sub_categories, + sample_inputs=sample_inputs, + quick_start_templates=quick_start_templates) @main_bp.route('/api/templates/') def get_templates_by_category(category): @@ -284,14 +349,22 @@ def get_templates_by_category(category): 'industry': template.industry, 'profession': template.profession, 'sub_category': template.sub_category, - 'system_prompt': template.system_prompt + 'system_prompt': template.system_prompt, + 'sample_input': build_sample_input_text(template), } template_list.append(template_dict) - + + qs = select_quick_start_templates(templates, 5) + quick_start = [ + {'id': t.id, 'name': t.name, 'sample_input': build_sample_input_text(t)} + for t in qs + ] + return jsonify({ 'success': True, 'templates': template_list, - 'count': len(template_list) + 'count': len(template_list), + 'quick_start': quick_start, }) @main_bp.route('/prompt/') diff --git a/src/flask_prompt_master/templates/base.html b/src/flask_prompt_master/templates/base.html index c99a24a..065cc26 100644 --- a/src/flask_prompt_master/templates/base.html +++ b/src/flask_prompt_master/templates/base.html @@ -580,6 +580,10 @@ 首页 + + + 特色功能 +
diff --git a/src/flask_prompt_master/templates/featured_hub.html b/src/flask_prompt_master/templates/featured_hub.html new file mode 100644 index 0000000..262204f --- /dev/null +++ b/src/flask_prompt_master/templates/featured_hub.html @@ -0,0 +1,20 @@ +{% extends "base.html" %} + +{% block title %}特色功能{% endblock %} + +{% block extra_css %} + +{% endblock %} + +{% block content %} + +{% endblock %} diff --git a/src/flask_prompt_master/templates/generate.html b/src/flask_prompt_master/templates/generate.html index ccee360..4478c0b 100644 --- a/src/flask_prompt_master/templates/generate.html +++ b/src/flask_prompt_master/templates/generate.html @@ -7,16 +7,17 @@
- - -