# 转录模板蓝图
# 处理转录模板的增删改查

from flask import Blueprint, request, jsonify, current_app
from flask_login import login_required, current_user
from src.clients import db
from src.models import TranscriptTemplate

# 创建蓝图
template_bp = Blueprint('template', __name__)

# 全局变量
csrf = None

def init_template_bp(csrf_instance):
    """初始化蓝图所需的全局变量"""
    global csrf
    csrf = csrf_instance

@template_bp.route('/api/transcript-templates', methods=['GET'])
@login_required
def get_transcript_templates():
    """获取所有转录模板"""
    templates = TranscriptTemplate.query.filter_by(user_id=current_user.id).all()
    return jsonify([{
        'id': t.id,
        'name': t.name,
        'description': t.description,
        'template_content': t.template_content,
        'created_at': t.created_at.isoformat() if t.created_at else None,
        'updated_at': t.updated_at.isoformat() if t.updated_at else None
    } for t in templates])

@template_bp.route('/api/transcript-templates', methods=['POST'])
@login_required
def create_transcript_template():
    """创建新的转录模板"""
    data = request.json
    if not data or not data.get('name') or not data.get('template_content'):
        return jsonify({'error': '缺少必填字段'}), 400
    
    template = TranscriptTemplate(
        user_id=current_user.id,
        name=data['name'],
        description=data.get('description', ''),
        template_content=data['template_content']
    )
    db.session.add(template)
    db.session.commit()
    
    return jsonify({
        'id': template.id,
        'name': template.name,
        'description': template.description,
        'template_content': template.template_content,
        'created_at': template.created_at.isoformat() if template.created_at else None
    }), 201

@template_bp.route('/api/transcript-templates/<int:template_id>', methods=['PUT'])
@login_required
def update_transcript_template(template_id):
    """更新转录模板"""
    template = TranscriptTemplate.query.filter_by(id=template_id, user_id=current_user.id).first()
    if not template:
        return jsonify({'error': '模板不存在'}), 404
    
    data = request.json
    if data.get('name'):
        template.name = data['name']
    if 'description' in data:
        template.description = data['description']
    if data.get('template_content'):
        template.template_content = data['template_content']
    
    db.session.commit()
    
    return jsonify({
        'id': template.id,
        'name': template.name,
        'description': template.description,
        'template_content': template.template_content,
        'updated_at': template.updated_at.isoformat() if template.updated_at else None
    })

@template_bp.route('/api/transcript-templates/<int:template_id>', methods=['DELETE'])
@login_required
def delete_transcript_template(template_id):
    """删除转录模板"""
    template = TranscriptTemplate.query.filter_by(id=template_id, user_id=current_user.id).first()
    if not template:
        return jsonify({'error': '模板不存在'}), 404
    
    db.session.delete(template)
    db.session.commit()
    
    return jsonify({'message': '模板已删除'})

@template_bp.route('/api/transcript-templates/create-defaults', methods=['POST'])
@login_required
def create_default_templates():
    """创建默认模板"""
    # 检查是否已有模板
    existing = TranscriptTemplate.query.filter_by(user_id=current_user.id).first()
    if existing:
        return jsonify({'message': '已有模板，跳过创建默认模板'})
    
    # 创建默认模板
    defaults = [
        {
            'name': '会议记录',
            'description': '标准会议记录模板',
            'template_content': '# 会议记录\n\n## 参会人员\n- \n\n## 议题\n1. \n\n## 讨论内容\n\n## 决议事项\n- \n\n## 下一步行动\n- '
        },
        {
            'name': '访谈记录',
            'description': '访谈或采访记录模板',
            'template_content': '# 访谈记录\n\n## 受访者信息\n- 姓名：\n- 职位：\n- 日期：\n\n## 访谈主题\n\n## 问答记录\n### Q1:\nA:\n\n### Q2:\nA:\n\n## 关键要点\n- \n\n## 后续跟进\n- '
        }
    ]
    
    for d in defaults:
        template = TranscriptTemplate(
            user_id=current_user.id,
            name=d['name'],
            description=d['description'],
            template_content=d['template_content']
        )
        db.session.add(template)
    
    db.session.commit()
    return jsonify({'message': f'已创建 {len(defaults)} 个默认模板'})
