Добавление таблицы категорий и .env линков на API ВОЛК
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
2025-11-14 12:30:31 +03:00
parent 6488f40613
commit 57d6d016a7
3 changed files with 45 additions and 51 deletions
+9 -4
View File
@@ -6,6 +6,8 @@ LOG_FILE = /opt/testbot-git/logs/testzilantposter.log
WORKMODE = "VOLK"
# Webhook Responder-bot
WEBHOOK_URL = "https://bot.aabpro.ru/testbot"
WEBHOOK_PORT = 5005
@@ -84,9 +86,6 @@ CHANNEL_ID = "@posto1638"
MAX_CAPTION_LENGTH = 1000
MAX_TEXT_LENGTH = 4000
# Button scripts
# RESCAN_SCRIPT = "vk_load.py"
# PUBLISH_SCRIPT = "tg_publish.py"
# Zilant API call - План Захвата
#
@@ -96,6 +95,12 @@ PZK_PREFIX = "https://reg.konvent.ru/zk2025/draft/plan/api/add/"
EVT_PREFIX = "https://reg.konvent.ru/zk2025/events/actions/api/"
DESC_PREFIX = "https://reg.konvent.ru/zk2025/events/actions/"
# VOLK mode API links
# add category ID (volk24_larp for ex.)
VOLK_CATEGORY_LIST = "https://base-dev.volk-nn.ru/api/categories?event=volk24&form=volk24_event"
VOLK_CATEGORY_DESC_PREFIX = "https://base-dev.volk-nn.ru/api/category?event=volk24&form=volk24_event&category="
VOLK_EVENT_LIST_PREFIX = "https://base-dev.volk-nn.ru/api/applications?event=volk24&form=volk24_event&apps_on_page=100&page=0&category="
# Event status
IS_EVENT = true
AUTO_PUBLISH = false
@@ -106,7 +111,7 @@ USE_SUBSCRIPTION_BOT = false
# OpenRouter
OR_KEY = "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"
# OR_MODEL_NAME = "deepseek/deepseek-chat-v3.1"
OR_MODEL_NAME = "qwen/qwen3-vl-235b-a22b-instruct"
# OR_MODEL_NAME = "deepseek/deepseek-chat-v3.1"
# OR_MODEL_NAME = "deepseek/deepseek-r1-0528:free"
# OR_MODEL_NAME = "qwen/qwen3-coder:free"
-45
View File
@@ -1472,51 +1472,6 @@ def init_db():
ensure_database_structure()
print("Структура базы данных проверена и создана при необходимости")
# Проверяем и создаем таблицу events, если она не существует
# with db.conn.cursor() as cursor:
# cursor.execute("""
# CREATE TABLE IF NOT EXISTS events (
# id INT AUTO_INCREMENT PRIMARY KEY,
# id_event BIGINT NOT NULL,
# number BIGINT NOT NULL,
# unit_name VARCHAR(255),
# name VARCHAR(255),
# about VARCHAR(2048),
# about_social_picture VARCHAR(2048),
# modified DATETIME NULL,
# added DATETIME NULL,
# tags VARCHAR(255),
# is_canceled BOOLEAN DEFAULT 0,
# accepted BOOLEAN DEFAULT 0,
# denied BOOLEAN DEFAULT 0,
# is_visible BOOLEAN DEFAULT 0,
# marked_to_publication BOOLEAN DEFAULT 0,
# is_posted_tg BOOLEAN DEFAULT 0,
# tg_message_id BIGINT NULL DEFAULT NULL,
# tg_posted_date DATETIME NULL,
# announcement_link BIGINT NULL DEFAULT NULL
# ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
# """)
# db.conn.commit()
# print("Таблица events проверена и создана при необходимости")
# Создаем администратора по умолчанию
with db.conn.cursor() as cursor:
cursor.execute("SELECT COUNT(*) as count FROM users")
if cursor.fetchone()['count'] == 0:
username = os.getenv('DEFNM')
password = os.getenv('DEFPW')
if username and password:
hashed_password = generate_password_hash(password)
cursor.execute(
"INSERT INTO users (username, password) VALUES (%s, %s)",
(username, hashed_password)
)
print(f"Created default user: {username}")
else:
print("Environment variables DEFNM/DEFPW not set. Admin not created.")
db.conn.commit()
except Exception as e:
print(f"Database initialization error: {str(e)}")
raise
+36 -2
View File
@@ -6,6 +6,7 @@ import random
from datetime import datetime
from mysql.connector import errorcode
from dotenv import load_dotenv
from werkzeug.security import generate_password_hash
# Загрузка переменных окружения
load_dotenv()
@@ -123,7 +124,7 @@ def ensure_database_structure():
number BIGINT NOT NULL,
unit_name VARCHAR(255),
name VARCHAR(255),
about VARCHAR(2048),
about VARCHAR(4096),
about_social_picture VARCHAR(2048),
modified DATETIME NULL,
added DATETIME NULL,
@@ -154,6 +155,14 @@ def ensure_database_structure():
REFERENCES events(id)
ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
''',
'categories': '''
CREATE TABLE categories (
AUTO_ID INT AUTO_INCREMENT PRIMARY KEY,
NUMBER BIGINT,
ID VARCHAR(255),
TITLE VARCHAR(2048)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
'''
}
@@ -178,6 +187,25 @@ def ensure_database_structure():
log_message(f"Error checking/creating table {table_name}: {err}")
raise err
# Создание дефолтного админа, если таблица users пуста
try:
cursor.execute("SELECT COUNT(*) as count FROM users")
user_count = cursor.fetchone()[0]
if user_count == 0:
username = os.getenv('DEFNM')
password = os.getenv('DEFPW')
if username and password:
hashed_password = generate_password_hash(password)
cursor.execute(
"INSERT INTO users (username, password) VALUES (%s, %s)",
(username, hashed_password)
)
log_message(f"Created default admin user: {username}")
else:
log_message("Environment variables DEFNM/DEFPW not set. Admin not created.")
except mysql.connector.Error as err:
log_message(f"Error creating default admin: {err}")
# Проверка и добавление новых полей в существующие таблицы
table_alterations = {
'posts': [
@@ -254,8 +282,14 @@ def ensure_database_structure():
'CREATE UNIQUE INDEX IF NOT EXISTS uniq_post_event ON interlinks (post_id, event_id)'
]
# Создание индексов для таблицы categories
categories_indexes = [
'CREATE INDEX IF NOT EXISTS idx_categories_number ON categories (NUMBER)',
'CREATE INDEX IF NOT EXISTS idx_categories_id ON categories (ID)'
]
# Объединяем все индексы
all_indexes = marks_indexes + marks_evt_indexes + events_indexes + interlinks_indexes
all_indexes = marks_indexes + marks_evt_indexes + events_indexes + interlinks_indexes + categories_indexes
for index_sql in all_indexes:
try: