XTSY 职称材料审核与量化评分
> 版本 v2.1.1(口径 v6.4 · 2026-10-11)。可复制交付的纯文本提示词见
>
> references/总提示词_v6.4.txt。
>
> v6.4 增量(2026-10-11,用户拍板;项号与结构不动,仍 27 项):
>
> 新增论文【检索验证地址】硬判(并入第 20 项) —— 【论文论著】页签内每篇论文都有一个【检索验证地址】字段(URL 文本,不是附件)。逐篇读取该地址文本;只要地址字符串(不区分大小写)包含 qikan → 第 20 项判「否」、该人员审核结论「不通过」。结果须写明第 N 篇 + 实际读到的地址原文(或命中片段,如 …qikan…)。未填报地址不触发本规则(仍按「没填内容则不审核」处理)。
>
> 其余口径(含 v6.3 的 27 项清单)、量化公式、结果表版式与配色一字不改。
>
> v6.3 增量(2026-10-10,沿用;审核项由 28 项压缩为 27 项):
>
> ① 第 1 项(新增)「个人基本信息-工作总结附件」 —— 由原第 26 项提到最前,
>
> 仅判断是否有内容、不核验红章(原「工作总结附件盖章」口径作废)。
>
> ② 第 3 项(合并)「申报基础材料-承诺书/评价表 + 排名表分数」 —— 原第 2 项「基础材料盖章」与原第 27 项「排名表分数不重复」合并:
>
> 【申报材料真实性承诺书】【职业道德评价表】仅查验是否有内容,不再核对预览红章;并打开【申报晋升人员量化评分推荐排名表】附件,读表内各人分数两两比对,任意两人同分 → 本项判「否」、结论「不通过」。
>
> ③ 第 11、12、14、15、16、17、18、19 项不再点开【预览】核附件内容(对应原第 10、11、13、14、15、16、17、18 项):
>
> 荣誉/获奖/其他业绩「有内容即整项转人工复核」(标黄、不判是/否);经历备注只判页签【备注】文本、附件内容仍转人工复核;专家称号/项目(课题)/专利「有内容即确认已填报」(专利仍须记录类型/排名/件数供量化计分)。相应地,撤掉 v6.0「先点【预览】确认有数据」那一步。
>
> ④ 全表项号顺延重排(共 27 项):原 1~25 项 → 新 2~26 项;原 26 → 新 1;原 27 → 并入新 3;原 28 → 新 27。
>
> 重点项:第 11 项(专业技术工作经历-备注)、第 12 项(业绩成果-项数)、第 26 项(预估量化分数)。结果表行序即用第 1~27 项。
>
> v2.0.0 / 口径 v6.2 及更早(沿用,一字不改):
>
> - 抓取适配层:adapters/*.json + scripts/xgrab.py 统一入口,换系统只改 JSON、不改代码;未配置时回退内置预设 antd-clip-modal.json;自检 python scripts/xgrab.py selftest(离线)/doctor(联网)。
> - 执行顺序:逐人串行 + 弹窗 7 个页签「一趟判完」,外层=人、内层=页签(页签循环写在人的循环里);判完即锁、逐人即时落盘、禁止跨人比对、排序只在写表阶段。
> - 量化口径:第 26 项 A~K 五系列公式;J(经历备注量化分)封顶 30 分(v6.2);I、K 不设此项封顶。
> - 内容级细查(第 4、7、9、10、20 项):继续教育证书逐份预览内容须为「继续教育」;学信网证明须含《学历证书电子注册备案表》;现职称预览须 ≥2 份且含《认定表》或《评审表》;年度考核预览须含「考核」二字且附件年度与页签一致;论文六项附件逐项核(正文含摘要、目录与检索页含本人姓名、封面含系统自填刊名;封底只要有上传文件即可、版权页含 ISSN 或出版单位有其一即可)。
> - 未填报不审核;每审完 10 人导出一份 Excel(累积口径);结果表一律保存到桌面。
>
> 完整配色与口径见 references/审核提示词.md「配色速查」。
>
> 本技能为公开发布版:不含任何具体政务系统地址、接口名与加解密细节;
>
> 系统地址一律用 <目标系统地址> 占位,首次使用时换成你单位系统的实际地址。
快速引用(一句话触发)
用户说 "审核职称材料" / "职称审核" / "经办人审核申报材料" / "评审职称" 等任一说法,
即按本技能执行,无需再粘贴长提示词。
用户说 "量化分数计算" / "量化得分" / "预估量化分数" / "职称量化" / "专利排名计分" 时,
同样走本技能 —— 直接跳到第 26 项的量化口径与 references/量化分数计算_v5.1.md,
只算分、不必跑全 27 项审核(用户另有要求时再跑全流程)。
审核口径与输出规格的唯一权威来源:references/审核提示词.md ——
执行前必读,按其中的 27 项口径(v6.3 起共 27 项:原 1~25 项顺延为第 2~26 项、原第 26「工作总结附件」提为第 1 项、原第 27「排名表分数不重复」并入第 3 项、原第 28「达标线」为新第 27 项;v5.6 对第 4、7、9、10、20 项补充内容级细查、v5.7 将第 14、15、19 项转人工复核、v5.8 改为按页签一趟判完、v5.9 钉死「外层=人、内层=页签」并加判完即锁/逐人落盘/禁止跨人比对、v6.4 新增论文【检索验证地址】含 qikan 即判否(并入第 20 项))、重点项高亮规则、Excel 结构产出,不要自行加严或放宽。
两份口径文件的用途区别:
| 文件 | 用途 |
|---|---|
references/审核提示词.md |
我执行时的权威依据(含操作方法、脚本、陷阱) |
references/总提示词_v6.4.txt |
交付给用户的可复制纯文本版(用户要"发一份提示词"时直接给这个) |
references/量化分数计算_v5.1.md |
量化分数(第 26 项)五系列公式的独立文档 |
references/量化计算项清单_v5.1.xlsx |
五系列系数矩阵(可交付用户的 Excel) |
references/输出Excel说明.md |
审核结果表(Excel)怎么产出:profile JSON 结构(含 system_score / score_threshold)、两个 Sheet 版式、结果写法、第 27 项达标线联动、黄色复核标记、重点项配色、文件占用回退 |
references/抓取适配层说明.md |
抓取适配层 v2.0.0 的完整说明:三层分工、接线四步、一个人的完整抓取流程、五条硬经验、前端假空、接口层截获、md5 查材料挂错、红章判定、故障排查表 |
adapters/ |
适配配置:presets/_template.json 填空模板、presets/antd-clip-modal.json 通用预设;你自己的配置放 adapters/local/(不随包发布) |
scripts/xgrab.py |
抓取统一入口(本技能唯一需要写命令的地方):selftest / doctor / rows / open / dump / list / preview / attach / close / shot |
scripts/xtsy_config.py |
适配配置加载 + 选择器→JS 编译器(全仓唯一把配置变成 JS 的地方,代码里不含任何系统地址) |
scripts/xtsy_cdp.py |
CDP 连接封装(定位依赖技能、绕过代理、就绪轮询、红章统计) |
scripts/xthumb.py |
离线图像工具:thumb 批量缩略图、samefile 找重复、differ 跨目录 md5 比对查"材料挂错字段" |
适用场景
要求在你所在单位的职称申报评审系统经办人端,逐人审核申报材料并输出 Excel 结果表。
依赖技能:browser-automation-cdp(CDP 驱动真实浏览器,SkillHub 搜「浏览器自动化」即可安装)。
它是本技能的驱动层,必须先装 —— 本技能靠它的 cdp.py / start_chrome.py 干活。
v2.0.0 起本技能自带「抓取适配层」,因此:
> - 本技能不含任何具体系统的地址与接口细节(脱敏发布);
> - 但含完整的抓取实现 —— 抓取逻辑全部由 adapters/*.json 驱动,
>
> scripts/xgrab.py 是统一入口。完整说明见 references/抓取适配层说明.md。
> - 使用者只需照 adapters/presets/_template.json 做一份
>
> adapters/local/adapter.json,把地址与选择器换成本单位系统的值,
>
> 跑 python scripts/xgrab.py doctor 自检通过即可开始审核。
> - 若本单位系统是常见的 Ant Design 后台(弹窗 + 页签 + pdf.js 预览 +
>
> 「预览/查看」入口),可先直接沿用内置预设 adapters/presets/antd-clip-modal.json 再微调。
>
> 用户不一定已经登录 —— 开工先按「执行流程 · 第 0 步」起浏览器并自动跳转到你系统的
>
> 门户首页(未登录时它就是登录页),未登录就用交互式选项卡请用户确认,
>
> 不要假设用户已登录、也不要让用户敲命令。
>
> 审核逐人串行 —— 一个人一个人的审(见「执行流程 · 第 2 步」):把一个申报人的
>
> 全部信息审完、结论定死、弹窗关掉,再打开下一个人。不要同时开多人、
>
> 不要先扫一遍再回头补。
环境准备
Python 依赖(产出 Excel 必需):scripts/render_result.py 依赖 openpyxl:
python -m pip install openpyxl
只做审核判定、暂不产出 Excel 时可先不装。
抓取适配层(v2.0.0)—— 先接线,再执行
抓取的一切由 adapters/*.json 决定。**先按 references/抓取适配层说明.md 的「接线四步」
做完,再往下走**:
cp adapters/presets/_template.json adapters/local/adapter.json # ① 做配置
# ② 编辑它:改掉所有 < > 包裹的值(地址、路径、入口文案)
python scripts/xgrab.py selftest # ③ 离线自检:校验配置与 JS 生成
python scripts/xgrab.py doctor # ④ 联网自检:报告每个选择器的命中数
之后的抓取一律走统一入口(本技能唯一需要写命令的地方):
python scripts/xgrab.py rows # 列表有哪几行
python scripts/xgrab.py open 2 # 打开第 2 行(0-based),内置"前端假空"轮询
python scripts/xgrab.py dump p3 out # dump 全文 + 各页签
python scripts/xgrab.py list # 枚举所有材料入口(带上下文)
python scripts/xgrab.py preview preview 5 raw/x p5 # 逐页签逐页存图
python scripts/xgrab.py attach view 12 raw/y y1 # 走接口层截获原件
python scripts/xthumb.py differ raw/a raw/b # md5 比对查材料挂错字段
下面五条与具体系统无关的通用经验换系统依然成立,接线前务必读一遍:
- 端口:CDP 默认 9222 常被占用;先试 9222,
status不通再换 9333。
cdp.py 的 --port 必须写在子命令之前:
python cdp.py --port 9333 open "url" ✅ / open "url" --port 9333 ❌
2. 浏览器进程不能跨命令存活:沙箱在单条命令结束后会杀掉子进程,
启动浏览器必须用后台常驻方式(run_in_background: true),否则浏览器活不过这条命令。
start_chrome.py 在依赖技能 browser-automation-cdp 里,不在本技能目录下。
3. 登录态不跨浏览器重启保留:profile 目录能留住缓存,但会话凭证是内存级的,
浏览器一关就要重新登录。执行期间尽量让浏览器常驻;一旦被回收,
走「执行流程 · 第 0 步」的登录确认流程(用选项卡,别让用户打字)。
4. 列表页可能卡在"数据加载中"(比"弹窗全空"更严重):表格一直显示
「暂无数据 数据加载中」、【审核】链接数为 0,且页面根本不发查询接口请求;
切状态标签、点「重置 + 查询」都无效。这是 SPA 前端状态故障,about:blank 重载
也救不回。处理顺序:①先试 about:blank 重载 → ②无效请用户在可视窗口按 F5
→ ③仍无效请用户退出重新登录。不要反复重载空耗时间,试过 2 次就交回用户。
5. 封装脚本固定 --url-contains 时,about:blank 重载的第二步会失效:
cdp.sh open "about:blank" 因过滤串不匹配而找不到目标标签页,跳不回业务页。
重载第二步须用裸 cdp.py 换过滤串:
python <CDP_DIR>/cdp.py --port 9333 --url-contains "about:blank" open "<列表页URL>"。
另:封装脚本里调用 Python 要用绝对路径,多数机器 PATH 里没有 python。
执行流程
0. 起浏览器并请用户登录(开工第一件事,一次交互搞定)
目标:尽快把登录页推到用户眼前,并且只用一次交互确认登录完成 ——
不要让用户打「好了」「可以了」这类文字回复。
# ① 后台常驻启动(务必 run_in_background: true,否则活不过这条命令)
cd <BROWSER_SKILL>/scripts && python start_chrome.py --port 9333 && sleep 7200
启动后立刻(不要等用户催、不要先问用户)自动跳转到你系统的门户首页
(未登录时它就是登录页),让用户一抬眼就能看到登录框、不用自己找入口:
# ② 自动打开门户首页 —— 把 <目标系统地址> 换成你系统的实际地址,/home 是门户首页路径
cdp.sh open "http://<目标系统地址>/home"
> ⚠️ 不要停在 about:blank,也不要一上来就打开审核列表页(未登录时会被弹回首页,
>
> 白多一跳);直接开首页最稳、也最快把登录框推到用户眼前。
登录成功后自动切到审核列表页,然后轮询探测登录态
(每 2 秒一次、最多 90 秒;不要用固定长 sleep 干等):
- 已登录(能读到列表页的【审核】入口,或页头含经办人信息)→ 直接进入第 1 步,不打扰用户。
- 未登录(被弹回门户首页、只剩"登录入口"字样、页面无表单)→ 立即用交互式选项卡
(AskUserQuestion)请用户处理,一次问完:
| 选项 | 含义 / 后续动作 |
| ------------------- | -------------------------------------------- |
| 「我已登录,继续审核」(推荐) | 用户已在浏览器里登录完毕 → 重新探测一次确认,随即自动进入第 1 步 |
| 「登录页打不开 / 报错」 | 帮用户排查:换端口重开、检查默认标签页是否被浏览器自身弹窗抢占、把当前 URL 念给用户 |
| 「改用示例数据先演示」 | 不连系统,用 profiles/ 下脱敏样板跑通"判定 → 出 Excel"全流程 |
| 「先不审,只看清单」 | 只拉列表页人员名单,不做逐项核查 |
- 用户选完不要再让用户确认第二遍;重新探测成功即自动往下走。
- 用户若在选项卡里补充了说明(如"登好了""换了账号"),照办,不要把补充信息当成新指令重做规划。
1. 取待审人员清单
在审核列表页执行一段 DOM 查询,取出所有「审核」入口的行序(行序即后续下标):
cdp.sh eval "JSON.stringify(Array.from(document.querySelectorAll('a.blueLink')).filter(e=>e.innerText.trim()==='审核').map((e,i)=>i))"
> 选择器(此处示例 a.blueLink)按你的系统实际 DOM 调整。
> ★ 串行原则:拿到清单后不要先挨个打开一遍、也不要同时开多个人。
>
> 一个人一个人的审(见下节)。
2. 逐人闭环:一次只审完一个人的全部信息
每个申报人都是一个独立、完整走完的闭环:打开他的【审核】弹窗 → 抓全他的所有内容
→ 跑完全部 27 项→ 算出量化分 → 把结论记下来
→ 关闭弹窗 → 才去打开下一个人。这个人没审完,绝不碰下一个人。
| ✅ 可以 | ❌ 禁止 |
|---|---|
| 按行序 0→1→2→… 依次审完一人再下一人 | 先把 N 个人挨个打开一遍,再回头统一逐项审 |
| 一个人的弹窗一开到底,全部页签 + 预览/原件一次看完 | 同时开两人的弹窗,或在两人之间来回切 |
| 每审完一人,立刻落一条该人的结果记录 | 攒到最后一起写,中途一断全丢 |
| 一个人的 27 项 + 量化分全部出结论才算"审完" | 只扫了"是/否"就说审完,附件原件留到后面补 |
为什么必须串行:附件预览、附件下载都依赖"当前最上层弹窗"的上下文 —— 同时开两个人,
极容易把 A 的附件清单记到 B 头上(历史上有过判反的教训);单人闭环也让"审到一半被打断"时
进度不丢,下次能从下一个人接着审、不用重来。
★ v5.9 闭环铁律:人=外层,页签=内层(先说顺序怎么嵌套)
顺序问题的根子只有一句 —— 页签循环要写在人的循环里面:
for 人 in 审核列表(第 1 人 → 第 N 人): ← 外层:人
for 页签 in ① ② ③ ④ ⑤ ⑥ ⑦: ← 内层:页签,每个只进一次
判完该页签名下的全部审核项(含该点开的预览、该下载的原件)
⑧ 汇总计算(第 26、27 项)→ 出结论 → 关弹窗
把该人 27 项结果立刻落盘
- 绝不允许反过来(先按页签把所有人员过一遍)—— 那是「页签在外、人在内」,
会反复回到同一个人的同一批附件,表现为"来回交叉核对"。旧叫法「板块通行」
容易被读成这样,v5.9 起改称「一人一趟闭环」。
- 判完即锁:每项判出结论后立即落盘,此后不得再判;复核/汇总/排序只读落盘文件。
- 逐人即时落盘:每审完一个人(不是每 10 人)立刻把该人 27 项写进结果文件;
Excel 只由这份落盘数据生成,不许凭记忆重排、更不许为出表回头重查。
- 禁止跨人比对:每项只依据本人材料,不把 A 的数据与 B 放在一起判断。
唯一例外:第 3 项「排名表分数不得重复」是本人同一份排名表内的两两比对。
- 排序只发生在写表阶段:Sheet1 行序仍是第 1~27 项,但只在生成 Excel 时才排。
★ 串行之内:一人一趟闭环 —— 按页签「一趟判完」(v5.9;旧称板块通行)
不要再按项号 1→27 逐个判。 改为按弹窗的 7 个页签通行 —— 进一个页签,
就把落在该页签上的全部审核项一次判完(该点开的【预览】、该下载的原件,一趟里全看完),
再切下一个页签;每个页签只进一次:
| 序 | 页签(含子块) | 本次要判完的项 |
|---|---|---|
| ① | 基础信息(个人基本信息/申报人现状/申报基础材料) | 1、2、3、4、5 |
| ② | 申报信息 | —(只取数:申报系列、申报专业) |
| ③ | 学习资历(学习经历/工作履历/现职称证书…) | 6、7、8、9 |
| ④ | 专业技术工作经历(年度考核/工作经历/特殊经历) | 10、11 |
| ⑤ | 业绩成果(荣誉/获奖/专家称号/项目(课题)/专利/其他业绩) | 12、13、14、15、16、17、18、19 |
| ⑥ | 论文论著(论文/论著) | 20、21、22、25 |
| ⑦ | 一览表(一览表补充信息) | 23、24 |
| ⑧ | 汇总计算(不必再进页签) | 26、27 |
覆盖数核对:5 + 4 + 2 + 8 + 4 + 2 + 2 = 27 项 ✓。
结果表行序仍是第 1~27 项,判定结果与版式一字不改 —— 变的只是"看页签的顺序"。
逐人串行不变(仍是审完一人再一人)。
每一个人的「审完清单」(逐条打勾再关弹窗):
- 弹窗全部页签内容抓到(基础信息 / 申报信息 / 学习资历 / 专业技术工作经历 / 业绩成果 / 论文论著 / 一览表)—— ★ 按「页签通行」一趟判完该页签名下全部项,每个页签只进一次:① 基础信息 → 第 1、2、3、4、5 项;② 申报信息 →(只取数);③ 学习资历 → 第 6、7、8、9 项;④ 专业技术工作经历 → 第 10、11 项;⑤ 业绩成果 → 第 12~19 项;⑥ 论文论著 → 第 20、21、22、25 项;⑦ 一览表 → 第 23、24 项;⑧ 汇总计算 → 第 26、27 项;
- ★ v5.7 通用原则(v6.3 收窄适用面):凡仍点【预览】的项(第 4、7、9、10、20、22 项)一律要点开逐个附件把内容看进去;
v6.3 起不再点开【预览】的项(第 11、12、14、15、16、17、18、19 项):荣誉/获奖/其他业绩「有内容即整项转人工复核」;经历备注只判页签【备注】文本、附件内容转人工复核;专家称号/项目(课题)/专利「有内容即确认已填报」;
★ 并同时完成 v5.6 的五项内容细查(第 4、7、9、10、20 项,并入原项、不新增项号;★ v5.9:这 5 项分散在 ①③④⑥ 四个页签里,一律在各自页签内一次做完,不得回头补第二遍):
继续教育证书逐份预览、内容须为"继续教育";学信网证明须含《学历证书电子注册备案表》;
现职称预览须不止一份且含《认定表》或《评审表》;年度考核预览须含"考核"二字、
且附件年度与页签所列年度一致;论文六项附件逐项核内容(正文含摘要、目录与检索页含本人姓名、
封面含系统自填刊物名称;v5.7 起封底只要有上传文件即可、版权页含 ISSN 或出版单位有其一即可;v6.4:【检索验证地址】逐篇读取,地址含 qikan(不区分大小写)即判「否」)。
任一项不符 → 判"否"、结论"不通过";
3. 第 1 项(工作总结附件)确认有内容(不核红章);第 3 项:承诺书、职业道德评价表确认有内容(不核红章),并打开排名表附件读表内各人分数两两比对(任意两人同分 → 判"否"、结论"不通过");
4. 论文篇目核刊物等级(第 25 项);
5. 算完整量化分数 A~K(第 26 项),并比对 60 分达标线定第 27 项
(预估总分 < 60 分 → 第 27 项判"否"、结论"不通过");
顺手记下系统自填分(系统【一览表补充信息】→【量化评分推荐排名-得分】)备第 5 行对比;
6. 把该人的 27 条结果记录下来(顺序与审核项清单对齐),需人工复核的项单独记一份;
★ v5.9:审完「这一人」立刻落盘(不等满 10 人);出表只读这份落盘数据,
不重开弹窗、不重看附件、不回头重审前面的人;
7. 关闭弹窗(绝不点审核通过/不通过/待定按钮)。
8. 每审完 10 人,导出一次结果表(v5.7;v5.9 补:出表只读落盘数据,「累积口径」靠拼落盘数据实现,不重开弹窗、不回头重审前面的人)—— 防中途中断丢数据;导出后继续审下一个。
累积口径:第 N 批包含此前全部已审人员,于是最后一批导出即全量汇总表;
最后一批不足 10 人也照导。
审完这个人,再回第 1 步的清单取下一个下标。中途不重排、不跳审、不回头补。
列表页还有下一页时继续翻页审(翻页后重新取行序、人数跨页连续累计)。
2b. 弹窗抓取与操作(★ 提速:用"就绪轮询"代替固定等待)
把「点第 N 个审核按钮」「读取弹窗全文」「点第 N 个预览」写成几个小 JS,
用 CDP 逐条执行。三条关键经验:
- 不要固定
sleep 20干等,改成就绪轮询:每 1~~2 秒探一次,
「弹窗内预览元素数 > 0」且「姓名: 后面是真人名」就立刻往下走(多数 3~~8 秒就绪);
连续 30 秒仍未就绪才认为"这次真慢",再考虑重开弹窗。
早于渲染完成就读,会拿到一份全是"无"的空骨架,且预览元素数为 0,后续所有预览都点不到。
- 附件预览 / 查看的等待同样用就绪轮询:点开后每 0.6 秒探一次,
「不再转圈 + 已有明确结果」(有 PDF 页 / 有图片 / 或明确显示"暂无数据")即返回,
不要固定等 9~12 秒。本技能附了一个通用工具 scripts/_poll.py(纯标准库、无额外依赖),
你自建抓取脚本时可直接复用:from _poll import poll_json。
- 弹窗的多个页签通常同时存在于 DOM,一次取 innerText 就能拿到全部内容,不必逐页签点击。
(只有附件预览弹窗才需要切换页签查看,那部分按上面的轮询口径处理。)
> ⚠️ 提速只发生在"等"上,不发生在"查"上 —— 27 项与每一条附件的核验一项都不能省。
3. 附件「有没有数据」的判据(重点)
不能只信前端渲染。 常见假空:
| 页面表现 | 真实情况 | 处理 |
|---|---|---|
缩略图 0×0 / 未加载 / src='' |
不代表为空 | 下载原件确认 |
| 文案"暂无数据" | 可能只是前端状态坏了 | 见下方红线三 |
| 预览弹窗一片空白 | 可能只是渲染失败 | 下载原件确认 |
判「无」之前必须复核:至少再用一种方式确认 —— 把原件下载下来打开看,
或查看浏览器网络响应里是否真的没有文件数据。
> ⚠️ 红线一:前端显示空 ≠ 真的空。
>
> 曾因只信前端渲染,把实际有 25 件附件的条目判成"无附件",结论判反。
>
> ⚠️ 红线二(v6.3 起仅备查):淡章会漏判,必须目视。
>
> 扫描件红章常偏淡/偏色,程序统计红色像素占比不能作判据 ——
>
> 实测确有红章的扫描件占比也可能只有 0.004%。一律把原件打开目视确认。
>
> (v6.3 起第 1、3 项均不再核验红章,本条仅在确需人工目视参考印章时适用。)
>
> ⚠️ 红线三:弹窗整片空白时,先怀疑前端状态,不要当成"申请人没填"。
>
> 现象:姓名/证件号全显示"无"、页签全是"暂无数据",但接口其实返回了数据。
>
> 处理:把标签页导航到 about:blank 再回到列表页彻底重载(单纯刷新往往无效),
>
> 重新打开审核弹窗即可恢复。
3b. 红章核验(v6.3 起不再用于判定,仅备查)
v6.3 起第 1、3 项均改为「仅判断是否有内容」,全流程不再核验红色印章,本节与 scripts/check_seal.py 仅保留备查。
用 scripts/check_seal.py:把 PDF 逐页渲染成图 → 双阈值统计红像素 → 裁出红区热点,
供目视参考。红像素占比只作辅助,不作为判据。
4. 审核口径(v6.3 起共 27 项)
> 项号重排(v6.3,用户 2026-10-10 拍板):新 1 = 原 26「个人基本信息-工作总结附件」(提到最前);新 2~26 = 原 1~25 各顺延 1 位;新 3 另并入原 27「申报基础材料-排名表分数不重复」;新 27 = 原 28「预估量化分数-达标线」。审核项由 28 项压缩为 27 项。
>
> 执行顺序:下表按项号列判定口径,结果表行序也用它;但实际审核请按 §2 的「页签通行表」走,进一个页签一次判完该页签名下全部项。
>
> v6.3 三项改动:① 第 1 项「工作总结附件」仅判断有无内容,不再核验红章;② 第 3 项合并「基础材料盖章」与「排名表分数不重复」 —— 【申报材料真实性承诺书】【职业道德评价表】仅查验是否有内容、不再核对预览红章,并打开【申报晋升人员量化评分推荐排名表】附件读表内各人分数两两比对(任意两人同分 → 判「否」、结论「不通过」);③ 第 11、12、14、15、16、17、18、19 项不再点开【预览】核附件内容。
| # | 项目 | 判定口径 |
|---|---|---|
| 1 | 个人基本信息-工作总结附件(v6.3 提前) | 【工作总结附件】有内容即判「是」(v6.3:不再核验红章);未填报记"—(未填报)" |
| 2 | 申报人现状-现从事专业年限 | =【现职称取得时间】至 2026-12-31 的整数年数(如 2021-11-30 → 5) |
| 3 | 申报基础材料-承诺书/评价表 + 排名表分数(v6.3 合并项) | ①【申报材料真实性承诺书】【职业道德评价表】只要各有内容即确认已填报(不再核对预览红章);②打开【申报晋升人员量化评分推荐排名表】盖章附件,读表内各人分数并两两比对:任意两人同分 → 本项判「否」、该人员结论「不通过」;全部互不相同 → 「是」。结果须写明表内人数、各人分数清单、是否重复(重复则列出分值与对应姓名) |
| 4 | 申报基础材料-继续教育证书 | 上传数量 ≥ 4(看表格"上传数量"列);还须逐份打开【预览】,内容确为「继续教育」,有任一份与继续教育无关即判「否」 |
| 5 | 申报基础材料-现任评审表/登记表 | 现任《专业技术职务任职资格评审表》《资格考试合格人员登记表》至少一项有数据 |
| 6 | 学习经历-最高学历 | 是否最高学历:是那条的学历 ≥ 大学专科 |
| 7 | 学习经历-预览 | 【学历证书】【学信网证明】有数据(学位证书一并看);预览内须含《学历证书电子注册备案表》,缺则判「否」 |
| 8 | 现职称证书-专业一致性 | 证书专业 = 申报信息申报专业 |
| 9 | 现职称证书-预览 | 有数据;预览须不止一份文件(≥2),且含《认定表》或《评审表》之一,否则判「否」 |
| 10 | 任现职以来年度考核 | 至少含 2022/2023/2024/2025 四个年度;预览须出现「考核」二字,且附件年度须与页签内系统所列年度一致,不符判「否」 |
| 11 | ★专业技术工作经历-备注 | 须实质引用到 "三、专业技术工作经历(能力)条件" 及对应条款,或含"其他专业技术工作经历"字样;不要求 (N项其中之一) 等括号标注;个别条目备注填"无"不影响本项(只要该人有经历引用了条款即判"是",并写明哪条没写)。v6.3:只判页签【备注】文本,附件内容转人工复核 —— 结果追加「;附件内容需人工复核」并整格标黄(判「否」时红色优先);不再点开【预览】 |
| 12 | ★业绩成果-项数 | 【荣誉、获奖、项目(课题)、专利、其他业绩、论文、论著】按类别计 ≥ 2 类(专家称号不计入);v6.3:不再点开【预览】 |
| 13 | 业绩成果-备注 | 只要出现 "业绩成果条件"字样即可("符合四、业绩成果条件"、"符合业绩成果条件第八条"都算),或含"其他业绩成果"字样;不要求章节序号、"四、"前缀、引号与原文完全一致 |
| 14 | 荣誉-转人工复核 | 有内容时写 需人工复核(<N> 条,内容未逐份核验)、整格标黄、项号记入 review;不再自动判是/否(v6.3:不再点开【预览】确认有数据)。未填报记"—(未填报)"(不标黄) |
| 15 | 获奖-转人工复核 | 同第 14 项(有内容时→ 转人工复核、整格标黄、不判是/否) |
| 16 | 专家称号 | v6.3:有内容即确认已填报(不再点开【预览】核内容);无内容记"—(未填报)" |
| 17 | 项目(课题) | 同第 16 项(有内容即确认已填报) |
| 18 | 专利 | 同第 16 项(有内容即确认已填报)。须逐项记录【专利类型】【排名】与件数(发明/实用新型/外观设计/计算机软件著作权),第 26 项计分要按类型与排名归类 |
| 19 | 其他业绩-转人工复核 | 有内容时先查再转人工:①是否有【目录】条目——多条(≥2)应有"其他业绩材料目录"排最前、只有 1 条时未单独填目录不影响(2026-09-30 口径);查完写 需人工复核(<N> 条,目录:有/无;各条内容未逐份核验)、整格标黄、项号记入 review;不再自动判是/否(v6.3:不再点开【预览】确认有数据)。未填报记"—(未填报)" |
| 20 | 论文-六项附件 + 检索验证地址 | 正文/期刊目录/检索验证页面/期刊封底/期刊封面/期刊版权页 6 项都有数据;内容核验(v5.6,v5.7 起封底与版权页放宽):正文含「摘要」、期刊目录与检索验证页面含本人姓名、期刊封面含系统自填的刊物名称;期刊封底只要有上传文件即可、期刊版权页含 ISSN 或出版单位有其一即可,其余任一项不符判「否」;v6.4 并入:【检索验证地址】(URL 字段,非附件)逐篇读取,地址字符串含 qikan(不区分大小写)即判「否」 |
| 21 | 论文-字数 | 【字数(千字)】< 10 |
| 22 | 论著-预览 | 有内容才审(须点开逐个附件把内容看进去) |
| 23 | 一览表补充信息-从事专业技术工作年限 | 格式 ××××年××月至2026年12月,满×年 |
| 24 | 一览表补充信息-获现职后基层工作年限 | = 无 |
| 25 | 论文-刊物等级核对(v3 新增) | 取【刊物名称】到维普期刊网 https://www.cqvip.com/journal/ 检索是否标注"核心期刊":标注核心 → 系统【刊物排名】应为【核心期刊】;未标注 → 应为【一般期刊】;两者不一致判否。多篇逐篇核。v5.4 口径:连续型电子出版物(CN 形如 50-9xxx)计作「公开出版的学术期刊」(不因是电子刊判否、不再提示复核其刊物性质;等级仍按维普检索判);境外刊须提示人工复核 |
| 26 | ★预估量化分数(v3 新增) | 计算项,非"是/否"。按【申报系列】选公式,已内置 5 套(建筑工程/环保工程/水利水电工程/机电工程/交通运输工程),逐项算出 A~K 十一项加分与总分。「实用新型」含 实用新型专利+外观设计专利+计算机软件著作权 三类(v3.1)。完整矩阵见 references/量化分数计算_v5.1.md |
| 27 | 预估量化分数-达标线(v5.5 新增) | 第 26 项算出的预估量化总分 ≥ 60 分判"是";< 60 分判"否"、该人员结论判"不通过"(即使这是唯一的不符合项)。口径:以本技能预估分为准、60 分整算达标;结果里须同时写明系统自填分与差额 |
> 第 27 项是结论性硬线(v5.5,用户 2026-10-04 拍板):它不新增材料核验动作,
>
> 是/否完全由第 26 项的总分决定 —— 所以第 26 项必须先算准。
>
> 系统自填分(【一览表补充信息】→【量化评分推荐排名-得分】)不参与判定,
>
> 只用来说明差额来源(本技能现行基础分 E=9,系统沿用旧口径 39,差约 30 分)。
新增项(v3)的实操方法
第 25 项 刊物等级 —— 先从论文条目里拿到【刊物名称】
(连同 ISSN、主办单位一起记下),再到维普期刊网检索(核心刊在结果里会带
北大核心 / CSCD / CSSCI 等标签,无标签即按一般期刊):
WebFetch("https://www.cqvip.com/journal/search?k=<URL编码后的刊名>",
"列出匹配期刊条目:刊名、ISSN、主办单位、是否标注核心期刊")
2026-09-30 实测补充(务必注意):
- 维普搜索页的搜索框是
.search-input input.el-input__inner,按钮是.search-input button.s-btn;
提交后 URL 即 https://www.cqvip.com/journal/search?k=<刊名>。
- 结果区是异步渲染,用 CDP 读 DOM 往往只拿到空壳(首页骨架),直接用 WebFetch 抓该 URL 最省事:
有结果会返回期刊卡片,无结果会明确返回「未查询到相关结果」。
- ⚠️ 同名不同刊是这一项的固有陷阱。本次遇到申报人投的是新加披刊《现代化工》
(ISSN 2661-3670、主办「新加坡现代化工杂志社」),而维普库里同名的是国内
《现代化工》(ISSN 0253-4320、北大核心)——**必须用 ISSN + 主办单位 判定是不是同一本刊,
只看刊名会把一般期刊误判成核心期刊**(或反之)。判定依据写进结果时要写明这一点。
v5.4 刊物性质口径(用户 2026-10-03 明确,重要):
| 刊物性质 | 怎么判 | 要不要标黄提示人工复核 |
|---|---|---|
| 正式期刊(有 CN + ISSN) | 按维普检索结果定核心/一般 | 否 |
连续型电子出版物(CN 形如 50-9xxx) |
计作「公开出版的学术期刊」 —— 不因"电子刊"判否;等级仍按维普检索判(维普未收录 → 一般期刊) | 不要标黄(已明确合格) |
| 境外刊(无 CN、仅 ISSN、主办在境外) | 按维普结果定等级 | 要标黄:该刊为境外刊,建议人工复核是否属于公开出版的学术期刊 |
| 内刊 / 增刊 / 论文集(查不到任何正式出版信息) | 按"存疑"处理 | 要标黄 |
> 说明写法举例:该刊为连续型电子出版物(CN 50-xxxx),按现行口径计作公开出版的学术期刊;
>
> 详见 references/审核提示词.md 第 25 项的「三种边界情况」。
第 26 项 量化分数 —— 数据来源:参加工作时间/现职称取得时间 取"申报人现状";
学历取"学习经历";年度考核"优秀"次数数考核表里等次=优秀的行数;
发明专利条数数"业绩成果-专利"表;论文条数数"论文"表;
I 取"荣誉""获奖"各条【备注】、J/K 取"专业技术工作经历"与"其他业绩"各条【备注】里的"量化N分"(J 封顶 30 分,详见下)。
> 同时记下"系统自填分"(v5.5):取系统【一览表补充信息】→【量化评分推荐排名-得分】
>
> 字段值(每人一个数),写进 profile 的 system_score,供第 5 行与 Sheet2 与预估分对比展示。
>
> 它不参与判定(第 27 项达标线只用预估分),仅用于向申报人解释差额。
总公式(五系列同一结构,第 26 项就是"审核 + 评分"里的评分部分):
总得分 = A + B(合计有上限) + C + D(有上限) + E + F + G + H(有上限) + I + J + K
| 分项 | 取数 | 建筑 | 环保 | 水利水电 | 机电 | 交通运输 |
|---|---|---|---|---|---|---|
| A 年限资历 | (参加工作时间 − 现职称取得时间)向下取整年数 × 系数 | × 0.8 | ×1 | ×1 | ×1 | ×1 |
| B 专业年限 | 现从事专业年限 × 1.5,与 A 合计封顶 | ≤10 | ≤12 | ≤12 | ≤13 | ≤12 |
| C 学历 | 取最高学历 | 专3/本4/硕6(博暂6) | 专4/本5/硕6/博7 | 专4/本5/硕6/博6 | 专6/本7/硕9/博10 | 专4/本5/硕6/博6 |
| D 年度考核优秀 | N = 等次"优秀"行数 | 1.5+(N−1)×1,≤5 | N×0.5,≤2 | N×2,≤5 | 2+(N−1)×1,≤5 | N×2,≤5 |
| E 基础分 | 固定加分 | 9 | 9 | 7 | 7 | 7 |
| F 发明专利 | 按【排名】与件数 | 13(不乘数量) | 首项 1-3名10/其他6,每多一项 +2/+1 | 首项 1-3名8/其他3,每多一项 +2/+1,限 2 项 | 1名12/2-3名10/4-6名8/其他4,≤15 | 1名12/2-3名10/4-6名8,≤18,限 2 项 |
| G 实用新型 | 三类合并(实用新型+外观设计+软著),按【排名】 | N × 5 | 1名2/2-5名1,≤6 | 0(不计) | 1名7/2-3名5/4-6名4/其他2,≤15 | 1名3/2-3名2/其他1.5,≤18,限 2 项 |
| H 论文 | 论文篇数 N | min(N×8, 10) | min(N×2, 6) | min(N×2, 8) | min(N×4, 15) | 1 篇 3 分、每多 1 篇 +2,限 2 篇 |
| I 荣誉/获奖备注量化分 | 【荣誉】【获奖】各条【备注】的"量化N分"之和 | 通用 | 通用 | 通用 | 通用 | 通用 |
| J 经历备注量化分 | 【专业技术工作经历】各条【备注】同上,封顶 30 分 | 通用 | 通用 | 通用 | 通用 | 通用 |
| K 其他业绩备注量化分 | 【其他业绩】各条【备注】同上 | 通用 | 通用 | 通用 | 通用 | 通用 |
> 完整逐系列公式、每条通用规则、5 条待确认口径见 references/量化分数计算_v5.1.md;
>
> 可交付给用户的系数矩阵 Excel 见 references/量化计算项清单_v5.1.xlsx。
A / B 两分项(v5.0 起并入本技能,最易漏算):
- A = (参加工作时间 − 现职称取得时间)的整年数 × 系数,年数向下取整(不足一年不计);
系数只有建筑是 0.8,其余四系列都是 1。
- B = 现从事专业年限 × 1.5;A 与 B 合计再取上限(先加后封顶,不是各自封顶)。
- A+B 的上限:建筑 10、环保/水利水电/交通运输 12、机电 13。
I 荣誉/获奖备注量化分(v5.1 起,与 J/K 同构):
- 逐条读【荣誉】与【获奖】各条的【备注】文本,用同一条正则
量化\s*([0-9]+(?:\.[0-9]+)?)\s*分
提取全部出现的数值求和;
- 不再用"荣誉或获奖条数 × 系列系数"的老口径计数;无该字样按 0 计;
- 与 J、K 一样在总分里另加,不替代任何已有分项。
基础分 E(v4.0 起):建筑 9 / 环保 9 / 水利水电 7 / 机电 7 / 交通运输 7
(建筑、环保原为 39,+39 一律改 +9)。
I / J / K 备注量化分(I 于 v5.1、J/K 于 v4.0 新增,五系列通用):
- 逐条读【荣誉】【获奖】各条的【备注】、以及【专业技术工作经历】各条的【备注】、【其他业绩】各条的【备注】;
- 用正则
量化\s*([0-9]+(?:\.[0-9]+)?)\s*分提取全部出现的数值并求和; - I = 荣誉+获奖备注里的量化分之和;J = 经历备注之和(封顶 30 分);K = 其他业绩备注之和;无该字样按 0 计;
- 在总分里另加(不替代任何已有分项)。第 26 项结果写作
⑨… ⑩…。
「实用新型」的取值范围(v3.1 明确,五系列通用):
专利类型共四种,计分时只分两组 ——
| 专利类型 | 归入 | 建筑 | 其余四系列(环保/水利水电/机电/交通运输) |
|---|---|---|---|
| 发明专利 | F 项 | 填写即 13,不乘数量 | 按【排名】与件数计分(见下表) |
| 实用新型专利 | G 项「实用新型」 | ×N 累加,每项 5 | 按【排名】档位计分(见下表) |
| 外观设计专利 | G 项「实用新型」 | 同上 | 同上(三类合并同口径) |
| 计算机软件著作权 | G 项「实用新型」 | 同上 | 同上 |
即 G 项 N = 实用新型专利 + 外观设计专利 + 计算机软件著作权 三类条数之和。
⚠️ 曾把"外观设计专利"当作公式未定义类型按 0 计分 —— 那是错误的,v3.1 起必须计入 G。
数专利时务必先读每项的【专利类型】字段,不能只数件数。
五个系列的 F / G 计分档位速查(完整矩阵见 references/量化计算项清单_v5.1.xlsx):
| 系列 | F 发明专利 | G 实用新型(三类合并) |
|---|---|---|
| 建筑 | 13(不乘数量) | N × 5 |
| 环保 | 首项 1-3 名 10 / 其他 6;每多一项 +2 / +1 | 1 名 2 / 2-5 名 1;合计封顶 6 |
| 水利水电 | 首项 1-3 名 8 / 其他 3;每多一项 +2 / +1;限计 2 项 | 0(不计) |
| 机电 | 1名12 / 2-3名10 / 4-6名8 / 其他4;合计 ≤15 | 1名7 / 2-3名5 / 4-6名4 / 其他2;合计 ≤15 |
| 交通运输 | 1名12 / 2-3名10 / 4-6名8;合计 ≤18;限计 2 项 | 1名3 / 2-3名2 / 其他1.5;合计 ≤18;限计 2 项 |
⚠️ 除建筑工程外,其余四个系列的 F、G 都要读每项的【排名】字段(原文形如"第一完成人""第三完成人""其他"),排名决定分档。建筑工程的 F、G 不需要排名。
学历分 C(v5.0 五系列):建筑 专 3 / 本 4 / 硕 6(博暂按 6);环保 专 4 / 本 5 / 硕 6 / 博 7;
水利水电 专 4 / 本 5 / 硕 6 / 博 6;机电 专 6 / 本 7 / 硕 9 / 博 10;
交通运输 专 4 / 本 5 / 硕 6 / 博 6。遇到矩阵外的学历档次先问用户。
年度考核「优秀」计分 D(v5.0 五系列):建筑 1.5 + (N − 1) × 1(≤5);环保 N × 0.5(≤2);
水利水电 N × 2(≤5);机电 2 + (N − 1) × 1(≤5);交通运输 N × 2(≤5)。
N = 考核表里等次"优秀"的行数。
论文项 H 封顶(v5.0 五系列,各有满分):建筑 min(N × 8, 10);环保 min(N × 2, 6);
水利水电 min(N × 2, 8);机电 min(N × 4, 15);
交通运输 1 篇 3 分、每多 1 篇 +2、限计 2 篇(原表标「满分 12 分」,与「限计 2 篇」冲突,
暂按限计 2 篇执行并注明)。每篇系数不变,只加封顶;算分时务必先算乘积再取 min。
第 3 项附:排名表分数不得重复(v4.0 新增,并入第 3 项) —— 打开【申报基础材料】里的
【申报晋升人员量化评分推荐排名表】附件(盖章扫描件),读表内各人分数并两两比对:
任意两人分数相同 → 判 "否",涉事人员结论"不通过";全部互不相同 → "是"。
结果要写明:表内人数、各人分数清单、是否重复(重复则列出分值与对应姓名)。
> 以打开盖章附件读表内分数为准(用户 2026-10-01 确认)。
>
> 系统里通常另有"量化评分推荐排名-得分"字段(在【一览表补充信息】里,每人一个数),
>
> 可作横向交叉核对,但不能替代附件核对。
>
> 该字段同时就是 v5.5「系统自填量化分」的取数来源 —— 逐人记进 system_score。
>
> 该附件同样受"前端预览假空"影响,读不到时下载原件确认。
第 27 项 预估量化分数-达标线(v5.5 新增,用户 2026-10-04 拍板) —— 结论性硬线:
| 预估量化总分(第 26 项) | 第 27 项判定 | 该人员审核结论 |
|---|---|---|
| ≥ 60 分(60 分整算达标) | 是 | 不受本项影响(仍看其余各项) |
| < 60 分 | 否 | "不通过"(即使这是唯一的不符合项) |
- 以本技能的预估分为准,不是以系统的「量化评分推荐排名-得分」为准(用户明确选的口径)。
- 结果写法(两个分数都要写,便于经办人判断差额来历):
是(预估量化总分 68.4 分,达到 60 分达标线;系统自填 96.0 分,预估低 27.6 分)否(预估量化总分 41.6 分,低于 60 分达标线;系统自填 74.6 分,预估低 33.0 分)- 判"否"时:该格字体标红 →
bad_items记第 27 项→conclusion写 "不通过";
profile 的 meta.score_threshold 写 60(渲染器据此做兜底提醒,见 references/输出Excel说明.md)。
- 结果表里同时给出系统自填分(见下「输出 Excel」的第 5 行写法)。
第 1 项 工作总结附件(v6.3 由原第 26 项提前至此) —— 在「基础信息 → 个人基本信息」页签,附件通常是
文字为「点击预览」的条目(不是基础材料区的「查看」)。
v6.3 现行口径:只判断该条目有没有内容(是否已上传),不再下载原件、不再核验红色印章。
有上传即判「是」,未上传记"—(未填报)"。
> 说明:原「工作总结附件须有红章」「必须点预览开原件确认」的口径已作废(用户 2026-10-10 拍板)。
> scripts/check_seal.py 与「红章核验」仅作历史备查,不再用于判定。
第 11、13 条(经历备注、业绩成果备注)最易出错、也最容易误判。2026-09-29 用户明确确认口径后,标准已放宽为
"实质引用即可":
| 情形 | 旧(严)口径 | 现行口径(用户确认) |
|---|---|---|
第11条 缺 (N项其中之一)、写成 ,两项其中之一。 |
判否 | 判是 |
第11条 结尾只有 。、无括注 |
判否 | 判是(只要引用了"三、…(能力)条件"及条款) |
第13条 写 符合业绩成果条件第八条…(无引号、无"四、"、条号非"(八)") |
判否 | 判是(含"业绩成果条件"字样即可) |
| 第11/13条 完全没引用到对应章节/条款 | 判否 | 判否(这才是真不符合) |
> 教训:这两条不要按"逐字套模板"判。用户要的是"有没有实质引用到评审文件的对应
>
> 章节",不是"标点和括号写没写全"。曾经因为按严格模板判,把 3 个人的结论全判错了,
>
> 返工重出表。
核对原文的建议命令:
cdp.sh eval "(function(){var m=document.querySelector('.ant-modal-content');return JSON.stringify(Array.from(m.querySelectorAll('p.text-area-p')).map(e=>e.innerText.trim()).filter(t=>t.indexOf('专业技术工作经历')>=0),null,1);})()"
更省事的办法:一次性把弹窗全文抓下来(弹窗内 7 个页签内容同时存在于 DOM),再在本地文本里
find('*专业技术工作经历') / find('*业绩成果') 精确定位段落(弹窗内 7 个页签内容
同时存在于 DOM,一次抓全)。
5. 输出 Excel
不要手写渲染代码。 用 scripts/render_result.py + 一份 profile JSON:
python scripts/render_result.py profiles/<批次>.json [输出目录]
> 📄 完整说明见 references/输出Excel说明.md(profile JSON 逐字段含义、两个 Sheet 的版式、
>
> 结果字符串写法、黄色复核标记、重点项配色表、文件被占用时的回退与备份、常见报错)。
>
> 需要 openpyxl(python -m pip install openpyxl)。
>
> ★落盘位置:一律保存到电脑桌面(v5.2 起固定口径) —— 不传输出目录时脚本默认写桌面
>
> (~/Desktop,OneDrive 重定向的桌面会自动识别)。不要自作主张改到工作区或临时目录;
>
> 若确实需要另存,必须同时把最终文件也复制一份到桌面,并在回复里说明实际路径。
profile JSON 只存「数据与口径」(meta / people / items / results / class_count /
bad_items / conclusion / system_score / notes),渲染逻辑与全部样式都封在脚本里 ——
换人、换专业、换人数都不需要改代码,只换 JSON。人数可变(列数自动跟随)。
样板:profiles/2026中级_四人全量_27项样板.json(27 项全量、含 system_score 与标黄示范)。
主表用横向明细(审核项为行、人员为列)——27 项时比"人员为行"宽表好读得多:
- Sheet「逐项审核明细」:
序号|审核项目|审核要求(判定口径)|<人名1>|<人名2>|…
顶部 6 行人员信息块(顺序固定):**姓名 → 身份证号 → 审核结论 → 预估量化分数
→ 申报专业 → 申报职称,之后是表头行,再往下 1~27 项;表底不再重复「审核结论」行**
(v3.2 起结论只出现在顶部信息块,避免两处结论不一致)。
- 第 5 行【预估量化分数】自 v5.5 起带"系统自填"对比:
`50.6 分(工程-建筑工程口径)|系统自填 80.6 分(预估低 30.0 分)|①…⑩…`
—— 预估总分 → 系统自填分(含高/低差额)→ 紧凑十项。没写 `system_score` 时与老版式完全一致。
- Sheet「人员审核结论」:
序号|姓名|身份证号|预估量化分数(★重点)|申报专业|申报职称| 业绩成果类别数(★重点)|不符合项|需人工复核(★标黄项)|审核结论(v3.2 起新增「预估量化分数」列,
v5.2 起新增「需人工复核(★标黄项)」列;v5.5 起该分数列同步标注系统自填分)。
格式要求:
- 【否】开头的单元格 → 字体红色加粗(
Font(color="C00000", bold=True)) - 需人工复核的单元格 → 整格标黄(v5.4 起用黄,v5.2~v5.3 曾用绿,见下)
- 第 27 项判"否" → 同上标红,且该人审核结论必须是"不通过"(
bad_items记第 27 项) - 第 5 行与 Sheet2 分数列 → 带"系统自填 XX 分(预估高/低 Z 分)"对比(v5.5,靠 profile 的
system_score) - v5.6 五项细查(第 4、7、9、10、20 项)判「否」→ 同样标红 + 结论「不通过」(
bad_items记对应项号) - 审核结论"通过"→ 绿底深绿字;"不通过"→ 橙底红字,并注明不符合项编号
- 未填报项写
—(未填报,无需审核),灰色字,不要误写成"否"
★需人工复核标黄(v5.4 起用黄色;v5.2~v5.3 曾用绿色,用户 2026-10-03 要求改黄):
审核中发现的疑点、存疑、口径不确定、需用户人工拍板的地方,该单元格整格标黄 ——
中黄底 FFEB9C + 深褐加粗字 9C6500 + 黄边框 FFC000
(醒目,且不会与"通过"的绿底 E2EFDA 混淆 —— 这正是改黄的原因)。
- 触发方式二选一(脚本自动识别,不要手写渲染代码):
① 推荐:在结果文字里写明「建议人工复核 / 需人工复核 / 待复核 / 待确认 / 存疑」等字样;
② profile 里显式写 "review": {"<人名>": [项号, …]}(适合文字里不方便写提示的场合)。
- 红黄分工:否(…)=已确认不符合(判"不通过");黄色=还不能下结论、要人看一眼。
典型场景:第 25 项刊物等级(仅境外刊;连续型电子出版物已按 v5.4 口径直接认定合格)、
第 8 项现职称专业与申报专业是否算一致、第 19 项目录缺失、跨系列口径边界。
同一格既是"否"又标黄时以红色为准(红压黄)。
- Sheet2 会自动同步「需人工复核(★标黄项)」列(形如 第 25 项,无则 无,有内容同样标黄);
渲染时控制台会回显"需人工复核:某人 → 第 N 项",把这行原样带进给用户的回复里。
- 交付前主动核对:凡是你判过"建议人工复核"的项,都要在给用户的回复里单独列一条
说明"为什么拿不准、需要用户确认什么、确认后会怎么改判"。
重点项高亮(用户 2026-09-29 追加;v3.2 扩充):人物信息块的【审核结论】【预估量化分数】、
第 11 项(专业技术工作经历-备注)、第 12 项(业绩成果-项数)、第 26 项(预估量化分数)
必须整行突出显示:
| 行 | 名称 | 底纹 | 字体 | 边框 |
|---|---|---|---|---|
| 信息块 | 审核结论(值列) |
E2EFDA 浅绿 |
微软雅黑 10.5 加粗 375623 |
常规 |
| 信息块 | 预估量化分数(值列) |
DEEBF7 浅蓝 |
微软雅黑 10 加粗 1F4E79 |
常规 |
| 第 11 项 | ★专业技术工作经历-备注 |
FFF7E0 浅黄 |
微软雅黑 10 加粗 7F6000 |
medium BF8F00 |
| 第 12 项 | ★业绩成果-项数 |
FFE0B2 深黄 |
微软雅黑 11.5 加粗 843C0C |
medium BF8F00 |
| 第 26 项 | ★预估量化分数 |
DEEBF7 浅蓝 |
微软雅黑 10 加粗 1F4E79 |
medium BF8F00 |
> 信息块标签列(姓名/身份证号/审核结论/预估量化分数/…)统一用 DDEBF7 浅蓝底 + 加粗,
>
> 只有「审核结论」「预估量化分数」两个值列按上表换色。结论为"不通过"时值列改 FCE4D6 橙底红字。
配套:Sheet2 的「预估量化分数(★重点)」与「业绩成果类别数(★重点)」两列同样高亮
(前者用 key3 浅蓝、后者用 key2 深黄),类别内容形如
共 5 类(获奖、项目(课题)、专利、其他业绩、论文)。
第 12 项结果写法(必须写明共几类 + 具体类别):
是|共 N 类:类别1、类别2(达标线 ≥2 类);明细:各条数;未填报:……
计数规则:只算【荣誉、获奖、项目(课题)、专利、其他业绩、论文、论著】7 类
(专家称号不计入);同类别多条(如 2 篇论文)只记 1 类;≥2 类即符合。
保存到桌面并先备份原文件为 职称审核结果表_原文件备份.xlsx。
★v5.7 分批导出(用户 2026-10-06 追加):每审完 10 人导出一份(累积口径 ——
第 N 批含此前全部已审人员,最后一批即全量汇总);文件名建议
职称审核结果表_<日期>_已审<N>人(第<M>批).xlsx;人数不是 10 的倍数时最后一批照导。
> 原文件常被 Excel / 预览器占用(PermissionError: [Errno 13])。此时备份与覆盖都会失败,
>
> 按 复核修正版 → 原文件名 → 重点标注版 的顺序依次尝试,用第一个能写成的,
>
> 并在回复里说明实际落盘的文件名。
交付与收尾
- 用
present_files呈现生成的 Excel。结果表默认已在桌面,直接指路即可。 - 回复里必须点名"需人工复核"的项(脚本会在控制台回显"需人工复核:某人 → 第 N 项"):
逐条说明拿不准的点、需要用户确认什么、确认后会怎么改判 —— 标黄的格子用户一眼能看到,
但为什么标黄要在文字里讲清楚,否则用户还得回头翻表。
- 回复里必须交代 v5.6 五项内容细查结果(第 4、7、9、10、20 项):逐项一句话说明实际看到的
关键内容(继续教育证书内容、学历备案表、现职称预览份数与认定/评审表、考核表年度、论文六附件),
凡有任一项不符、已判「不通过」的,单独列出并写明是哪个附件缺什么。
v5.7 补充:论文项只需交代「正文含摘要/目录与检索页含本人姓名/封面刊名一致/
封底已上传/版权页含 ISSN 或出版单位」即可 —— 封底不再看内容。
- v5.7 新增:回复里必须交代「转人工复核」与「分批导出」 ——
①逐人列出第 14(荣誉)、15(获奖)、19(其他业绩)项是否转人工复核及其附件条数,
提醒经办人自己点进去过目;②说明已按第几批导出了哪些文件、实际落盘文件名,
以及是否还有下一页未审。
- v5.9 执行顺序:回复里可用一句话说明「本轮一人一趟闭环:7 个页签各只进一次、判完即锁、逐人落盘,未做跨人比对」,
- (v5.8 沿用语:回复里可说明「本轮按页签一趟判完、7 个页签各只进一次」,
不必展开;结果表行序与判定结果与 v5.7 完全一致,无需向用户解释差异。
- 回复里必须交代第 27 项达标情况(v5.5):逐人给出「预估总分 → 60 分线 → 系统自填分 → 差额」,
并说明差额主要来自基础分口径(E=9 vs 系统 39)。凡预估分 < 60 分的人,结论已按口径判"不通过",
要在回复里单独列出并给出适用提醒(口径来自用户拍板,若要改按系统自填分判,说一句就能改)。
渲染器若打印了 ⚠️ 口径提醒:… 但审核结论写的是「通过」,说明数据自相矛盾,必须先修再交付。
- 用户要"发一份提示词"时:把 references/总提示词_v6.4.txt 复制到桌面并 present_files,
文件名带日期,如 职称审核总提示词_v6.4_<日期>.txt;同时在工作区留一份副本。
- 用户要"发量化计算表格"时:把 references/量化计算项清单_v5.1.xlsx 复制到桌面并 present_files。
- 审核过程不要点击「审核通过/审核不通过/审核待定」按钮(那是下结论的动作),
只用弹窗的关闭按钮或「取消」退出。
- 浏览器可保持常驻供用户继续操作;提醒用户 sleep 到期后会退出。
- 对"格式严格性"类判定(第 11、13 条)必须先向用户确认口径再下结论,不要自行按
逐字套模板判否。若已判否,要在回复里单独点出"是格式不符还是实质缺失",说明改判条件,
方便用户按自己的口径复核。曾因口径过严把结论判反、返工重出表。
换专业 / 换批次(多专业支持)
同一系统内换个专业,绝大部分东西直接复用:27 项审核流程、页面操作、浏览器脚本
(scripts/ 与自建的 JS 片段)、Excel 版式全部不变 —— 因为都是同一个申报系统,字段结构一样。
只有少数几项必须按新专业重新取值:
| 审核项 | 通用性 | 换专业时要做什么 |
|---|---|---|
| 1、2、3、4、5、6、7、8、9、10、14~20、22、23、24、25、27 | ✅ 通用 | 无需改动(阈值如"继续教育 ≥4""年度考核 2022–2025"在同一申报年度批次内一致) |
| 11 ★专业技术工作经历-备注 | ⚠️ 依赖评审文件条款 | 读新评审文件「三、专业技术工作经历(能力)条件」的章节号与条款原文,用新专业的条款去匹配备注;v6.3:只判页签【备注】文本、附件内容转人工复核 |
| 12 ★业绩成果-项数 | ⚠️ 栏目可能不同 | 核对新专业弹窗「业绩成果」页签的栏目是否仍是那 7 类,不是则调整 7 类清单与计数规则 |
| 13 业绩成果-备注 | ⚠️ 章节名需确认 | 只需匹配「业绩成果条件」字样,通常不用改;确认新文件的章节名仍是「四、业绩成果条件」 |
| 21 论文-字数 | ⚠️ 阈值可能不同 | 确认新专业对论文字数(千字)的要求,不一定是 <10 |
| 26 预估量化分数 | ⚠️ 公式随申报系列变 | 已内置 5 套(建筑工程/环保工程/水利水电工程/机电工程/交通运输工程),见 references/量化分数计算_v5.1.md 与 references/量化计算项清单_v5.1.xlsx。系列取自弹窗【申报信息】→【申报系列】;新增系列只需按同一矩阵补一列。通用部分:E 为固定加分;I/J/K 取备注"量化N分"(J 封顶 30 分,v6.2;I、K 不设此项封顶);「实用新型」=实用新型专利+外观设计专利+计算机软件著作权(三类合并) |
| 27 预估量化分数-达标线 | ✅ 通用 | 60 分线固定、以预估分为准(meta.score_threshold);若你单位对某系列另有达标线规定,改这里与该项 req |
| v6.3 口径(第 1、3 项仅判有无内容·不核红章;第 11、12、14~19 项不再点开预览;排名表分数两两比对) | ✅ 通用 | 与专业、系列无关,换专业后照用,无需改动 |
| v5.7~v5.9 执行口径(预览逐一点开/转人工复核/每 10 人分批导出/人外层·页签内层/判完即锁/逐人落盘/禁止跨人比对) | ✅ 通用 | 与专业、系列无关,换专业后照用,无需改动;结果表行序仍是第 1~27 项 |
操作步骤:
- 用户上传新专业评审文件(如
环保工程中级.pdf)→ 先完整读它,
提取「三、专业技术工作经历(能力)条件」与「四、业绩成果条件」的章节号、条款原文。
2. 逐人核查时用新专业的条款原文比对备注,不要沿用建筑工程口径。
3. 复制 profiles/2026中级_建筑工程_市政给排水.json 改名为新批次
(如 2026中级_环保工程.json),替换 meta / people / items[].req / results /
class_count / bad_items / conclusion / notes,再跑 render_result.py。
4. meta.title 改专业名(工程-建筑工程 市政给排水工程 → 工程-环保工程 …);
meta.review_file 与 notes.basis 换成新评审文件的书名和条款。
> ⚠️ 别把上一个专业的条款写进新表。notes.basis("判定依据"行)里出现过
>
> "三、专业技术工作经历(能力)条件(四)、四、业绩成果条件"这类建筑工程口径,
>
> 换专业时必须替换,否则审核依据对不上。
>
> ⚠️ 用户提示词里的数量阈值(论文 <10 千字、继续教育 ≥4、年度考核 4 个年度)
>
> 是用户口径,各专业未必相同。换专业前主动向用户确认这几个阈值。
判定依据文件(用户桌面常见位置)
职称系统必填项.pdf—— 逐项填报要求(备注须"填评审文件中的表述"、
其他业绩须加"其他业绩材料目录"并排最前等)
- 2026中级职称/建筑工程中级.pdf —— 河北省工程系列建筑工程专业工程师职称申报评审条件。
核对 (四) 从事公用事业(给排水、燃气、供热、污水和垃圾处理)工程… 与
四、业绩成果条件(一)~(十一) 的原文。
- 2026高级职称/、关于做好2026年职称申报评审工作的通知.pdf、邢人社职〔2026〕2号… —— 政策文件
关于本技能
- 本技能由职称评审经办人的实际审核工作沉淀而来,一个技能同时完成"审核 + 评分":
覆盖 27 项审核口径、量化分数五系列(A~K)计算方法与 Excel 结果表的产出规范。
- 量化分数即审核第 26 项,公式与系数矩阵已内置:
references/量化分数计算_v5.1.md(逐系列公式 + 通用规则 + 待确认口径)与
references/量化计算项清单_v5.1.xlsx(五系列系数矩阵,可直接交付)。
也可以单独调用 —— 只要求"算某人的量化分"时,直接套这套口径,不必跑全 27 项。
- 第 27 项为达标线:第 26 项的预估量化总分 ≥ 60 分才判"是",低于 60 分判"否"且结论"不通过"。
结果表第 5 行与汇总表会同时标注系统自填量化分,方便经办人对比(差额多来自基础分口径)。
- 具体系统的抓取实现(DOM 选择器、附件下载方式)需按你所在单位的系统自行适配,
可参考配套技能 browser-automation-cdp。
- 审核结论务必人工复核后再使用。本技能是辅助工具,不替代经办人的判断与签章。