# -*- coding: utf-8 -*-

import random
import time


def human_short_review_before_publish(page, min_ms=5000, max_ms=15000):
    """
    하단 코멘트 입력 후 짧게 읽어보는 느낌의 랜덤 검토 행동.
    """
    try:
        min_ms = int(min_ms or 5000)
        max_ms = int(max_ms or 15000)
    except Exception:
        min_ms = 5000
        max_ms = 15000

    if max_ms < min_ms:
        max_ms = min_ms

    wait_ms = random.randint(min_ms, max_ms)
    print("[SHORT REVIEW WAIT START]", f"{wait_ms}ms")

    elapsed = 0

    while elapsed < wait_ms:
        try:
            if random.random() < 0.55:
                page.mouse.wheel(0, random.randint(-350, 550))
            else:
                page.mouse.move(
                    random.randint(360, 1180),
                    random.randint(180, 760),
                    steps=random.randint(8, 18),
                )
        except Exception:
            pass

        chunk = min(random.randint(1200, 3200), wait_ms - elapsed)
        page.wait_for_timeout(chunk)
        elapsed += chunk

    print("[SHORT REVIEW WAIT DONE]", f"{elapsed}ms")
    return elapsed


def human_wait_before_publish(page, min_seconds=30, max_seconds=120):
    """
    최종 발행 버튼 누르기 전 검토 대기.
    STEP104에서는 하단 코멘트 실제 타이핑이 있으므로 30~120초 기본.
    """
    try:
        min_seconds = int(min_seconds or 30)
        max_seconds = int(max_seconds or 120)
    except Exception:
        min_seconds = 30
        max_seconds = 120

    if min_seconds < 0:
        min_seconds = 0

    if max_seconds < min_seconds:
        max_seconds = min_seconds

    wait_seconds = random.randint(min_seconds, max_seconds)

    if wait_seconds <= 0:
        print("[HUMAN WAIT BEFORE PUBLISH SKIP] wait_seconds=0")
        return 0

    print(
        "[HUMAN WAIT BEFORE PUBLISH START]",
        f"wait_seconds={wait_seconds}",
        f"range={min_seconds}~{max_seconds}"
    )

    elapsed = 0

    while elapsed < wait_seconds:
        try:
            if random.random() < 0.55:
                page.mouse.wheel(0, random.randint(-450, 750))
            else:
                page.mouse.move(
                    random.randint(420, 1180),
                    random.randint(180, 760),
                    steps=random.randint(8, 22)
                )
        except Exception as e:
            print("[HUMAN WAIT ACTION WARN]", str(e))

        chunk = random.randint(25, 70)
        chunk = min(chunk, wait_seconds - elapsed)

        time.sleep(chunk)
        elapsed += chunk

        print(
            "[HUMAN WAIT BEFORE PUBLISH PROGRESS]",
            f"elapsed={elapsed}",
            f"remain={max(0, wait_seconds - elapsed)}"
        )

    print("[HUMAN WAIT BEFORE PUBLISH DONE]", f"elapsed={elapsed}")
    return wait_seconds
