← 返回目录

第 15 讲 申报书:从通知附件到可提交的申报表

【可执行状态】现在就能做(一条链三步跑通;上传前先确认学校对材料外送的规定)

【本讲对应资产】research-assistant 引擎(8 个工具);本讲关键工具 grant_extract_dict(已填申报书 → 课题字典)、grant_build_template(已填 docx → 占位符模板)、grant_fill(课题字典 + 模板 → 全套文档 + 校验报告);收尾可交 docx_polish 统一排版

【本讲原理来源】L3 第 20 课《Function Calling 深度解析》(工具说明书三要素)——本讲落在“参数从哪来、谁是唯一来源”这一条上


引子:为什么“再细心一点”永远不够

先问一个问题:你上一次报课题,是三份材料一起交的吗?如果是,你有没有把这三份材料从头到尾对过一遍——课题名称一个字一个字地、成员顺序一个位置一个位置地?

多数人没有,因为对不完。申报书、匿名活页、成员信息汇总表,三份文档、几十个字段,人眼对拍一遍要一小时,而且第二遍还会漏。改了一个字段,另外两处不改,交上去就是退回来。

这一讲要换的不是“细心程度”,是做法本身:让三份文档长在同一个数据源上——改一处,三处一起变。

一、场景:三份文档,几十个字段,人眼对拍

赵老师(化名)这次要报一个校级教改课题。科研秘书发来三样东西:一份通知、一份上一届已填好的申报书(学校不发空白模板,只发一份填过的样例当体例),还有一份匿名活页的格式要求。校级课题要交:申报书、匿名活页、成员信息汇总表,三份。

她上一次报课题是怎么栽的,她记得很清楚。

第一稿写完,第二稿改了课题名称——从“基于生成式人工智能的课堂教学模式研究”改成“生成式人工智能赋能课堂教学的模式研究”。改是改了,但只在申报书里改了。交上去两周后,科研处退回来:活页上的课题名称还是旧的那一版;汇总表里成员顺序和申报书里不一致;经费预算表里“资料费”在申报书上是 0.5 万、在活页上写成了 0.8 万。

三份文档,几十个字段,人眼对拍。改一处、漏两处,几乎是必然。

再往深一层想:为什么必然?因为这三份文档本来就不是“一份东西的三个视图”,而是三份各自独立、各自被修改的稿子。就像同一笔账记在三个本子上,你怎么可能指望它们永远一致?

这一讲练的动作是:让三份文档长在同一个数据源上。

二、原理一页:单一数据源——改一处,全部一致

2.1 为什么“细心一点”解决不了这个问题

上面那三类错,看起来是粗心,实际上是结构问题:同一份信息被存了三遍(申报书一遍、活页一遍、汇总表一遍)。只要存了三遍,就有三遍改的机会,也就有两处漏改的机会。人会累,机器不会——但机器的前提是:信息只存一遍。

这就是“单一数据源”(single source of truth):所有出件都从同一份数据生成,不复制、不各改各的。

举个生活里的例子:一家饭馆如果前厅写一块价目板、后厨贴一份价目表、收银机里再存一套价格,那涨价那天一定会有一处忘改。再比如,一个班的成绩如果教务处、辅导员、任课教师各存一版,那你迟早会见到“同一个学生三个分数”。这些混乱的根子都不是人懒,是同一件事被存了不止一遍。

2.2 历史纵深:从手抄往年本子到字典驱动

填申报书这件事的做法,换过四代。

第一代,手抄往年本子。 上世纪八九十年代,报项目的人把上一届别人的本子借来,对着往里抄。抄的是“体例”——哪一段写什么、经费怎么写、成员怎么排。这一代留下的问题是:抄的是别人的内容,容易连不该抄的也抄进来;而且今年格式一变,去年的本子就废了。

比如,老教师至今还记得,那时候借本子要托人情,还回来的本子上常有铅笔改动过的痕迹——那是上一家的内容,抄进去就成了“你的研究成果”。

