99 lines
3.3 KiB
Python
99 lines
3.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
from flask import Blueprint, request, jsonify, render_template
|
|
from src.flask_prompt_master.services.favorite_service import FavoriteService
|
|
|
|
favorites_bp = Blueprint('favorites', __name__)
|
|
|
|
@favorites_bp.route('/favorites', methods=['GET'])
|
|
def favorites_page():
|
|
"""收藏页面"""
|
|
return render_template('favorites.html')
|
|
|
|
@favorites_bp.route('/api/favorites', methods=['GET'])
|
|
def get_favorites():
|
|
"""获取收藏列表"""
|
|
page = request.args.get('page', 1, type=int)
|
|
per_page = request.args.get('per_page', 10, type=int)
|
|
search = request.args.get('search', '')
|
|
category = request.args.get('category', 'all')
|
|
|
|
result = FavoriteService.get_favorites(
|
|
request, page, per_page, search, category
|
|
)
|
|
|
|
return jsonify(result)
|
|
|
|
@favorites_bp.route('/api/favorites', methods=['POST'])
|
|
def add_favorite():
|
|
"""添加收藏"""
|
|
data = request.get_json()
|
|
|
|
template_id = data.get('template_id')
|
|
original_text = data.get('original_text')
|
|
generated_prompt = data.get('generated_prompt')
|
|
system_prompt = data.get('system_prompt')
|
|
category = data.get('category')
|
|
industry = data.get('industry')
|
|
profession = data.get('profession')
|
|
tags = data.get('tags')
|
|
notes = data.get('notes')
|
|
|
|
if not original_text or not generated_prompt:
|
|
return jsonify({'success': False, 'message': '缺少必要参数'})
|
|
|
|
result = FavoriteService.add_favorite(
|
|
request, template_id, original_text, generated_prompt,
|
|
system_prompt, category, industry, profession, tags, notes
|
|
)
|
|
|
|
return jsonify(result)
|
|
|
|
@favorites_bp.route('/api/favorites/<int:favorite_id>', methods=['GET'])
|
|
def get_favorite_detail(favorite_id):
|
|
"""获取收藏详情"""
|
|
result = FavoriteService.get_favorite_by_id(request, favorite_id)
|
|
return jsonify(result)
|
|
|
|
@favorites_bp.route('/api/favorites/<int:favorite_id>', methods=['PUT'])
|
|
def update_favorite(favorite_id):
|
|
"""更新收藏"""
|
|
data = request.get_json()
|
|
notes = data.get('notes')
|
|
tags = data.get('tags')
|
|
|
|
result = FavoriteService.update_favorite(request, favorite_id, notes, tags)
|
|
return jsonify(result)
|
|
|
|
@favorites_bp.route('/api/favorites/<int:favorite_id>', methods=['DELETE'])
|
|
def delete_favorite(favorite_id):
|
|
"""删除收藏"""
|
|
result = FavoriteService.delete_favorite(request, favorite_id)
|
|
return jsonify(result)
|
|
|
|
@favorites_bp.route('/api/favorites/stats', methods=['GET'])
|
|
def get_favorite_stats():
|
|
"""获取收藏统计信息"""
|
|
result = FavoriteService.get_favorite_stats(request)
|
|
return jsonify(result)
|
|
|
|
@favorites_bp.route('/api/favorites/quick-add', methods=['POST'])
|
|
def quick_add_favorite():
|
|
"""快速添加收藏(从生成页面调用)"""
|
|
data = request.get_json()
|
|
|
|
template_id = data.get('template_id')
|
|
original_text = data.get('original_text')
|
|
generated_prompt = data.get('generated_prompt')
|
|
system_prompt = data.get('system_prompt')
|
|
category = data.get('category')
|
|
|
|
if not original_text or not generated_prompt:
|
|
return jsonify({'success': False, 'message': '缺少必要参数'})
|
|
|
|
result = FavoriteService.add_favorite(
|
|
request, template_id, original_text, generated_prompt,
|
|
system_prompt, category
|
|
)
|
|
|
|
return jsonify(result)
|