"""
标书目录号展示：一级为汉字+顿号，子级为数字多级编号（与 AI 大纲示例一致）。
"""
from __future__ import annotations


def int_to_chinese_numeral(n: int) -> str:
    """将正整数转为中文数字（一、二、…、十、十一、…、九十九、一百）。"""
    if n <= 0:
        return str(n)
    digits = "零一二三四五六七八九"
    if n < 10:
        return digits[n]
    if n == 10:
        return "十"
    if n < 20:
        return "十" + (digits[n % 10] if n % 10 else "")
    if n < 100:
        t, o = divmod(n, 10)
        s = digits[t] + "十"
        if o:
            s += digits[o]
        return s
    if n < 1000:
        h, r = divmod(n, 100)
        s = digits[h] + "百"
        if r == 0:
            return s
        if r < 10:
            return s + "零" + digits[r]
        return s + int_to_chinese_numeral(r)
    # 极少需要百级以上章，保守处理
    return str(n)


def format_heading_display(level: int, section_number: str, title: str) -> str:
    """
    生成带目录号的章节展示行（用于大纲文本、Word 标题、目录页）。
    - 一级：汉字、顿号 + 标题，如「一、总体方案」
    - 二级及以下：「1.1 子标题」
    """
    title = (title or "").strip()
    sn = (section_number or "").strip()
    lv = int(level) if level else 1
    if lv <= 1:
        main = sn.split(".")[0]
        try:
            idx = int(main)
        except ValueError:
            idx = 1
        return f"{int_to_chinese_numeral(idx)}、{title}"
    return f"{sn} {title}".strip()