第二代,四处拷字段。 有了电脑之后,做法变成“在几个文件之间复制粘贴”。课题名称从这份文件拷到那份,成员表从一个 Excel 拷到另一个 Word。这一代比第一代快,但埋下了本讲开头那类错的根:同一份信息被复制成了多份,从此有了各自被改的可能。

第三代,邮件合并。 Word 的邮件合并(一份名单 + 一个模板,批量出函件)第一次把“数据”和“格式”分开了[1]:数据放在名单里,格式放在模板里。它的前提是“得有人先把合并域插好”,所以它一直没真正普及到教师手里。

第四代,就是这一讲的字典驱动。 它把邮件的“数据 / 模板”分家继续往前走一步:先让机器把学校那份已填好的申报书读成一本“字典”(所有字段集中一处),再把同一份件反解成模板,最后拿字典去灌模板,一次出全套件。 三份文档共用一本字典,从此只有一处可改。

代代表做法解决了什么留下的老问题
一手抄往年本子有了体例参照抄内容、格式一变就废
二多文件复制粘贴快一份信息存多份,各自被改
三邮件合并数据与格式分家要人先插域,没普及
四字典驱动(本讲三步链)全套件共用一本字典字典本身要人核一遍,缺字段要补

看最后一列:第四代留下的老问题,是“字典要人核”。这正好解释了本讲校验点的第一条——先核字典,再出件。

2.3 这条链有三步,是“反解 + 回填”

学校不发空白模板,只发填过的样例;要的又是学校自己的版式。所以做法不是“新建一份漂亮表格”,而是把学校那份已填件反解开:

这里的“反解”,可以类比成给一份成衣反推纸样:不是照着样子重做一件新的,而是把原来那件的版型尺寸量出来,这样以后同一版型可以做无数件,而每一件都与原件同款。

第几步工具(真名)干什么谁来喂参数
第一步grant_extract_dict把“学校已填的申报书”解成课题字典 JSON(科研助理的单一数据源)docx_url:那份已填申报书的地址
第二步grant_build_template把已填 docx 反解成占位符模板,版式/表格/字体原样保留app_docx_url(申报书)、hy_docx_url(活页)、name(课题名)
第三步grant_fill课题字典 + 模板 → 全套文档 + 校验报告dict_json(课题字典)、docs_json(文档清单)、anon(需匿名化的文档名,逗号分隔)

一句话记住这条链:解出一份字典,反解一套模板,字典灌进模板。

2.4 设问自答一:学校模板每年都变,这套东西还管用吗?

管用,而且这正是它最值钱的地方。

变化的通常只是版式,不是字段。今年把“预期成果”挪到附表里,明年又在表头加一行“依托课程”——字段本身几乎不动,动的是它们摆在哪儿。

字典驱动的好处就在这儿:字典记的是“字段的值”,模板记的是“值摆在哪儿”。 版式一变,你只需要拿新版式的那份件重新反解一次模板(第二步),字典原封不动接着用。打个比方:这就像换了个新式样的行李箱,衣服还是那些衣服,重新装一遍就行——不用重新买衣服。

反过来说,如果你走的是第二代那条路(四处拷字段),版式一变,你手头那几份文件全都得重来。这就是“分开存”和“混着存”长期成本的区别。

2.5 设问自答二:把申报书传给服务端,安全吗?

这是本讲必须先答的一个问题,因为它涉及学校制度,不是技术偏好。

这条链是服务端在跑的:grant_extract_dict 要能取到那份已填申报书,grant_build_template 要能取到申报书与活页。把已填件交上去,等于把文件送出本机。

而申报书里有什么?负责人与成员姓名、职称、身份证类信息(部分表格要求)、经费预算、以及尚未公开的研究设想。这属于学校数据,不属于公开资料。

举一个常被忽略的情形:假如你在实验室的公共电脑上跑这条链,取件的链接又是公开可访问的,那么这份含成员姓名与经费的件,就有可能在你不注意的时候被别处取走。这不是危言耸听,是材料外送这件事本身的属性。

