项目

一般

简介

行为

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.yamldata.raw_pathsduckdb.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 修订