行为
Sprint 4 规划会议 Agenda:业务标签生成与绝对边界防线落地¶
会议目标:拒绝“随手写个循环算收益”的草台班子做法,将 S4 转化为“严格遵循闭式向量化公式、绝对物理隔离特征、死锁索引边界”的数学管线;敲定 DCA 标签与 S5 特征空间的解耦契约,输出首版 S4 架构决策记录(ADR)。
参会角色:项目经理(PM)、算法/研发工程师、基础架构/运维工程师、数据资产管理员(特邀)。
会议时长:60 分钟
强制准入条件:全员已精读《最终设计规约 v3.2.4》第 3 章节(标签系统数学定义)及第 2.3 章节(短缺失占位行收益置 NULL 的业务防御)。
议程一:架构对齐与企业级业务价值定义(15 mins)¶
主导人:PM、算法工程师
讨论焦点:
- S4 价值重塑与“反直觉”防御:明确本 Sprint 的核心不是“算标签”,而是“防越界”。规约 D-2 死锁了 150 周与 20% 止盈线,但真正的工程灾难潜伏在 0-based 与 1-based 索引错位(会吃掉第 150 周合法样本)以及 Segment 物理断裂处。S4 的业务价值在于为下游 LambdaRank 提供绝对纯净、无时序穿越的标签锚点。
-
NFRs(非功能性需求)确认:
- 算力底线:确认在处理 S2 产出的 270 万行纯净净值数据时,S4 严禁加载特征宽表(防 OOM 铁律),内存波峰需限制在极低水位。
-
可审计性:确认对于
label=0(未达标)与label=150(边界达标)的特殊样本,日志需具备可追溯性,不打印明细,但需输出截面级统计摘要。
议程二:跨团队依赖与前置契约敲定(15 mins)¶
主导人:PM、研发工程师
讨论焦点:
-
数据血缘契约:
-
[需确认] S4 的唯一合法输入源为
data/processed/s2_{year}.parquet。明确scan_parquet后必须立即.select(["fund_id", "net_value_date", "segment_id", "cumulative_net_value"])。[红线重申] 严禁拉入weekly_return列,严禁关联任何 S3 特征文件,违者一票否决。
-
[需确认] S4 的唯一合法输入源为
-
物理存储契约:
-
[需确认] S4 产出必须严格落盘为 4 列(
fund_id,net_value_date,segment_id,label),强依赖PhysicalStorageContract.sink_parquet_strict()与validate_schema_symmetry()。
-
[需确认] S4 产出必须严格落盘为 4 列(
-
数学常量契约:
-
[需确认] 确认
STOP_LOSS_THRESHOLD = 0.20与MAX_LABEL_WEEKS = 150已硬编码于core/constants.py,严禁从config.yaml读取。
-
[需确认] 确认
议程三:核心 Story 拆解与 ADR(架构决策记录)输出(20 mins)¶
主导人:研发工程师
讨论焦点(不深挖代码实现,仅定技术路线与防御边界):
-
DCA 闭式向量化公式落地(S4-02):
-
[需决策] 确认“倒数累加范式”(
inv_nv -> cum_inv -> weeks -> returns)为唯一合法路径。明确在此闭包内,Pythonfor循环属于“死刑级”禁止项。对于输入数组的纯净性断言(np.isfinite且> 0),如果触发,是直接抛出阻断异常,还是记录 Warning 并输出全 0?
-
[需决策] 确认“倒数累加范式”(
-
Segment 物理断裂与防穿越防线(S4-01):
-
[需决策] S4 必须按
segment_id拆分计算。明确在group_by().map_groups()闭包内,NumPy 数组的索引强制从 0 起始。严禁跨 Segment 拼接净值序列。
-
[需决策] S4 必须按
-
0-based 转 1-based 索引偏移拦截(S4-03):
-
[需决策] 针对规约 7.1 节的骨架代码,确认
hit_indices[0] + 1的偏移逻辑。讨论是否需要针对“刚好 150 周达标但序列长度仅 150”的极端边界做单元测试强卡点(防IndexError)。
-
[需决策] 针对规约 7.1 节的骨架代码,确认
-
按年流式落盘闭环(S4-04):
- [可复用逻辑指出] 确认复用 S2/S3 的统筹器按年循环拓扑,落盘后必须立即触发 Schema 对称差校验(4列契约)。
议程四:M4 验收标准终审与技术债预防(10 mins)¶
主导人:PM
讨论焦点:
-
Done 标准无歧义对齐:逐条过审 M4 的硬卡点(纯向量化覆盖率 100%、边界
assert覆盖率 100%、4 列 Schema 门禁生效)。 -
技术债预防登记:
- 识别本 Sprint 可能引入的“临时妥协”(例如:若个别 Segment 净值序列首行存在非正数导致断言抛出,是否需要降级为返回 0 并记录日志?),必须在 Redmine 提前建单登记清理 Deadline,严禁带入 Sprint 5(S5 标准化阶段)。
会议产出物要求:
会后需由研发工程师在 Gitea /docs 目录下提交首份 adr/004-s4-label-generation-and-math-boundary.md,记录本次会议敲定的 DCA 闭式公式实施路径、Segment 隔离策略及索引错位防御机制。
由 Huarui Lin 更新于 5 个月 之前 · 1 修订