发现事项与检查项
完整性检查针对哪些情况、各发现事项的严重程度如何、哪些发现事项会影响结账能否算作“clean”(无高、中严重程度发现事项),以及每项发现事项如何解决。
什么是发现事项
每次结账都会在任何内容对外分发之前,对 Haruno 根据公司导出文件构建的账簿运行完整性检查。每项检查都是一个始终存在的提问,而电子表格对它只会隐含地、悄无声息地作答。答案不对时,该检查就会产生一条发现事项。
Haruno 将每家公司称为 client(客户);文件夹名称、命令和仪表板中用的都是这个词。
发现事项意味着某个数字缺失、加总不符或列报有误:某个会计科目有余额,却没有任何报表项目承接;某张明细表所列的总账数与账簿不符;某个手工录入的差额声称已经核对一致,而明细数据并不支持。
发现事项不是程序故障,而是您原本要到第三周才会发现的情况。有发现事项的结账同样是一次成功的结账:发现事项正是它的产出,它仍会生成报表包、对账底稿和仪表板。由 Haruno 为您执行结账时,它会在任何报告对外分发之前,把这些发现事项逐一告诉您。
差异不等于发现事项。超出预算是关于经营的事实,而不是账目的缺陷,因此它显示在预算面板上,从不出现在发现事项列表中。
严重程度
| 严重程度 | 含义 | 是否计入? |
|---|---|---|
| 高 | 某个数字缺失或加总不符:某项余额未出现在任何报表中;资产负债表勾稽不符;某张明细表核对所依据的数字并非账簿中的数字。 | 是。它在投资组合层面计入,并使该月无法达到“fully reconciled”(已全部核对一致)。 |
| 中 | 报表仍然勾稽一致,但存在需要有人修正的错误:两个月份被错报了相同的金额;某张明细表需要重新编制;某个预算行对应不到任何报表项目。 | 是,与高严重程度完全相同。 |
| 低 | 目前还没有造成错误。通常是一个既没有对应报表项目、也没有余额的会计科目:目前没有任何数字缺失,但该科目一旦出现第一笔余额,这笔余额就会悄无声息地从报表中漏掉。 | 否。列在该公司的发现事项卡片上,但在任何地方都不计入。 |
一家公司在没有严重程度为高或中的发现事项时,即为“clean”。仪表板统计的正是这一点,结账在锁定某个月份时记录的也是这一点(参见“结账状态”)。低严重程度发现事项是未来的风险,绝不会成为某个月不算“clean”的原因。
检查项
在公司页面上,“Integrity findings”卡片逐条列出每个发现事项,包括其严重程度、触发的检查项、对象(某个会计科目、某个报表项目或一段连续期间)、检查项自身附带数字的说明,以及一个“Propose a fix”(提出修正方案)按钮。

