行为
Sprint 1 回顾会议纪要:工程脚手架与架构护栏落地复盘 ¶
会议日期:2026-04-15
项目名称:基金量化定投选基系统 (2026-04-11-01)
会议目标:对照 M1 Done 标准,客观评估 S1 基建切片交付质量;闭环规划会遗留的跨团队依赖契约;沉淀企业级工程标准,识别技术债与性能风险,为 Sprint 2 数据管线扫清障碍。
参会角色:项目经理(Henry Lin)、算法/研发工程师、基础架构/运维工程师。
一、 会议确认项¶
-
CONF-01 M1 基础硬指标闭环:确认 CI 空跑流水线在 Gitea 触发成功,0 Error;依托 Pydantic 强校验,
config.yaml参数与规约第七节实现代码级 100% 一致,零偏移。 -
CONF-02 架构防腐层设计决策闭环:针对规划会 CONF-05 演进约束的复核,正式确认
config.py维持当前高内聚嵌套结构。拒绝为迎合 MLflow 原生入参而破坏全局配置的可读性,明确将“嵌套转扁平”的逻辑作为 S5 阶段 MLflow 组件自身的防腐层职责。 -
CONF-03 基础设施契约闭环:确认实体机 Gitea Action Runner 的 Docker cgroup
memory=50g限制已由运维侧配置生效,凭证配置文件已归档至 Redmine,底层资源依赖盲区清零。 -
CONF-04 数据资产契约闭环:确认《四核心字段稳定性承诺函》已由数据资产管理员正式签署并提供,已归档至 Redmine。S2 阶段在
data_loader中对fund_basic_info新增 4 列进行硬编码SELECT投影丢弃的策略,已获合法性与稳定性背书。 -
CONF-05 S2 环境准入就绪:确认研发本地开发环境已完成 DuckDB 的安装,并通过
import duckdb连通性验证,S2-01 数据加载模块无物理环境阻塞。 -
CONF-06 架构合规基线归档:确认规划会要求的产出物
docs/adr/001-scaffolding-guardrails-decisions.md已按规范提交至 Gitea 仓库,架构决策可追溯性合规。
二、 会议待办项¶
| 编号 | 责任人 | 任务描述 | 截止时间 | 验收标准 |
|---|---|---|---|---|
| TODO-01 | 研发工程师 | CI 性能熔断预案触发监控 | Sprint 2 持续 | 当 S2 引入 DuckDB 真实 I/O 后,若单次完整 CI 执行总耗时超过 180 秒,立即触发预案,执行 Runner capacity 调优或拆分。 |
| TODO-02 | 研发工程师 | S1 占位 Mock 测试代码物理销毁 | S2-01 交付同步 | 允许 S1-04 遗留的占位测试代码暂留 main 分支,但必须在 S2-01(数据加载模块)单测交付的同一个 PR 中,作为前置条件同步物理删除,严禁流入 S2 后续阶段。 |
三、 会议风险项¶
| 编号 | 风险描述 | 应对策略/熔断机制 | 跟踪机制 |
|---|---|---|---|
| RISK-01 | 单 Gitea Act Runner 串行策略在 S2 引入 I/O 负载(DuckDB)后,存在 CI 反馈时间显著膨胀导致阻塞研发节奏的风险。 | 暂不进行预防性扩容(选择容忍),设定明确的量化熔断阈值(180秒),超时再启动基建调整。 | 作为 TODO-01 录入项目管理工具,S2 首次包含 I/O 单测的 PR 合并时重点观测。 |
四、 Sprint 1 规划会决策复核闭环¶
基于本次回顾会议,对《Sprint 1 规划会议纪要》中的核心架构决策进行实战复盘与状态锁定:
-
[已落地] AST 级
src/扫描防御 Pandas 策略:双防线(Pre-commit + CI)已验证有效,且已实现黑名单参数化。 - [已决策防腐] 配置中心 MLflow 复用策略:已确立防腐层边界(对应本次 CONF-02),避免过度设计。
- [已闭环] 跨团队依赖凭证:规划会 TODO-01(cgroup 限制)与 TODO-02(承诺函)均已在 Redmine 获得实物归档闭环。
五、 Sprint 1 交付物全景验收清单¶
以下为对照《规划会议纪要》全景清单的最终物理交付状态核销:
| 分类 | 文件路径 | 规划核心约束 | S1 验收状态 |
|---|---|---|---|
| 工程配置 | pyproject.toml |
声明核心依赖,禁显式 pandas,PyPI 源指向清华源。 | ✅ 已交付 |
| 工程配置 | .pre-commit-config.yaml |
引入 ruff 与本地 AST 拦截钩子。 | ✅ 已交付 |
| 工程配置 | .gitea/workflows/ci.yml |
PR 触发,包含 AST Lint、双源切换、并行拓扑。 | ✅ 已交付 |
| 业务参数 | config/config.yaml |
与规约 7.2 节 100% 吻合,零魔法数字。 | ✅ 已交付 |
| 规约拦截 | scripts/check_forbidden_imports.py |
扫描 src/,拦截违禁依赖,参数化黑名单。 |
✅ 已交付 |
| 核心源码 | src/utils/config.py |
Pydantic 强类型单例,支持环境变量覆盖,维持嵌套结构。 | ✅ 已交付 |
| 核心源码 | src/utils/logging.py |
JSON Handler,强制注入 step, module 等标准字段。 |
✅ 已交付 |
| 核心源码 | src/utils/hash.py |
流式读取计算 SHA-256,大文件 Chunk 自动提升。 | ✅ 已交付 |
| 质量保障 | tests/* |
覆盖核心工具类逻辑及 CI 空跑占位测试(已登记清理债)。 | ✅ 已交付 |
| 技术真相 | docs/adr/001-scaffolding-guardrails-decisions.md |
记录核心工程选型与决策理由。 | ✅ 已归档 |
会议闭环状态:✅ 全部议程结束,S1 规划会遗留依赖已 100% 兑现,M1 标准达成。研发团队可依据本纪要及 TODO 项正式切入 Sprint 2(数据加载与清洗)实施。
由 Huarui Lin 更新于 2 天 之前 · 2 修订