所以规矩是两条:

  1. 动手前先按学院/学校的材料管理与保密要求确认。 不允许外送的,就走第二条路。
  2. 不允许外送时的做法:只把结构与字段名拿去做模板(即反解出一套模板骨架),内容在本机用文字处理软件填;或者只用这套方法做跨文档一致性检查(先把三份件在本机排成统一格式,再人工对拍)。

打个比方:这好比你是把原件寄出去复印,还是在家里复印好再拿一页出去。规矩不同,做法就不同;但无论哪种,先问一句“这个东西能不能出门”,是动手前的第一个动作。

2.6 “反解”这两个字为什么关键

如果我们自己造一套表格,就会掉进最常见的一个坑:格式对了,版式不对——字号差半号、表头少一条线、页边距不一样,评审眼睛一扫就知道这不是学校那份表。

反解出来的模板,前提就是“版式/表格/字体原样保留”。所以这份模板从哪来?只从学校下发的那份件来,不要从网上下载一份“同名模板”。例如,很多学校的活页有特定的匿名要求与页数限制,网上找来的同名模板十有八九对不上。

2.7 匿名活页:anon 参数管什么,不管什么

匿名评审的活页不能出现姓名、单位、团队成员。grant_fill 有一个 anon 参数(需匿名化的文档名,逗号分隔),你把哪几份要匿名点给它,它在出件时就处理。

但要注意:匿名不到底的责任在人。 工具处理的是“字段级”的姓名单位,而真正会暴露身份的东西常常不在字段里:

这四处,出件后你自己扫一遍——这是评审规则,不是格式偏好。好比出门前照镜子:机器能帮你把领子翻好,但有没有忘拉拉链,还得你自己低头看一眼。

2.8 交付前先看报告,再看成品

grant_fill 的产出从来不只是文件,而是全套文档 + 校验报告。这与第 8 至 13 讲那条“先看报告,再看成品”的习惯是同一条:凡是机器批量出货的活,都要有一个能说清“哪里没做对”的东西跟着。

报告要看的还是三张清单:已替换 / 未替换(模板里有、配置没覆盖)/ 缺失字段(配置了但数据取不到)。 两份清单不为零,就不算交件。

设问自答三:报告归零了,是不是就可以直接交?

不是。报告归零只说明“模板里每一个位置都填上了东西”,不说明“填进去的东西是对的”。字典错了,它会照着错的填,而且填得整整齐齐。所以第一顺位永远是核字典——机器擅长“每格都填满”,人负责“每一格都对”。

三、动手三件套

一句话指令(一条链,分三步)

第一步:先解字典,先看字典。

用 grant_extract_dict 把这份学校已填的申报书解成课题字典,docx_url 是 https://……/申报书样例.docx。解完先把字典打给我看,我要逐字段核一遍,别急着出件。

第二步:反解模板,版式不许动。

用 grant_build_template 把这份已填件反解成占位符模板:app_docx_url 给申报书,hy_docx_url 给活页,name 用我的课题名称;版式、表格、字体原样保留,不要重排。

第三步:字典 + 模板出全套件,出校验报告。

用 grant_fill 把课题字典灌进模板,出全套文档和校验报告:dict_json 用上一步的字典(我把改过的字段更正在里面),docs_json 挂齐申报书/活页/汇总表,匿名的那几份在 anon 里点名。

预期产物

