| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- from flask import Blueprint, render_template, send_from_directory, current_app, redirect, url_for, request, jsonify
- from api.utils import login_required, load_led_config
- from application.scheduler_service import scheduler_service
- from application.self_check_service import run_all_checks
- from application.uap_message_service import send_self_check_notification
- from utils.logger_config import logger
- main_bp = Blueprint('main', __name__)
- @main_bp.route('/')
- @login_required
- def index():
- """重定向到 Kodi 控制页面"""
- return redirect(url_for('main.kodi_page'))
- @main_bp.route('/kodi')
- @login_required
- def kodi_page():
- """Kodi 控制页面"""
- return render_template('kodi/index.html', active_page='kodi')
- @main_bp.route('/door')
- @login_required
- def door_page():
- """门禁控制页面"""
- return render_template('door/index.html', active_page='door')
- @main_bp.route('/led')
- @login_required
- def led_page():
- """LED 控制页面"""
- led_segments = load_led_config()
- return render_template('led/index.html', active_page='led', led_segments=led_segments)
- @main_bp.route('/ha')
- @login_required
- def ha_page():
- """HA 灯光控制页面"""
- return render_template('ha/index.html', active_page='ha')
- @main_bp.route('/self_check')
- @login_required
- def self_check_page():
- """设备自检页面"""
- return render_template('self_check.html', active_page='self_check')
- @main_bp.route('/api/send_report', methods=['POST'])
- @login_required
- def send_report_api():
- """手动发送自检报告"""
- try:
- data = request.get_json()
- target_email = data.get('email')
-
- # 执行全量自检
- results = run_all_checks()
-
- # 生成 HTML 报告
- html_report = scheduler_service.format_report_html(results)
-
- # 发送邮件
- subject = "手动触发设备自检报告"
- scheduler_service.send_email(subject, html_report, receivers=target_email)
-
- # 向统一登录平台运维人员推送通知
- summary = scheduler_service._format_summary_text(results)
- send_self_check_notification(summary)
-
- return jsonify({
- "success": True,
- "message": f"自检报告已发送至 {target_email if target_email else '默认邮箱'},并已通知运维人员"
- })
- except Exception as e:
- logger.error(f"发送报告失败: {e}")
- return jsonify({
- "success": False,
- "message": f"发送报告失败: {str(e)}"
- }), 500
- # 提供上传文件的访问接口
- @main_bp.route('/uploads/<filename>')
- def uploaded_file(filename):
- """提供上传文件的访问接口"""
- return send_from_directory(current_app.config['UPLOAD_FOLDER'], filename)
|