"""路径助手（v3.0 跨平台兼容）

所有脚本统一通过本模块获取 WORKSPACE_ROOT，避免硬编码本机绝对路径

【探测优先级】
1. 环境变量 INQUIRY_KIT_ROOT（用户可手动覆盖）
2. 脚本所在目录的上一级（python xxx.py 直接运行时）
3. 当前工作目录（兜底）

【跨平台保证】
- Path 全程使用 pathlib，Windows 反斜杠和 Mac 正斜杠都能正确处理
- 输出路径不含任何用户名 / 桌面 / 盘符等硬编码
"""
from __future__ import annotations
import os
from pathlib import Path


def get_workspace_root() -> Path:
    """返回 INQUIRY_KIT 工作目录绝对路径"""
    # 1. 环境变量优先
    env = os.environ.get("INQUIRY_KIT_ROOT")
    if env:
        p = Path(env).expanduser().resolve()
        if p.exists():
            return p

    # 2. 脚本所在目录的上一级
    #    本文件位于 <root>/scripts/_path_helper.py，故 root = parent.parent
    here = Path(__file__).resolve()
    candidate = here.parent.parent
    if (candidate / "scripts").exists():
        return candidate

    # 3. 兜底：当前工作目录
    return Path.cwd().resolve()


def get_subdir(name: str, create: bool = True) -> Path:
    """获取工作目录下的子目录"""
    p = get_workspace_root() / name
    if create:
        p.mkdir(exist_ok=True)
    return p


# 常用子目录快捷访问
def scripts_dir() -> Path:
    return get_subdir("scripts", create=False)


def engine_dir() -> Path:
    return get_subdir("scripts_engine", create=False)


def outputs_dir() -> Path:
    return get_subdir("outputs")


def config_dir() -> Path:
    return get_subdir("config")


def state_dir() -> Path:
    return get_subdir("state")


def push_payloads_dir() -> Path:
    return get_subdir("outputs") / "push_payloads"


if __name__ == "__main__":
    print(f"WORKSPACE_ROOT  : {get_workspace_root()}")
    print(f"scripts_dir     : {scripts_dir()}")
    print(f"engine_dir      : {engine_dir()}")
    print(f"outputs_dir     : {outputs_dir()}")
    print(f"config_dir      : {config_dir()}")
    print(f"state_dir       : {state_dir()}")