校验点(逐字段对拍,不许跳)

  1. 先核字典,再出件。字典是唯一数据源,字典错了后面全错。重点核四处:课题名称逐字、成员顺序与职称、经费科目与金额、起止时间。
  2. 报告归零:未替换 0、缺失 0,才叫出件成功;不为零就回字典补字段,不要到成品里手改。
  3. 同字段跨文档逐字一致:抽 5 个字段(课题名称、负责人、成员、经费总额、起止时间),在申报书、活页、汇总表里各找一遍,三处必须像复印件一样一致。
  4. 版式没动过:把出件与学校原件并排看——字号、字体、表格线、页边距、页眉页脚。不要用“看起来差不多”验收,要逐项对。
  5. 匿名四处全扫:正文里的单位指代、致谢与相关成果、文档属性(作者)、文件名。四处都干净才算匿到位。
  6. 占位符残留 = 0:在成品里搜模板的占位符记号,还能搜到就是没填完。
  7. 签字前本人通读全文:机器摆的是你给的内容,逻辑通不通、话说得对不对,只有你能负责。

四、常见错误与排错

症状查哪里
字典里某些字段是空的来源件里本来没写,或那几个字在一个合并单元格里没被识别。补进字典,不要在成品里手改
报告里出现“未替换 N / 缺失 N”字典缺字段,或 docs_json 没挂全模板。补齐字典后重跑,不要手改文件
出件份数比通知要求的少文档清单没挂全;另一种同类坑(第 8—13 讲的填制工具记录过):数据形状传错会让份数变少。出件份数要按通知核对
版式变了(字号、表格线、页边距)用了自己找的模板,或拿反解出的模板又手工改过。改内容在字典里改,改版式在学校原件上改
匿名不彻底开了会只匿了正文姓名,漏了文件名与文档属性。按上面第 5 条四处扫一遍
引擎配置了却完全不用它信任门静默拦截:日志里会有 skipping untrusted server,界面不报错,只是不用。处理步骤见附录 C
改完连接器还是不生效应用只在启动时读一次配置:必须完全退出应用再打开(不是关窗口)
上传时卡在“文件访问不了”那几份件要先能被服务端取到(提供可访问的链接)。这一步涉及材料外送,先确认学校的材料管理规定

五、边界与红线

六、拓展与学科迁移


带走一句话

三份文档只能有一个源头——改一处、全部一致,才叫交件。

背后的引擎(本讲速查)

你要干的活工具全名关键参数
把已填申报书解成课题字典(单一数据源)mcp__research-assistant__grant_extract_dictdocx_url(必填)
把已填 docx 反解成占位符模板(版式原样)mcp__research-assistant__grant_build_templateapp_docx_url(必填,申报书)、hy_docx_url(活页)、name(课题名)
字典 + 模板 → 全套文档 + 校验报告mcp__research-assistant__grant_filldict_json、docs_json(必填,形如 [{“name”:“申报书”,“url”:“https://…/tpl.docx”}])、anon(需匿名文档名,逗号分隔)
全套文档统一排版(字体/标题/页码)mcp__research-assistant__docx_polishdocx_url

本讲要点(速记)

参考文献

[1] 关于“数据与格式分离”这一脉络,邮件合并(mail merge)是 20 世纪 80 年代文字处理软件引入的批量函件生成方式,其思想与此后的模板引擎一脉相承;相关技术史梳理见:Haigh T. Remembering the Office of the Future: The Origins of Word Processing and Office Automation[J]. IEEE Annals of the History of Computing, 2006, 28(4): 6-31.

[2] 国务院. 国家自然科学基金条例(国务院令第 487 号)[Z]. 2007-02-24.(科研项目申请与评审的基本规范依据)

[3] 中共中央办公厅, 国务院办公厅. 关于进一步加强科研诚信建设的若干意见[Z]. 2018-05-30.(科研诚信与学术不端治理的总体要求)

[4] 中华人民共和国国家质量监督检验检疫总局, 中国国家标准化管理委员会. 信息与文献 参考文献著录规则: GB/T 7714—2015[S]. 北京: 中国标准出版社, 2015.

数据与平台:本讲工具步法与参数来自 zhenyuonline.cn 的 research-assistant 引擎(grant_extract_dict/grant_build_template/grant_fill/docx_polish,2026-09-17 核对)。文中标注【需补】之处为需以本校通知为准的事项,未以估计值填充。