俄罗斯规范(三源查找 + 选「完整且最新」版 + 中文翻译 + 保留俄文原版)
一、触发场景
- 用户要找某份俄文规范 / 法律 / 国家标准 / 规程(给出代号或名称,如
102-ФЗ、СП 246.1325800.2023、ГОСТ 15140-78、ТР ТС 032/2013、приказ Ростехнадзора 444)。 - 用户要翻译俄文规范类文件为中文。
- 用户提到「上 meganorm 查」「docs.cntd」「gostexpert」「俄文规范翻译」「按代号找标准」等。
二、三源分工与「完整且最新」判定(★核心★)
本技能在三个源之间选「完整且最新」的版本,而不是死守单一站点:
| 源 | 收录范围 | 免费正文 | 版本/现行判定 | 角色 |
|---|---|---|---|---|
| gostexpert.ru | 仅 ГОСТ 家族(ГОСТ / ГОСТ Р / ГОСТ Р ИСО / ГОСТ Р МЭК …) | 正文需下载(可能付费),不用于抓正文 | ★强——搜索接口直接给 status(действует 现行 / заменен 被替代 / отменен 废止)+ 生效日期 + 最近更新日期 |
判「哪个版本是最新现行版」 |
| docs.cntd.ru | 最全:ГОСТ/ГОСТ Р/СП/ВСН/РД/НПБ/ПУЭ/СТО/ТР ТС/ФНП 部委令/政府决议 | ★免费 SSR 正文,可用 blocks 数判断完整度 |
一般 | 主力正文源 |
| meganorm.ru | ГОСТ/ГОСТ Р/ФЗ/СП/РД/ПБ(ГОСТ Р 覆盖差) | 免费(fetch_ru.py 已打通) |
一般 | 兜底正文源(docs.cntd.ru 受限时) |
选择算法(务必按此顺序)
- 先判「现行最新版」:若目标是 ГОСТ 家族,先用
gostexpert_status.py查代号,看各版本的status——
-действует= 现行有效,就是最新版;
-заменен= 已被替代(脚本会列出同代号的新旧版本,选 действует 的那个);
-отменен= 已废止。
非 ГОСТ 家族(ВСН/РД/СП/приказ/ТР ТС)没有 gostexpert 收录,跳过此步,直接以「用户给的年份」或「docs.cntd.ru 里年份最新者」为准。 - 用确认的现行代号去 docs.cntd.ru 抓正文:
cntd_fetch.py search拿候选 →info <docid>看blocks(>0 有免费正文,=0 受限)。 - docs.cntd.ru 受限 → meganorm 兜底:用
fetch_ru.py/nav_series.py/scan_series.py抓。 - 比较完整度:两源都拿到时,取字符数多、西里尔占比 ≥ 70%、章节结构完整的那个。
- 版本对齐:若用户要的旧版已被 gostexpert 标
заменен,改用现行替代版翻译,并在台账注明「以 XXXX 版替代 YYYY 版」。
三、核心原则
- 先定位、后翻译:绝不用记忆里的 URL 硬凑,一律用脚本实时检索,拿到真实全文 URL 再抓。
- 完整且最新优先:见第二节选择算法,不满足「完整」或「最新」就换源/换版,不硬译残缺文本。
- 保留俄文原版:每份译文都必须同时交付
*.ru.txt(俄文原文)与*.zh.docx(中译),俄文原文绝不动、不覆盖。 - AI 语义意译:调用
ai-translate技能完成翻译,禁用谷歌翻译 / DeepL / Yandex / 百度 / 有道等任何外部机器翻译 API。 - 术语统一:翻译全程采用本技能
references/术语表.md的译法;代号、日期、部令编号、单位符号一律原文保留。 - 逐字全译:条款、附录、表格不许省略、不许跳条(与俄方逐条对照用)。
- 外文字体统一:译文 Word 中的俄文、英文等非中文文字一律 Times New Roman;中文保持原中文字体。渲染后用
apply_foreign_font.py后处理(见步骤 4.5)。
四、前置依赖
- 联网(抓取三个源)。
- 受管 Python:
$HOME/.workbuddy/binaries\python\versions\3.13.12\python.exe(运行scripts/下脚本,用urllib,无需额外 pip 包)。 ai-translate技能(翻译与 Word 渲染,其scripts/md2docx.py渲染中文 Word)。python-docx(渲染用,装在受管 venv:$HOME/.workbuddy/binaries\python\envs\default)。
五、工作流
步骤 0 — 三源分工与选版(先做这步)
按第二节选择算法,用 gostexpert_status.py 判现行版、cntd_fetch.py 抓正文、meganorm 脚本兜底。脚本都在 scripts/ 下:
PY="$HOME/.workbuddy/binaries/python/versions/3.13.12/python.exe"
SKILL="$HOME/.workbuddy/skills/俄罗斯规范/scripts"
# (a) 判最新现行版(仅 ГОСТ 家族;非 ГОСТ 跳过)
PY "$SKILL/gostexpert_status.py" search "<代号数字部分>" # 列各版本 status
PY "$SKILL/gostexpert_status.py" latest "<代号数字部分>" # 只列 действует 的现行版
PY "$SKILL/gostexpert_status.py" status "<code>" # 某版详情:状态/生效日期/更新日期
# (b) docs.cntd.ru 搜 + 判完整度
PY "$SKILL/cntd_fetch.py" search "<代号或关键词>" # 列候选 docid | access | 标题
PY "$SKILL/cntd_fetch.py" info <docid> # blocks>0 = 有免费正文
# (c) meganorm 兜底(docs.cntd.ru 受限时)
PY "$SKILL/nav_series.py" "<系列>" "<代号>" --top 5 # 系列导航(最稳)
PY "$SKILL/locate_meganorm.py" "<代号>" --top 5 # 缓存索引(快)
步骤 1 — 定位
方法一(gostexpert 判现行版,仅 ГОСТ)——gostexpert_status.py
PY "$SKILL/gostexpert_status.py" search "17637"
# 输出例:
# ГОСТ Р ИСО 17637-2024 [действует] Неразрушающий контроль сварных швов...
# ГОСТ Р ИСО 17637-2014 [заменен] Контроль неразрушающий...
# → 选 действует 的 2024 版
- 只覆盖 ГОСТ 家族;部门规范(ВСН/РД/СП)与 ФЗ 法律不在此收录,跳过。
status字段即权威版本判定:действует现行、заменен被替代、отменен废止。
方法二(docs.cntd.ru 搜,覆盖最全)——cntd_fetch.py search
PY "$SKILL/cntd_fetch.py" search "ВСН 012-88"
# 输出 docid | access | 标题,取标题与意图最贴合的那条 docid
PY "$SKILL/cntd_fetch.py" info <docid> # 看 blocks 判断能否免费抓正文
- docs.cntd.ru 收录比 meganorm 全得多:连 ТР ТС、ПУЭ、ВСН、Ростехнадзор 的 ФНП 部委令、政府决议都在。
方法三(meganorm 系列导航,最稳)——nav_series.py
PY "$SKILL/nav_series.py" "РД" "РД 03-495-02"
PY "$SKILL/nav_series.py" "ГОСТ" "ГОСТ 15140-78"
- 到
list0/1/2.htm找系列行(行名精确匹配),进系列清单页按代号命中,返回详情页 URL 与 Data 全文页 URL。
方法四(meganorm 缓存索引,快)——locate_meganorm.py
PY "$SKILL/locate_meganorm.py" "<代号或名称>" --out-dir <工作目录> --top 5
- 首次建
meganorm_index.json(约 3 万条,30–60 秒);后续复用。对 ГОСТ Р 覆盖极差,只作兜底。
方法五(meganorm 批量补捞)——scan_series.py
PY "$SKILL/scan_series.py" --series 24,119,20 --max-page 9 \
--code "ГОСТ Р 53780-2010" "ГОСТ Р 53300-2009" --index series_index.json
- 一次要定位几十个代号时用;先把系列清单页整页抓下建本地索引,再批量匹配。系列号用
--list-series自查。
步骤 2 — 抓取俄文原文
docs.cntd.ru(首选,正文最全):
PY "$SKILL/cntd_fetch.py" fetch <docid> "<代号>.ru.txt"
# 输出:saved N chars, cyrillic=XX% -> <文件>
meganorm(兜底):
PY "$SKILL/fetch_ru.py" "<URL或代号>" --out "<代号>.ru.txt"
- 都要求西里尔占比 ≥ 70%,否则抓错页,回步骤 1 换源/换 docid。
- docs.cntd.ru 免费预览只给部分正文:
info的blocks越大越完整;blocks=0直接判受限,转 meganorm。
步骤 3 — AI 意译为中文(调用 ai-translate 技能)
- Read 刚抓的
<代号>.ru.txt,通读全文,把握章节结构与专业领域。 - 先加载本技能
references/术语表.md,作为术语基准;再针对本文档补充专属术语。 - 逐章 / 逐条语义意译为 Markdown(标题
#/##/###、列表、表格|...|、加粗**、修订注*斜体*),写入<代号>.zh.md。 - 代号、日期、部令号、单位、标准原名原文保留;俄文机构名首次括注中文。
- 公式若为图片提取不出 → 译文用
*斜体*注明「原版为图片公式,未录文字」,绝不臆造数值。 - 若正文是 docs.cntd.ru 的部分预览,在译文文末标注截断位置,提醒正式引用前核对俄文原本。
步骤 4 — 渲染为中文 Word(ai-translate 的 md2docx.py)
VENV="$HOME/.workbuddy/binaries/python/envs/default/Scripts/python.exe"
VENV "$SKILL/../../ai-translate/scripts/md2docx.py" "<代号>.zh.md" "<代号>《中文名》.zh.docx"
步骤 4.5 — 外文统一 Times New Roman 字体(apply_foreign_font.py)
VENV="$HOME/.workbuddy/binaries/python/envs/default/Scripts/python.exe"
VENV "$SKILL/apply_foreign_font.py" "<代号>《中文名》.zh.docx"
- 只改 run 的
ascii / hAnsi / cs字体为 Times New Roman,不碰eastAsia,中文原样、外文变 Times New Roman。
步骤 5 — 归档(保留俄文原版)
同一工作目录同时保留:
- <代号>.ru.txt — 俄文原文(原版备查)
- <代号>《中文名》.zh.docx — 中文 Word 译本
- <代号>.zh.md — 中译 Markdown 中间产物
可选:归入既有台账 俄文规范译文汇总/(01_联邦法律 02_关税同盟技术规程 09_建筑规范СП 10_工业安全规范РД 11_国家标准ГОСТ 12_法规命令决议 等子目录)。
六、三源能力对照(速查)
| 想找的类型 | gostexpert | docs.cntd.ru | meganorm |
|---|---|---|---|
| ГОСТ / ГОСТ Р(含现行版判定) | ★判版首选 | ★正文首选 | 兜底 |
| ГОСТ Р ИСО / ГОСТ Р МЭК / ГОСТ Р ЕН | ★判版 | ★正文 | 部分 |
| СП / СНиП 建筑规范 | 无 | ★正文 | 兜底(pravila/SP 索引) |
| ВСН / НПБ / ПУЭ 部门规范 | 无 | ★正文 | 极少 |
| РД / ПБ 工业安全 | 无 | ★正文 | 部分 |
| ТР ТС 关税同盟技术规程 | 无 | ★正文 | 无 |
| ФЗ 联邦法律 | 无 | ★正文 | ★(FZ 索引) |
| приказ / Постановление / 决议 | 无 | ★正文 | 无 |
| СТО 企业标准(Газпром 等) | 无 | 部分(多受限) | 部分 |
七、已知坑与处理
- 同名 N-ФЗ 每年复用编号:如
102-ФЗ有 2008 测量法、2022 预算修订法等多部。仅给编号会返回多个同名法——务必用法律全称片段二次过滤;若仍歧义,向用户确认是哪一部。 - ФЗ 代差:meganorm / docs.cntd.ru 上同一编号可能指向不同年份的另一部法(俄联邦法律编号跨年复用)。翻译前先核对「中文名对应的真实法律」再抓正确版本。
- ТР ТС 不在 meganorm 索引:走 docs.cntd.ru(
cntd_fetch.py search "ТР ТС 010/2011")或欧亚经济委员会官方文本(docs.eaeunion.org/eec.eaeunion.org)。 - 图片公式:纯文本提取不出,译文用斜体标注,不臆造。
- docs.cntd.ru 部分预览:免费预览只给部分正文,
info的blocks=0即受限;blocks大但内容仍可能是节选,译文文末标注截断位置。 - gostexpert 只收 ГОСТ:部门规范/法律查不到,不是 bug,改走 docs.cntd.ru。
- meganorm 索引缓存过期:
meganorm_index.json可能过期(meganorm 更新版本),用户反映「找不到最新版」时加--refresh重建。
八、输出命名约定
- 中文 Word:
<代号>《中文名》.zh.docx(如102-ФЗ《关于测量统一保障》.zh.docx)。 - 俄文原文:
<代号>.ru.txt(如102-ФЗ.ru.txt)。 - 代号中带
/、空格等文件名非法字符时,替换为-或_。
九、与 ai-translate 的衔接
本技能负责「判版 + 定位 + 抓取 + 归档」,翻译本身交给 ai-translate 技能——它是已验证的语义意译引擎(含 md2docx.py 中文字体渲染)。两者分工:本技能保证「从三源拿到正确、完整、最新的原文」,ai-translate 保证「译得准、排得清」。翻译前先读 references/术语表.md 保持口径一致。