#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""分节语速表（2026-11-04 实测校准）

数据来源：用户 11月1日.mp3（2 分 42 秒），覆盖第 1 节 + 第 2 节，共 634 字。
  第 1 节（开场，有停顿） 367 字 / 99.5 秒 = 221 字/分  ← 最慢
  第 2 节（讲安装操作）   268 字 / 62.9 秒 = 256 字/分  ← 最快
  全段平均 235 字/分，停顿只占 2%
用户确认：最快的地方比最慢的地方快 20% 左右，中段不用再采样。

其余各节按内容性质在 220~256 之间取值：
  念清单/提示词/日志（要让人听清）→ 慢；边点边讲/纯演示 → 快；概念对比 → 中。
"""

RATES = {
    1: 221,   # 开场：真人出镜，慢、留气口
    2: 256,   # 安装避坑 + 领积分：讲操作，实测最快
    3: 228,   # 工作台拆解：四个按钮逐个指着讲，概念密
    4: 235,   # 模型倍率/三种模式/权限：参数对比
    5: 240,   # 数据源：讲解
    6: 225,   # 四步提示词：念模板，要听清
    7: 230,   # 连接器 MCP：术语密
    8: 225,   # 执行日志：逐行念日志
    9: 235,   # 存储系统对比
    10: 248,  # 技能 Skills：边点边讲
    11: 235,  # 多智能体：概念
    12: 250,  # 定时任务：操作
    13: 252,  # 综合作业串讲：演示，快
    14: 245,  # 延伸通道：讲解 + 真机演示
    15: 220,  # 结尾收口：慢，收住
}
DEFAULT_RATE = 235


def rate_of(n):
    return RATES.get(int(n), DEFAULT_RATE)


def sec_of(n, han):
    """第 n 节 han 个汉字，按实测语速需要多少秒"""
    return int(round(han / rate_of(n) * 60.0))


def total_of(pairs):
    """pairs: [(节号, 汉字数), ...] → 总秒数（逐节累加）"""
    return sum(sec_of(n, han) for n, han in pairs)