有些检查项只有在公司发送了它们所读取的文件时才会运行:试算平衡表、应收账款账龄表、按类别(class)划分的利润表、预算、供应商明细或 CRM 导出文件。这类检查项没有产生发现事项,可能只是因为没有可供检查的内容。空白不等于零。
| 检查项 | 严重程度 | 触发条件 |
|---|---|---|
| unmapped_active_account | 高 | 某个会计科目有余额或发生额,但没有对应的报表项目,因此它在所有报表中都缺失。 |
| presentation_tieout | 高 | 资产负债表的 CHECK 行(公司自己的公式,通常为资产总计减去负债和所有者权益总计)不为零。差额相同的一段连续期间合并为一行。 |
| bs_tieout | 高 | 按科目分类汇总,资产余额不等于负债与所有者权益余额之和。 |
| ni_crosscheck | 高 | 利润表上的本年累计净利润与资产负债表不一致。 |
| recon_exceptions | 高 | 任一月份中,某个对账行处于例外状态。 |
| recon_gl_mismatch | 高 | 某张明细表的“Per GL”(总账数)金额不是账簿余额。 |
| cash_flow_classification | 高;报表未列示经营活动小计时为中 | 借款被列报在经营活动现金流量中,不符合 ASC 230。 |
| trial_balance_unbalanced | 高 | 试算平衡表的借方合计不等于贷方合计,或其 TOTAL 行与各行加总不一致。 |
| trial_balance_account_unpresented | 高 | 某个会计科目在试算平衡表上有余额,却未出现在任何已导入的报表中。 |
| statement_disagrees_with_trial_balance | 高 | 在两者都覆盖的期间内,试算平衡表与报表列示的某个数字相矛盾。 |
| aging_disagrees_with_balance | 高 | 应收账款账龄表与应收账款科目核对不符。 |
| class_total_disagrees | 高 | 某月按类别拆分的金额加总不等于该月发生额。 |
| orphan_lines | 中 | 某个报表项目没有映射任何会计科目,将永远显示为零。 |
| recon_coverage | 中 | 在最近一次结账时,某项达到重要性水平的余额既没有对账明细表,也没有豁免。 |
| missed_accrual | 中 | 某项每月稳定发生的成本在某个月为空白,下个月约为平常的两倍。 |
| schedule_drift | 中;无法比较当月变动时为低 | 折旧或预付费用明细表与公司的会计政策或总账不一致。 |
| budget_line_unmatched | 中 | 某个预算行对应不到任何报表项目,因此不会出现在任何面板上。 |
| budget_line_uncomparable | 中 | 某个预算行只覆盖报告期间以外的月份。 |
| budget_months_short | 中 | 预算在正在结账的月份之前就已截止。 |
| deferred_rollforward_drift | 中 | 期初余额加本期增加、减本期确认后,与期末递延收入的差额超过重要性水平。 |
| detail_disagrees_with_statement | 中 | 供应商明细比某月报表数字高出的部分超过重要性水平。 |
| operating_count_disagrees | 中 | 已存储的客户数与其所依据的 CRM 交易记录不一致。 |
| evidence_integrity | 中 | 某份保留的源工作簿缺失、被改动或无法读取。 |
| unused_exemption | 中 | 某项豁免,或会计政策中的某条使用寿命设定,没有覆盖任何对象或无法读取。 |
| unmapped_empty_account | 低 | 某个会计科目没有对应的报表项目,且在其出现的每个期间都为零。 |
另有两项检查,solvency 和 going_concern,即使账目完全正确也会触发。它们显示在“Solvency and going concern”(偿债能力与持续经营)卡片上,参见“偿债能力迹象”。
待确认事项,而非发现事项
账目中有些形态值得一问,却不应计数。Haruno 把它们作为待确认事项报告。待确认事项没有严重程度,任何地方都不计入它,它也绝不会让某个月不再是“clean”。
| 待确认事项 | 询问的内容 | 判定依据 |
|---|---|---|
| prepaid_candidate | 某个月份在某个成本类科目的期间合计中占了不成比例的份额(至少 40%,且至少是平均份额的两倍),或者某张发票是该供应商通常开票金额的数倍。付款时直接计入费用的预付款就是这种形态;支出本就不均衡的科目在支出集中的月份,也是这种形态。 | 发票。如果它购买的服务期延续到该月之后,就应计入预付费用;如果不是,那只是支出较大的一个月。 |
| treatment_candidate:按服务期分摊 | 一条记入费用类科目的供应商记录,看起来购买的不止当月的服务。要么这一行本身就超过整个科目通常月度费用的三倍;要么备注中写明了期限(日期区间、月数,或诸如 annual(年度)之类的词),且该供应商当月金额比其通常月份至少高出发票金额的一半。如果预付费用明细表或固定资产登记簿已经记载了这笔款项,就不会询问。 | 它是否购买了一段服务期。这要看发票,而不是备注。 |
| treatment_candidate:资本化 | 一条金额达到或超过公司自身资本化门槛、记入费用、且在固定资产登记簿中没有对应行的供应商记录。 | 它是否属于资产。如果公司的会计政策中没有设定资本化门槛,就永远不会询问这一项。 |
为什么是待确认事项而不是发现事项
会计处理是公司会计人员对所购内容作出的判断。金额是事实;购买的是什么,则只能根据某人录入的备注去推测。在一份真实的导出文件上,这种预付形态大约只有一半的情况是对的。如果作为发现事项,它每两个月就会误报一次;而读者只要核查过一条却一无所获,此后就不会再核查其中任何一条。
两类待确认事项都只针对成本。如果一次结账只包含一个月的利润表,就不会询问某月所占的份额,因为只有一个月时,每个科目都占其自身合计的 100%;但针对单张发票的询问仍然可以提出。已列入明细表或登记簿的发票,或每月都会以这一金额收到的账单,都不在询问之列。
Haruno 从不替您回答待确认事项。如果某个科目的支出本来就不均衡,告诉 Haruno,它会记录下来,此后不再就该科目询问。您的回答只会让询问停止,不会抹去这一情况:结账仍会把该形态列为已回答,因为公司的支出方式可能会变化。
对账状态
公司页面上的“Reconciliation status”(对账状态)卡片核查每项余额是否与其明细表一致。公司对账底稿中结账月份已对账的每个资产负债表科目,在卡片上各占一行。
| 状态 | 颜色 | 含义 |
|---|---|---|
| reconciled | 绿色 | 已核对一致:明细表与总账的差额在 1 美分以内。 |
| exception | 红色 | 例外:明细表的期末余额与总账相差超过 1 美分。 |
| open | 琥珀色 | 待定:无法计算差额。不计为例外。 |
差额是明细表自身的期末余额减去总账余额。明细表会被重新计算,因此在工作簿中手工录入的差额无法让它核对一致。
重要性水平不会放宽状态判定:$200 的差额就是例外。在这张卡片上,重要性水平(公司的对账阈值,在接入公司时先起草一个注明为默认值的数额,由您确认或更正;参见“哪些事项绝不替您决定”)只决定哪些没有明细表的余额会被标记。
- 处于例外状态的行会成为一条 recon_exceptions 发现事项,严重程度为高。
- “Per GL”金额不是账簿余额的明细表会成为 recon_gl_mismatch,严重程度为高,即使它与自身的“Per GL”金额核对一致也是如此。
- 既没有明细表、也没有豁免的达到重要性水平的余额不会成为一行,而是显示为 recon_coverage,严重程度为中。
偿债能力迹象
“Solvency and going concern”卡片位于每家公司页面的最前面,核查公司能否偿付其所欠款项。它只读取公司自己的报表:营运资金和流动比率、现金、资产总额和所有者权益、递延收入、经营活动现金流量(已导入现金流量表时),以及现金跑道(按现有现金可维持的月数)。
四项迹象
| 迹象 | 严重程度 |
|---|---|
| 流动比率低于 1 | 低于 0.5 时为高,否则为中。 |
| 所有者权益为负 | 权益为负的金额不足资产总额的十分之一时为中,否则为高。 |
| 递延收入超过资产总额 | 始终为高。 |
| 按经营活动测算的现金跑道不足 12 个月 | 不足 3 个月时为高,否则为中。 |
每项被触发的迹象都是一条 solvency 发现事项。每条都带有一个“Draft the disclosure”(起草披露段落)按钮;在 macOS 应用中打开仪表板时,点击它会在 Haruno 的聊天中填入一条请求。现金跑道迹象需要已导入的现金流量表,并且借款已按 ASC 230 的要求从经营活动中移出。指标卡上的现金跑道基于最近期间的现金变动(包含融资)计算,从不触发迹象;卡片的“Basis”(依据)列会说明其自身的现金跑道采用哪种口径。该卡片不读取债务契约、债务到期情况或资产负债表日后事项;这些需要报表以外的信息。
多项迹象同时出现时
两项或以上迹象同时出现、且其中至少一项为高时,即构成一组集中出现的持续经营迹象,作为严重程度为高的 going_concern 发现事项报告。此时卡片开头会显示一段琥珀色的 ASC 205-40 说明,投资组合的“Going-concern indicators”(持续经营迹象)指标卡也会把该公司计入。
偿债能力迹象会在结账完全无误的账目上触发,因此它们是需要说明的事,而不是需要修正的事。它们从不会让一家公司失去“clean”状态,也从不把某个月标记为“reported with exception”(附例外事项报出)。它们转而随报表一同呈现:投资者报告保留偿债能力面板,因为缺少它的报告会既准确、又具有误导性。
解决发现事项
大多数发现事项的解决方式有两种:一是由您作出决定,记录在该公司的映射配置(spec)中(该文件保存其会计科目与报表项目之间的映射关系,以及您已确认的决定);二是由公司提供更正后的文件。仪表板提出建议,由您决定。Haruno 从不悄悄映射任何会计科目,也从不为了消除发现事项而修改公司的工作簿。
“Propose a fix”会在 Haruno 的聊天中填入一条请求,内容是能够解决该发现事项的映射配置更改,以及这项更改对报表的前后影响。在您按下发送之前,不会发送任何内容(参见“从仪表板向 Haruno 提问”)。您发送请求后,请求及其中的数字会与您输入的其他任何内容一样,经 Inferara 的托管服务发送给作答的模型提供方(参见数据处理与安全)。
| 发现事项 | 解决方式 |
|---|---|
| unmapped_active_account, unmapped_empty_account | 把该会计科目映射到一个报表项目。Haruno 会根据科目的名称、编号和相邻科目提出建议的报表项目,由您确认。先处理余额为零的那个科目:现在处理它还没有任何代价。 |
| presentation_tieout | 通常是同一条科目映射。当 CHECK 行的差额恰好等于某个未映射科目的余额时,一条科目映射就能同时解决这两个发现事项。 |
| orphan_lines | 把某个会计科目映射到该报表项目,或记录一项豁免,说明该项目预期为空。 |
| recon_coverage | 把相应明细表加入对账底稿,或记录一项豁免,说明这项余额在哪里对账。 |
| recon_exceptions, recon_gl_mismatch | 映射配置中的任何内容都无法消除它们。公司自己的两份文件相互矛盾,因此必须在源头更正。 |
| missed_accrual, schedule_drift | 在公司自己的账簿中做一笔会计分录或重新编制明细表,并以更正后的导出文件或对账底稿的形式提交。如果更正后的导出文件重述了已锁定月份,需要您说明原因并重新开启这些月份。 |
| 试算平衡表、账龄、类别、供应商明细、CRM 和递延收入相关检查项 | 找出是哪个来源有误;发现事项会列出常见原因。当来自同一总账的两份报表不一致时,请按同一时点重新导出两者,而不是从中任选其一。 |
| 预算相关检查项 | 把该预算行的名称改为与报表项目一致,或删除该行,让它的缺失成为一项明确的决定。对截止过早的预算进行延展。 |
| evidence_integrity | 如果您仍保有缺失的文件,重新导入即可。被改动的副本无法通过重新导入修复:请用已知完好的原件替换它。报表不受影响。 |
| unused_exemption | 更正该条目,使其覆盖您原本想覆盖的对象。它是一个记错了位置的回答。 |
| solvency, going_concern | 账目中没有需要修正的内容。需要作出说明,而“Draft the disclosure”可以帮您写出这份说明。 |
如果该公司以前已经结过账,完成科目映射之后的重新结账会被拒绝,因为这条科目映射会改变已锁定月份中的数字。拒绝信息会指出哪些数字将发生变化。用一句话告诉 Haruno 您的原因;它会只重新开启这些月份,在每个月份下保留您的原因,然后再次结账。参见“锁定”。
豁免
豁免是对某项检查认可的例外处理,记录在公司的映射配置中。每项豁免恰好回答一件事:这项余额在哪里对账(recon_coverage);这个报表项目为什么为空(orphan_lines);或者这个科目的支出是否本来就不均衡(预付费用和会计处理两类待确认事项)。科目豁免指定一个精确的科目名称、一个科目编号或一个编号前缀(10 覆盖所有编号为 10xx 的科目,例如现金类科目);空项目豁免则指定该报表项目。没有覆盖任何对象的豁免,会在下一次结账时报告为 unused_exemption。
完整示例:一项发现事项仍然保留

