#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from __future__ import annotations

from app_logger import LoggerAdapter
from app_security import escape_html
from services.runtime import get_socketio
from services.state import safe_add_log
from services.time_utils import get_beijing_now


def log_to_client(message, user_id=None, account_id=None):
    """发送日志到Web客户端(用户隔离) + 统一输出到 logger。"""
    timestamp = get_beijing_now().strftime('%H:%M:%S')
    log_data = {
        'timestamp': timestamp,
        'message': escape_html(str(message)) if message else '',
        'account_id': account_id
    }

    if user_id:
        safe_add_log(user_id, log_data)
        get_socketio().emit('log', log_data, room=f'user_{user_id}')

    ctx = {}
    if user_id is not None:
        ctx["user_id"] = user_id
    if account_id:
        ctx["account_id"] = account_id
    LoggerAdapter("app", ctx).info(str(message) if message is not None else "")

