"""
AI 金句工坊 - 后端服务
调用 AI API 根据主题生成名言金句
适合创客课程教学使用
"""

from flask import Flask, request, jsonify, send_from_directory
from flask_cors import CORS
import os
import json
from openai import OpenAI
from dotenv import load_dotenv

# 加载 .env 配置
load_dotenv()

app = Flask(__name__, static_folder='.')
CORS(app)

# ============ 配置 ============
MOCK_MODE = os.getenv("MOCK", "false").lower() == "true"
API_KEY = os.getenv("DEEPSEEK_API_KEY", "")
API_BASE = os.getenv("API_BASE", "https://api.deepseek.com/v1")
API_MODEL = os.getenv("API_MODEL", "deepseek-chat")

# 创建 AI 客户端（兼容 OpenAI / DeepSeek / 任何 OpenAI 兼容 API）
client = OpenAI(api_key=API_KEY, base_url=API_BASE)


# ============ 模拟数据（无 API Key 时可用） ============
MOCK_QUOTES = [
    {"quote": "不积跬步，无以至千里", "author": "荀子"},
    {"quote": "学而不思则罔，思而不学则殆", "author": "孔子"},
    {"quote": "想象力比知识更重要", "author": "爱因斯坦"},
    {"quote": "生活就像一盒巧克力，你永远不知道下一颗是什么味道", "author": "阿甘正传"},
    {"quote": "唯一确定的就是不确定", "author": "赫拉克利特"},
    {"quote": "创新就是把事物联系起来", "author": "乔布斯"},
    {"quote": "种一棵树最好的时间是十年前，其次是现在", "author": "Dambisa Moyo"},
    {"quote": "人生没有白走的路，每一步都算数", "author": "李宗盛"},
]

def get_mock_quote(topic):
    """根据主题返回模拟金句"""
    for q in MOCK_QUOTES:
        for word in topic:
            if word in q["quote"] or word in q["author"]:
                return {"quote": q["quote"], "author": q["author"]}
    import random
    return random.choice(MOCK_QUOTES)


# ============ API 路由 ============

@app.route('/')
def index():
    """返回前端页面"""
    return send_from_directory('.', 'index.html')


@app.route('/api/quote', methods=['POST'])
def generate_quote():
    """
    金句生成接口
    请求体: {"topic": "坚持"}
    返回:   {"quote": "不积跬步...", "author": "荀子"}
    """
    data = request.get_json()
    topic = data.get('topic', '').strip()

    if not topic:
        return jsonify({'error': '请输入一个主题'}), 400

    # ----- 模拟模式（演示用，无需 API Key） -----
    if MOCK_MODE:
        return jsonify(get_mock_quote(topic))

    # ----- 真实模式（调用 AI API） -----
    system_prompt = """你是一个金句生成器。根据用户输入的主题，生成一句有哲理的名言金句，并注明作者。
要求：
1. 金句要切题、有深度
2. 作者可以是真实人物，也可以是虚构的
3. 只返回纯 JSON 格式，不要其他文字
4. 格式: {"quote": "金句内容", "author": "作者名"}"""

    try:
        response = client.chat.completions.create(
            model=API_MODEL,
            messages=[
                {"role": "system", "content": system_prompt},
                {"role": "user", "content": f"主题：{topic}"}
            ],
            temperature=0.8,
            max_tokens=200
        )

        content = response.choices[0].message.content.strip()
        # 处理 AI 可能返回的 markdown 代码块
        if content.startswith("```"):
            content = content.split("\n", 1)[1].rsplit("\n", 1)[0]
        result = json.loads(content)
        return jsonify(result)

    except json.JSONDecodeError:
        return jsonify({
            'quote': content,
            'author': 'AI 生成'
        })
    except Exception as e:
        return jsonify({'error': f'AI 调用失败：{str(e)}'}), 500


# ============ 启动 ============
if __name__ == '__main__':
    mode = "🎯 模拟模式（无需 API Key）" if MOCK_MODE else "🤖 真实模式（调用 AI API）"
    print("=" * 45)
    print("  🚀 AI 金句工坊 已启动！")
    print("=" * 45)
    print(f"  📌 模式：{mode}")
    print(f"  🔗 地址：http://localhost:5000")
    print(f"  📖 API 接口：POST /api/quote")
    print("=" * 45)
    app.run(host='0.0.0.0', port=5000, debug=True)