在上面的合成示例中,Cobalt Systems 有三个严重程度为高的发现事项:1450 Deposits Receivable 有一项没有任何报表项目承接的余额,因此 CHECK 行在全部 41 个月中都相差 $6,600;此外,其预付供应商款项明细表列有一笔总账中没有的 $200。
一句话“1450 Deposits Receivable 应归入 Other assets”,就完成了该科目的映射。重新结账被拒绝,因为这条科目映射会改变全部 41 个已锁定月份中的数字;再用第二句话说明原因——“1450 此前未映射;已批准归入 Other assets”——就会重新开启这些月份。CHECK 行归零,前两个发现事项得以解决,“Findings”计数从 3 降到 1。
对账例外仍然保留:公司自己的两份文件之间真实存在的不一致,任何科目映射或豁免都无法消除。因此这些月份以“reported with exception”状态锁定,recon_exceptions 仍未解决。发现事项列的意义不在于归零,而在于剩下的每一项都值得打一通电话,并且账簿在事后也会记下这一点。
自行运行
在工作区文件夹中运行。回答通过 ingest.py answer 记录,而不是手工编辑映射配置。更多内容参见“自行运行”。
# 将会计科目映射到报表项目
python3 .haruno/skills/QuickBooksCFO/scripts/ingest.py answer --spec .haruno/skills/QuickBooksCFO/specs/cobalt-systems.yaml --map "1450=Other assets"
# 重新结账,并说明重新开启已锁定月份的原因
python3 .haruno/skills/QuickBooksCFO/scripts/close.py --workspace . --client cobalt-systems --reopen-reason "1450 was unmapped; approved as Other assets"发现事项显示在哪里
每个呈现位置判断哪些事项未解决时都采用同一条规则,因此不会有两个位置对同一个月给出两种答案。
| 位置 | 您会看到什么 |
|---|---|
| 结账报告(在聊天中逐一告诉您;您自行运行时则在终端中输出) | 所有发现事项,然后是哪些月份已锁定,以及它们是“reported with exception”还是“fully reconciled”。 |
| 已锁定月份列表(您自行运行命令时,由 ingest.py periods 列出) | 每个月份那一行上显示同样的结账状态。 |
| 报表包 | 报表上方的“Issued with unresolved findings”(附未解决发现事项报出)说明。 |
| 对账底稿 | 每张明细表都经过重新计算,并标明其中的例外。 |
| 仪表板的投资组合视图 | “Findings”列(显示数量或“clean”)、“Clients with findings”指标卡,以及每家公司的结账状态标签。 |
| 仪表板中的公司页面 | “Integrity findings”卡片(包括低严重程度发现事项),以及“Solvency and going concern”卡片。 |
| 投资者报告 | 不含完整性检查发现事项、科目映射表、对账状态、差异关注清单或 CHECK 行。偿债能力面板及其迹象保留,但不带“Draft the disclosure”按钮。 |
投资者报告保留哪些内容、省略哪些内容,参见“投资者报告”。
结账如何记录每个已锁定月份,以及为什么未解决事项列表只是一份快照,参见“结账状态”。
相比之下,“Integrity findings”卡片显示的是账目的当前状况。