行为
Sprint2规划会议¶
Sprint 2 规划会议 Agenda
会议主题:Sprint 2 数据基建与入库攻坚(M2 里程碑交付规划)
会议目标:冻结 M2 模块间接口契约;正式化全量 Arrow 特例的架构决策;将规约条款拆解为 Redmine 可执行的强卡控验收标准。
会议时长:2.5 小时
参会角色:项目经理(Henry Lin)、算法/研发工程师、数据资产管理员(可选出席,视数据源疑问而定)
议程一:S1 遗留闭环与 S2 护航规则宣读(15 分钟)¶
-
S1 待办核销:
- 确认 TODO-02(S1 占位 Mock 测试代码物理销毁)将作为 S2-01 首个 PR 合并的前置强制拦截条件。
- 确认 RISK-01/TODO-01(CI 性能熔断 180 秒阈值)的监控机制在 S2 引入真实 DuckDB I/O 后的响应预案。
-
S2 绝对红线重申:全局严禁 Pandas;严禁魔法数字(必须走
config.yaml新增节点);DuckDB 职责边界不可逾越。
议程二:架构决策正式化:FW-3 全量 Arrow 特例(20 分钟)¶
-
决策落锤:基于会前确认,正式批准 Step 2 的
process_timeseries()阶段作为特例,一次性加载 DuckDB 粗筛后的全量 Arrow(约 2300万行,预估内存 1.2GB)。 -
合规防腐要求:
- 研发必须在本次会议后输出
docs/adr/002-full-arrow-exception-for-s2.md。 - ADR 中必须明确记录:特例仅限于“缺失值填充与截断状态机”阶段,进入后续滚动窗口计算(Step 3)时,必须回到 FW-3 按年串行提取的标准范式。
- 同步更新
docs/architecture_baseline.md中 FW-3 章节的例外说明。
- 研发必须在本次会议后输出
议程三:数据契约对齐与 DuckDB 粗筛设计(30 分钟)¶
-
DuckDB 投影防偏移:审核 S2-01 的 SQL 逻辑,确认
fund_basic_info的 4 列冗余字段(基于 S1 CONF-04 承诺函)已在 DuckDB 层通过硬编码SELECT显式裁剪,不进入 Arrow 生态。 -
审计日志 Schema 锁定:逐字段复核《0002-数据基建》中定义的
data_audit.json标准 Schema。确认研发理解所有统计字段(如whitelist_retention_rate的分母定义)的计算来源,禁止硬编码。 -
配置扩展确认:确认
config.yaml中data.raw_paths与duckdb.memory_limit的嵌套结构设计。
议程四:Polars 时序状态机核心逻辑攻防(45 分钟)¶
-
CR-001
segment_id生成逻辑:研发需展示>4周连续缺失截断并递增segment_id的 Polars 向量化实现思路(严禁全局 Python for 循环),PM 审查其跨年连续性与边界条件。 -
建仓期硬删逻辑锚定:确认建仓期 12 周的剔除基准严格取
segment_id == 0段的首条日期向前推算,而非该基金在数据库中的绝对首条日期。 -
异常值处理矩阵:明确区分两种异常的处理物理动作:
-
cumulative_net_value ≤ 0:物理剔除行。 - 单周涨跌幅绝对值 > 50%:保留行,仅将该行
cumulative_net_value置为 NULL(保留时间轴连续性供 ffill 使用)。
-
-
单测边界用例对齐:确认
tests/test_data_loader.py必须覆盖的 5 个极端场景(跨年 ffill、第 5 周缺失截断、10 周短命基金被建仓期完全吞噬、异常值 NULL 化后恢复、多段截断后的 segment_id 独立性)。
议程五:落盘、压测与数据血缘(30 分钟)¶
-
存储契约确认:确认 PyArrow
write_parquet()显式指定row_group_size=100000;确认覆盖写模式(不追加);确认最终 Schema 严格锁定为 4 列(fund_id:String,net_value_date:Date,cumulative_net_value:Float64,segment_id:UInt32)。 -
DuckDB VIEW 重建机制:确认
create_duckdb_view()函数在每次全量刷盘时,动态扫描data/processed/目录拼接年份文件的逻辑。 -
内存压测方案:确认在 64GB 实体机上的压测观测点(DuckDB 阶段峰值、全量 Arrow 转换峰值、Polars 处理峰值),明确
peak_memory_gb必须真实写入审计日志。 -
SHA-256 校验闭环:确认按年份文件逐个计算 Hash 并落盘至
processed_hash.json的调用时机。
议程六:Redmine 任务拆解与强卡控验收标准录入(20 分钟)¶
- 将 S2-01 至 S2-05 拆解录入 Redmine。
- 将本 Agenda 议程三、四、五中确认的所有“规约硬性指标”,直接作为“自定义字段-验收标准”写入对应的 Redmine 任务卡片中(如:M2 Done 标准中的 5 条绝对卡点)。
- 明确 S2-05(Gitea
/docs同步)的交付时机,确保不触发 CI 软预警。
议程七:Q&A 与 签收确认(10 分钟)¶
- 清理会议遗留的模糊表述。
- 三方(PM、研发、数据方)签字确认 Sprint 2 目标锁定,研发正式领受任务进入开发阶段。
由 Huarui Lin 更新于 2 天 之前 · 1 修订