字段规则牌
必填、可空和条件必填怎样表达
条件必填明确触发条件而非模糊备注。 本文给出可复核步骤、状态边界、脱敏记录方法与复核路径。
必填、可空和条件必填不是三个界面图标,而是决定资料何时可用的规则。必填意味着每个适用记录都必须出现;可空意味着当前允许无值,但要说明原因;条件必填必须写出触发表达式、依赖字段和失败提示。把条件藏在备注里,会让导入、校验和展示各自猜一套逻辑。规则编译前需做真值表,覆盖触发字段为真、假、空和无法解析。每一格写预期状态及提示,防止程序把UNKNOWN当false。跨字段依赖图还要检测循环与未发布规则引用。
没有具体赛事规则证据时,字段约束版本为UNKNOWN。本文的中立场、结束时间和加时字段仅用于演练。规则表保存field_path、requirement_type、required_when、null_reason_set、rule_source、valid_scope和version。默认值不用于满足必填,因为那会把技术占位伪装成来源事实。条件规则还需说明求值时点。status从计划变成结束后,actual_end的要求才被激活;如果同一批导入先校验时间再导入状态,可能产生短暂假通过。管道应在完整记录快照上求值,并保存snapshot_id。嵌套条件使用明确括号,不靠自然语言优先级,例如“中立为真且场地已公布时地区必填”与“中立为真或场地已公布时地区必填”结果不同。编辑界面将机器表达式翻译成可读句,但原表达式可展开。规则依赖关联赛制卡时锁定rule_ref;赛制卡更新后先生成影响预览。合法空值也可能过期,例如“尚未公布”在比赛结束后需要复核,null_reason因此可带review_after。到期只是待核,不自动转失败。批量导出若把null与缺键都变空白,要附state表或拒绝导出,确保接收方知道字段从未出现还是有证据地无值。条件测试还需覆盖字段被撤回、来源过期和实体待映射。撤回值不能被旧条件再次要求补齐;先处理生命周期,再求业务约束。编辑预览展示触发链,用户可以从失败字段追到每个依赖值与规则版本。
给三种要求写机器可读定义
required字段在适用范围内无值即失败;nullable字段允许null但必须携带允许原因;conditional字段只有表达式为真时才要求值。表达式引用稳定字段路径和受控枚举,不引用页面文字。每条规则附人类说明和示例。
赛事类型不同,要求可能不同,因此valid_scope包含字段族、赛季和阶段。scope未知时不强行应用规则,校验状态为UNKNOWN。规则定义发生变化要创建新版本,旧记录仍能按当时规则解释。
- 三种要求使用明确类型
- 条件表达式引用稳定路径
- 范围未知不强行应用
让空值携带原因而非一个空格
空值原因可区分尚未公布、来源未提供、不适用、被撤回、校验失败和待映射。原因本身需有定义和允许字段。场地未公布与赛事无场地不是同一事实,导出时必须保留null_reason。
来源空字符串先规范为缺失,再由证据判断原因;系统不能自动标“未公布”。无法判断时原因UNKNOWN。页面将业务值和原因分栏,统计只计算有值项,同时披露各类缺失数量。
- 空值原因使用受控枚举
- 空字符串不自动解释
- 导出保留null_reason
表达条件触发与解除
例如status为结束时actual_end可能条件必填;neutral_venue为真时venue_region必填;extra_time_used为真时相关时长字段必填。触发值自己若UNKNOWN,条件结果也为UNKNOWN,不直接报缺失。
条件解除同样记录:状态从结束修订为中止后,结束时间不再强制,但旧值不能自动删除。系统标记为可能不适用,交给修订流程。表达式求值保存输入和规则版本,便于复核为何某时刻触发。
- 触发字段未知则条件UNKNOWN
- 解除条件不自动删旧值
- 求值保存输入快照
避免循环依赖和隐藏条件
A要求B、B又要求A会导致无法解释的循环。规则发布前构建依赖图,检测环路、缺失路径和永远无法触发的分支。编辑说明中的“必要时填写”必须转换为明确条件,否则规则保持草稿。
跨记录条件例如次回合要求首回合标识,需要声明查询范围和缺失策略。找不到关联记录时返回待核,不生成首回合。依赖其他规则版本时锁定版本,不能随最新规则漂移。
- 发布前检测依赖环路
- 模糊备注不得进入正式规则
- 跨记录缺失不生成虚构值
设计对照样例验证每个分支
每条条件至少有触发真、触发假、触发未知和依赖缺失四个样例。中立场演练分别测试真且有地区、真且缺地区、假且无地区、状态未知。预期错误码写在样例旁,不只看界面颜色。
样例使用虚构标识,执行结果保存规则版本和时间。条件修改后旧样例全量重跑,差异报告说明新增或消失的失败。测试通过只证明表达式执行一致,不证明规则来源正确。每个分支都要有至少一个UNKNOWN依赖案例。
- 每条条件覆盖四类分支
- 样例预期包含错误码
- 规则变化重跑旧样例
将校验结果传递到导出和页面
业务值、要求类型、条件结果、空值原因和校验状态要一起进入API或导出。下游只接收一个值列时,宁可阻止发布,也不以零、当前日期或主队地区补齐。展示层用文字解释触发条件。
字段后来补齐,通过修订事件改变值和状态,旧失败继续可查。批量统计注明排除多少UNKNOWN或条件未满足项。这样读者理解数字覆盖范围,编辑也能定位具体缺证,而不是被默认值掩盖。对每条条件保存求值轨迹,依次列依赖字段状态、运算结果和最终要求。规则翻译文案变化不改变机器表达式;机器表达式变化必须升版并重跑历史快照。导出抽查要能从空白单元格反查具体null_reason,无法反查即判失败。
- 导出携带要求与校验状态
- 下游不兼容时阻止伪填
- 补值通过修订事件完成
公开规则来源和适用范围
页面列字段、要求类型、条件表达的自然语言、空值原因、适用赛事和赛季、来源状态与最后复核时间。来源未核就显示UNKNOWN,不把演练规则写成当前事实。
本页为独立字段方法,不承诺实时完整。规则更新采用版本和影响报告,历史记录不被静默补值。读者可追到为何必填、为何允许空、何时触发,而不是接受一个没有证据的红色标记。验收时应建立真值表,而不是只写几个顺利案例。对每条条件分别覆盖触发值为真、为假、UNKNOWN,以及依赖字段被撤回的状态;预期结果区分必填、可空、暂缓判断和结构失败。若条件包含多个依赖,再做成对组合,确认短路逻辑不会吞掉未知项。空值原因也要受词表约束:“尚未公布”要求存在可等待的发布事件,“不适用”要求规则明确排除,“无法读取”只能描述采集状态,不能冒充业务不存在。复核界面允许编辑选择原因,但每项旁边显示所需证据和复查日期。导入器遇到空字符串、连字符、零或文字“无”时先保存原输入,只有来源明确表达不存在才转为合法空值。统计层分别计算缺键、UNKNOWN、条件免除和已确认空值,不能合并成一项缺失率。规则改版后,对历史快照进行影子求值并输出新增必填、取消必填和仍不确定三张清单;批准前不改变公开状态。
- 页面解释条件的自然语言
- 来源未核明确UNKNOWN
- 版本更新附影响报告


