Add LOG_LEVEL env config and fix Nalogo receipt trigger

This commit is contained in:
machka pasla
2026-01-14 16:03:21 +03:00
parent 658139d607
commit 08aca3b28d
4 changed files with 35 additions and 2 deletions
+1
View File
@@ -164,6 +164,7 @@ WEB_SERVER_PORT=8080
# Admin Panel Log Pagination # Admin Panel Log Pagination
LOGS_PAGE_SIZE=10 # Number of events in the log LOGS_PAGE_SIZE=10 # Number of events in the log
LOG_LEVEL=INFO # Global log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
# Admin Logging Configuration # Admin Logging Configuration
LOG_CHAT_ID=-1001234567890 # Telegram chat/group ID for admin notifications LOG_CHAT_ID=-1001234567890 # Telegram chat/group ID for admin notifications
+3 -1
View File
@@ -164,8 +164,10 @@ async def process_successful_payment(session: AsyncSession, bot: Bot,
should_send_nalogo_receipt = bool( should_send_nalogo_receipt = bool(
nalogo_service nalogo_service
and nalogo_service.configured and nalogo_service.configured
and payment_info_from_webhook.get("paid") is True
and payment_info_from_webhook.get("status") == "succeeded"
and payment_before_update and payment_before_update
and not payment_before_update.yookassa_payment_id and payment_before_update.status != "succeeded"
) )
# Try to capture and save payment method for future charges if available # Try to capture and save payment method for future charges if available
try: try:
+13
View File
@@ -497,9 +497,22 @@ class Settings(BaseSettings):
return methods or default_order return methods or default_order
# Logging Configuration # Logging Configuration
LOG_LEVEL: str = Field(
default="INFO",
description="Global log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)",
)
LOG_CHAT_ID: Optional[int] = Field(default=None, description="Telegram chat/group ID for sending notifications") LOG_CHAT_ID: Optional[int] = Field(default=None, description="Telegram chat/group ID for sending notifications")
LOG_THREAD_ID: Optional[int] = Field(default=None, description="Thread ID for supergroup messages (optional)") LOG_THREAD_ID: Optional[int] = Field(default=None, description="Thread ID for supergroup messages (optional)")
@field_validator('LOG_LEVEL', mode='before')
@classmethod
def normalize_log_level(cls, v):
if isinstance(v, str):
v = v.strip().upper()
if not v:
return "INFO"
return v
@field_validator('LOG_CHAT_ID', 'LOG_THREAD_ID', mode='before') @field_validator('LOG_CHAT_ID', 'LOG_THREAD_ID', mode='before')
@classmethod @classmethod
def validate_optional_int_fields(cls, v): def validate_optional_int_fields(cls, v):
+18 -1
View File
@@ -1,5 +1,6 @@
import asyncio import asyncio
import logging import logging
import os
import sys import sys
from dotenv import load_dotenv from dotenv import load_dotenv
@@ -9,6 +10,21 @@ from config.settings import get_settings, Settings
from db.database_setup import init_db, init_db_connection from db.database_setup import init_db, init_db_connection
def _resolve_log_level(value: str) -> int:
if not value:
return logging.INFO
if isinstance(value, str):
normalized = value.strip()
if not normalized:
return logging.INFO
if normalized.isdigit():
return int(normalized)
level = getattr(logging, normalized.upper(), None)
if isinstance(level, int):
return level
return logging.INFO
async def main(): async def main():
load_dotenv() load_dotenv()
settings = get_settings() settings = get_settings()
@@ -25,8 +41,9 @@ async def main():
if __name__ == "__main__": if __name__ == "__main__":
load_dotenv()
logging.basicConfig( logging.basicConfig(
level=logging.INFO, level=_resolve_log_level(os.getenv("LOG_LEVEL", "INFO")),
stream=sys.stdout, stream=sys.stdout,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
try: try: