modified: backend/app.py
modified: frontend/index.html modified: frontend/js/app.js
This commit is contained in:
@@ -59,9 +59,36 @@ app.register_blueprint(finance_blueprint, url_prefix='/api')
|
||||
app.register_blueprint(team_blueprint, url_prefix='/api')
|
||||
app.register_blueprint(repricer_blueprint, url_prefix='/api')
|
||||
|
||||
# Health check endpoint - проверка состояния приложения и БД
|
||||
from flask import jsonify
|
||||
from .db import get_db_connection, release_db_connection
|
||||
|
||||
@app.route('/api/health')
|
||||
def health_check():
|
||||
db_status = "ok"
|
||||
db_error = None
|
||||
try:
|
||||
conn = get_db_connection()
|
||||
cur = conn.cursor()
|
||||
cur.execute("SELECT 1")
|
||||
release_db_connection(conn)
|
||||
except Exception as e:
|
||||
db_status = "error"
|
||||
db_error = str(e)
|
||||
|
||||
status = "ok" if db_status == "ok" else "degraded"
|
||||
return jsonify({
|
||||
"status": status,
|
||||
"backend": "ok",
|
||||
"database": db_status,
|
||||
"db_error": db_error
|
||||
}), 200 if status == "ok" else 503
|
||||
|
||||
|
||||
import threading
|
||||
import time
|
||||
|
||||
|
||||
def background_scanner():
|
||||
"""Фоновая задача для имитации сканирования маркетплейсов."""
|
||||
while True:
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
<form id="auth-form">
|
||||
<input type="text" id="auth-username" placeholder="Логин" required />
|
||||
<input type="password" id="auth-password" placeholder="Пароль" required />
|
||||
<button type="submit" class="btn-primary" style="width: 100%; margin-top: 1rem;">Войти</button>
|
||||
<button type="submit" id="auth-submit-btn" class="btn-primary" style="width: 100%; margin-top: 1rem;">Войти</button>
|
||||
</form>
|
||||
<p style="margin-top: 1rem; text-align: center;">
|
||||
<a href="#" id="auth-toggle">Нет аккаунта? Зарегистрироваться</a>
|
||||
|
||||
@@ -87,6 +87,7 @@ function initAuth() {
|
||||
const authForm = document.getElementById('auth-form');
|
||||
const toggleBtn = document.getElementById('auth-toggle');
|
||||
const title = document.getElementById('auth-title');
|
||||
const submitBtn = document.getElementById('auth-submit-btn');
|
||||
const logoutBtn = document.getElementById('logout-btn');
|
||||
|
||||
toggleBtn.addEventListener('click', (e) => {
|
||||
@@ -94,6 +95,7 @@ function initAuth() {
|
||||
isLoginMode = !isLoginMode;
|
||||
title.textContent = isLoginMode ? 'Вход в систему' : 'Регистрация';
|
||||
toggleBtn.textContent = isLoginMode ? 'Нет аккаунта? Зарегистрироваться' : 'Уже есть аккаунт? Войти';
|
||||
submitBtn.textContent = isLoginMode ? 'Войти' : 'Зарегистрироваться';
|
||||
});
|
||||
|
||||
authForm.addEventListener('submit', async (e) => {
|
||||
@@ -110,6 +112,7 @@ function initAuth() {
|
||||
isLoginMode = true;
|
||||
title.textContent = 'Вход в систему';
|
||||
toggleBtn.textContent = 'Нет аккаунта? Зарегистрироваться';
|
||||
submitBtn.textContent = 'Войти';
|
||||
return;
|
||||
}
|
||||
window.location.reload();
|
||||
|
||||
Reference in New Issue
Block a user