Notify moderators about service center applications

This commit is contained in:
VPN SaaS Dev
2026-05-15 04:45:54 +09:00
parent c0014ab4ea
commit 85b46a94b9
4 changed files with 65 additions and 17 deletions

View File

@@ -1,12 +1,10 @@
from datetime import UTC, datetime
import httpx
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from app.api.deps import get_current_telegram_user, log_audit, require_platform_role
from app.core.config import settings
from app.db.session import get_session
from app.models.car import (
AuditLog,
@@ -17,6 +15,7 @@ from app.models.car import (
)
from app.models.user import User
from app.schemas.service_center import AdminModerationDecision, ServiceCenterRead, ServiceVisitRead
from app.services.notifications import notify_user
router = APIRouter(prefix="/admin", tags=["admin"])
@@ -261,16 +260,3 @@ async def ensure_owner_employee(session: AsyncSession, service_center_id: int, o
else:
employee.role = "owner"
employee.status = "active"
async def notify_user(user: User, text: str) -> None:
if not settings.bot_token:
return
try:
async with httpx.AsyncClient(timeout=5) as client:
await client.post(
f"https://api.telegram.org/bot{settings.bot_token}/sendMessage",
data={"chat_id": str(user.telegram_id), "text": text},
)
except Exception:
return

View File

@@ -46,6 +46,7 @@ from app.schemas.service_center import (
VehicleSearchRequest,
VehicleSearchResult,
)
from app.services.notifications import notify_platform_moderators
from app.services.odometer import validate_odometer_change
from app.services.vehicle_identity import mask_license_plate, mask_vin
@@ -101,9 +102,19 @@ async def create_service_center(
status="active",
)
session.add(employee)
await log_audit(session, actor=current_user, action="service_center.create", target_type="service_center", target_id=center.id)
await log_audit(
session,
actor=current_user,
action="service_center.create",
target_type="service_center",
target_id=center.id,
)
await session.commit()
await session.refresh(center)
await notify_platform_moderators(
session,
f"Новая заявка СТО #{center.id}: {center.display_name or center.name}. Откройте /admin_sto_pending для модерации.",
)
return center