评委转向需求席。
“你是需求负责人。”
“你要补技术?”
林辰没有急着说:
我会。
只道:
“补我负责过的接口逻辑。”
“不是替技术负责人认代码。”
这句话先把边界放清。
顾承安抬头。
笔没有停。
——
林辰起身走到共享白板前。
没有拿技术席电脑。
也没有碰苏晚晴的代码。
只打开项目里已经共享的接口说明。
其中一页。
署名很清楚。
【需求/数据状态规则:苏晚晴】
这是公开身份归属。
实际写下这套逻辑的人。
正是林辰。
——
他拿笔。
先画一条最简单的数据流。
【来源数据】
↓
【字段校验】
↓
【当前有效值】
↓
【展示状态】
“刚才的问题。”
“不是先问怎么更新数据库。”
林辰道。
“而是先定义。”
“什么叫一个值有资格替换另一个值。”
——
评委看着。
“继续。”
“目前我们把字段状态至少分成三类。”
林辰在旁边写:
【已确认】
【未说明】
【异常待核】
“已确认。”
“表示来源明确给出了一个合法值。”
“未说明。”
“表示来源没有提供。”
“异常待核。”
“表示来源提供了东西。”
“但不符合当前字段规范。”
——
“所以。”
“如果昨天是已确认。”
“今天新一轮读取变成未说明。”
“不能直接把昨天覆盖掉。”
评委问:
“为什么?”
“因为今天没读到。”
“只证明今天这次来源里没有。”
“不能自动证明昨天的值已经失效。”
“那不更新?”
“也不能永远保留。”
林辰说。
“所以需要进入待确认。”
——
他在白板上画:
【旧:已确认】
+
【新:未说明】
↓
【保留旧值】
【标记需复核】
而不是:
【直接清空】
——
评委问:
“你这不是回滚。”
“是保留旧数据。”
“对。”
林辰点头。
“更准确说。”
“异常更新不能直接破坏最后一份已确认状态。”
“如果当前更新流程后续失败。”
“展示层应该回到最近一次可确认状态。”
“同时标记它可能过期。”
“而不是把错误过程中的半成品暴露给用户。”
——
“谁决定旧值什么时候过期?”
“不能由技术层随便设。”
“要看字段。”
林辰道。
“活动时间这种。”
“过期条件很明确。”
“费用、设备要求。”
“可能需要主办方更新。”
“如果项目后续真的做自动同步。”
“不同字段的刷新和失效规则。”
“得和数据来源一起定义。”
——
评委问:
“那你现在原型有这些吗?”
“没有完整实现。”
林辰道。
“我现在解释的是接口和状态逻辑。”
“不是说当前十二条模拟数据已经有版本系统。”
“哪部分是你写的?”
“状态定义。”
“未知不覆盖确定值。”
“异常进入待核。”
“以及失败时不能把中间错误状态直接展示。”
“哪部分不是你写的?”
“当前代码实现。”
“字段校验函数。”
“具体异常列表处理。”
“这些是技术线完成。”
——
答辩室里安静了一点。
这就不是需求负责人突然抢着炫技术。
而是:
项目边界本来就有一块接口。
刚好由他负责。
他现在把自己写过的东西。
讲清楚。
——
顾承安问:
“为什么需求负责人会写数据状态规则?”
林辰看过去。
“因为这些状态本质上不只是数据类型。”
“它们会改变用户看到的意思。”
“0。”
“未知。”
“暂时失效。”
“这三个如果技术上都处理成假值。”
“界面可能看起来很干净。”
“但用户得到的含义会错。”
——
顾承安没说对。
只是记了一句。
——
苏晚晴坐技术席。
从林辰按下麦克风开始。
一次都没抢。
等他把接口逻辑讲完。
她才重新打开麦克风。
“我补实现部分。”
这次。
角色重新回到技术负责人。
——
她切到当前原型流程。
“现阶段没有自动同步。”
“所以刚才需求负责人讲的版本更新。”
“只存在接口设计。”
“当前真正实现的是单次输入校验。”
“合法值正常进入展示。”
“空值进入未说明。”
“非规范值进入异常列表。”
“不会因为单条异常。”
“让整批数据终止。”
——
评委问:
“那你刚才说的回退呢?”
“当前版本只做到。”
“这一批运行失败时。”
“不写入新的最终展示结果。”
“继续保留上一轮成功生成的本地展示文件。”
“这不是完整事务系统。”
“只是当前原型避免半成品覆盖的做法。”
——
林辰侧头。
这句比自己刚才说得更准确。
他没有补。
苏晚晴继续:
“如果后续进入真实数据更新。”
“才需要正式定义版本号。”
“更新状态。”
“失败重试。”
“以及不同来源优先级。”
“现在没有。”
“所以答辩里不把它说成已经实现。”
——
第一名评委翻了下记录。
“那你们现在实际流程。”
“可以简单说成什么?”
苏晚晴看了一眼白板。
没有背林辰刚才的句子。
自己整理。
“需求侧先定义。”
“一个字段不同状态分别是什么意思。”
“技术侧负责让程序不要把这些状态混掉。”
“当前原型先保证。”
“错误输入不会变成错误确定答案。”
“以后如果做同步。”
“再增加正式更新和回退机制。”
——
评委点了点笔。
“这就清楚多了。”
——
下一问。
又刺向扩展性。
“你们这样每个字段都定义状态。”
“以后字段一多。”
“是不是会很重?”
苏晚晴道:
“会增加规则成本。”
“所以不是字段越多越好。”
林辰在需求席接:
“需求侧也不会因为受访者提过一次。”
“就全部做成结构化字段。”
“只有真正需要用户比较、筛选或确认的。”
“才值得固定。”
——
评委看两边。
“你们两个现在是在互相补答案吗?”
林辰道:
“不是同一个答案。”
“我回答字段为什么存在。”
苏晚晴接:
“我回答字段存在以后。”
“技术怎么保留它的含义。”
——
这个分法。
很清楚。
也正是两个人现阶段最真实的优势。
长期互换让他们都能看见另一边的问题。
可真正回答时。
不是一个人把所有内容吞掉。
而是知道什么时候该停。
让另一个人把自己的部分接回去。
——
顾承安一直没打断。
他只把记录里的两行并排:
【需求:状态语义/用户含义】
【技术:状态实现/异常隔离】
然后在旁边画了一条线。
——
技术评委又问:
“如果用户自己发现信息错了。”
“怎么报错?”
苏晚晴道:
“当前原型没有用户账号。”
“可以先提供公开纠错入口。”
“谁处理?”
“需要指定人工负责人。”
“为什么不直接开放用户修改?”
“权限和责任没定义。”
——
评委追:
“那人工负责人能看见什么?”
答辩室里。
问题从技术。
突然转到另一层。
“比如学生提交纠错。”
“是不是要留学号?”
“要不要记录是谁举报的?”
“主办方能不能看到?”
“日志保留多久?”
林辰和苏晚晴同时安静。
这一轮真正敏感的部分。
来了。
评委把笔放下。
“我们聊聊隐私。”