项目

一般

简介

0001-Sprint1回顾会议纪要:工程脚手架与架构护栏落地复盘 » 历史记录 » 版本 1

Huarui Lin, 2026-04-15 15:25

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