微信自动回复机器人,基于截图+OCR识别消息,支持关键词规则和 AI(OpenAI/DeepSeek/Dify)自动回复。 技术栈:PySide6 + Flask + Vue3 + RapidOCR + SQLite 注:OCR大模型文件(.onnx / .pdiparams)不纳入版本控制,需单独下载。 🤖 Generated with [Qoder][https://qoder.com]
46 lines
1.7 KiB
Python
46 lines
1.7 KiB
Python
import os
|
|
from pathlib import Path
|
|
|
|
from flask import Flask, request
|
|
|
|
from app.configs.runtime_config import get_int, get_str
|
|
|
|
PROJECT_ROOT = Path(__file__).resolve().parents[4]
|
|
|
|
ASSETS_DIR = PROJECT_ROOT / "assets"
|
|
FRONTEND_DIST_DIR = PROJECT_ROOT / "frontend" / "dist"
|
|
_frontend_static_dir = get_str("FRONTEND_STATIC_DIR", "").strip()
|
|
FRONTEND_STATIC_DIR = Path(_frontend_static_dir).resolve() if _frontend_static_dir else None
|
|
STATIC_DIR = FRONTEND_STATIC_DIR or (FRONTEND_DIST_DIR if FRONTEND_DIST_DIR.exists() else ASSETS_DIR)
|
|
|
|
DB_HOST = get_str("DB_HOST", "127.0.0.1")
|
|
DB_PORT = get_int("DB_PORT", 3306)
|
|
DB_NAME = get_str("DB_NAME", "ai_shiliu")
|
|
DB_USER = get_str("DB_USER", "ai_shiliu")
|
|
DB_PASS = get_str("DB_PASS", "")
|
|
DB_CHARSET = get_str("DB_CHARSET", "utf8mb4")
|
|
|
|
AI_PROVIDER = get_str("AI_PROVIDER", "")
|
|
OPENAI_API_KEY = get_str("OPENAI_API_KEY", "")
|
|
OPENAI_API_BASE = get_str("OPENAI_API_BASE", "")
|
|
OPENAI_MODEL = get_str("OPENAI_MODEL", "")
|
|
DEEPSEEK_API_KEY = get_str("DEEPSEEK_API_KEY", "")
|
|
DEEPSEEK_API_BASE = get_str("DEEPSEEK_API_BASE", "")
|
|
DEEPSEEK_MODEL = get_str("DEEPSEEK_MODEL", "")
|
|
DIFY_API_KEY = get_str("DIFY_API_KEY", "")
|
|
DIFY_API_BASE = get_str("DIFY_API_BASE", "")
|
|
DIFY_USER = get_str("DIFY_USER", "")
|
|
|
|
app = Flask(__name__, static_folder=str(STATIC_DIR), static_url_path="")
|
|
|
|
|
|
@app.after_request
|
|
def add_cors_headers(response):
|
|
origin = (request.headers.get("Origin") or "").strip()
|
|
allow_origin = origin or "*"
|
|
response.headers["Access-Control-Allow-Origin"] = allow_origin
|
|
response.headers["Vary"] = "Origin"
|
|
response.headers["Access-Control-Allow-Headers"] = "Content-Type, Authorization"
|
|
response.headers["Access-Control-Allow-Methods"] = "GET, POST, OPTIONS"
|
|
return response
|