项目

一般

简介

0001-Sprint1规划会议 » 历史记录 » 修订 2

修订 1 (Huarui Lin, 2026-04-13 11:47) → 修订 2/5 (Huarui Lin, 2026-04-13 11:52)

# Sprint 1 规划会议 Agenda:工程脚手架与架构护栏落地 Agenda 

 **会议目标**:拒绝“纯技术”Sprint,将脚手架转化为“零偏移数据管线与强制规约护栏”的垂直切片;敲定跨团队依赖契约,输出首版架构决策记录(ADR)。 --- 
 **参会角色**:项目经理(PM)、算法/研发工程师、基础架构/运维工程师、数据资产管理员(特邀)。 **会议目标**:锁定 M1 交付标准,对齐 Story 实施细节,确认基础设施前置依赖。 
 **参会角色**:项目经理(PM)、算法/研发工程师、基础架构/运维工程师。 
 **会议时长**:60 分钟 
 **强制准入条件**:全员已阅读《最终设计规约 v1.0》及《系统架构与工程规范基线》。 

 --- **强制准入条件**:所有参会人已通读《最终设计规约 v1.0》第 7 节工程质量规范。 
 ## 议程一:架构对齐与企业级业务价值定义(15 议程一:红线重申与 M1 交付基线对齐(10 mins) 
 **主讲人**:PM 

 **主导人**:PM --- 
 **讨论焦点**: **核心内容**: 
 1. **Sprint 1 价值重塑**:明确本 Sprint 并非单纯“搭框架”,而是为企业级数据管线铺设“防出轨铁轨”(AST强拦截、SHA-256血缘、T-1参数化基建)。 **唯一真相源声明**:明确所有讨论以规约为准,拒绝“我觉得这样更好”的主观发散。 
 2. **NFRs(非功能性需求)确认**: **M1 Done 标准硬卡点回顾**: 
    - **性能底线**:确认 Docker 构建与 CI 空跑的资源消耗预期。 空跑流水线在 Gitea 触发成功,0 Error。 
    - **安全与合规底线**:确认非 root 运行、敏感参数(若有)环境变量化策略。 
    - **可审计性**:确认 JSON 结构化日志的字段基线。 `config.yaml` 与规约 7.2 节参数 100% 吻合(0 偏差)。 
 3. **架构铁律宣贯**:明确 DuckDB/Polars 防火墙在后续 Step 的约束,以及本 Sprint 需为此做的基建准备。 

 --- 
 ## 议程二:跨团队依赖与前置契约敲定(15 议程二:Story 细化与防偏移机制拆解(25 mins) 

 **主导人**:PM、基础架构/运维 **主讲人**:研发工程师(主导)、PM(卡控) 
 **讨论焦点**: **逐条过审**: 
 1. **基础设施契约**: **S1-01 工程根目录与依赖隔离** 
    - **[需提供/确认]** Gitea Action Runner 在 64GB 实体机上的 Docker cgroup 内存限制凭证/配置确认(要求 `memory=50g`)。 确认 `pyproject.toml` 中核心依赖版本范围(Polars, DuckDB, LightGBM 等)。 
    - **[需提供/确认]** 实体机访问阿里云 Docker/PyPI 镜像源的连通性测试结果。 **卡控点**:如何确保 Poetry 依赖树中不会间接引入 Pandas(需在依赖声明中显式排除或通过 CI 验证)。 
 2. **数据资产契约**: **S1-02 核心业务参数中心** 
    - **[需提供/确认]** 数据资产管理员确认 `fund_basic_info` 表新增的 4 列(`insert_datetime` 等)不会被业务方频繁更名或变更类型,支持我们在 `data_loader` 中做硬编码 `SELECT` 投影丢弃。 **可复用逻辑指出**:基于 Pydantic 的配置加载器不仅服务于 Step 1,其强类型校验机制可直接复用于后续 Step 5 的 MLflow 参数持久化一致性校验。 
    - 确认环境变量覆盖的优先级逻辑(例如:`FUND_MODEL__LABEL__TARGET_RETURN=0.25` 能否正确覆盖 YAML)。 
 3. **S1-03 数据血缘与日志基建** 
    - **防偏移重点**:`hash.py` 必须强制采用流式读取(Chunked Reading)。结合章程中“原始净值表 920MB”的数据基线,若采用一次性 `read()` 将直接触发 OOM,违反资源安全底线。 
 4. **S1-04 CI 空跑红线与 AST 拦截** 
    - **优化点指出**:AST 拦截脚本(`lint_ast.py`)的“魔法数字黑名单”需设计为可配置文件(如 `.magic_numbers blacklist`),避免后续新增合规参数时频繁修改 AST 解析代码。 
    - 确认拦截范围:除了 `import pandas`,需涵盖 `from pandas import` 等变体。 
 5. **S1-05 双轨制技术真相源初始化** 
    - 确认 `docs/architecture_baseline.md` 的内容与规约的强绑定关系。 

 --- 
 ## 议程三:核心 Story 拆解与 ADR(架构决策记录)输出(20 议程三:基础设施与工具链前置确认(15 mins) 

 **主导人**:研发工程师 

 **讨论焦点**(不深挖代码实现,仅定技术路线与决策): **主讲人**:基础架构/运维工程师、PM 
 **核心内容**: 
 1. **依赖隔离策略(S1-01)**: **Gitea Action Runner 状态确认**: 
    - **[需决策]** `pyproject.toml` 依赖版本策略:允许 Patch 级浮动(`^1.0.0`)还是全量锁死?若第三方库隐式依赖 Pandas,防御边界划在哪里(仅阻断 `src/` 手写,还是阻断全局构建环境)? 64GB 实体机上的 Runner 是否已注册并处于 `Online` 状态? 
    - **关键约束确认**:Runner 调用的 Docker 执行环境,是否已严格配置 `memory=50g` 的 cgroup 限制?(对应章程风险 R-1 防御)。 
 2. **配置中心演进路线(S1-02)**: **Gitea 分支保护规则配置**: 
    - **[可复用逻辑指出]** 确认 Pydantic 强类型加载器的 Schema 设计,不仅服务本阶段,需确保其能直接被 Step 5 MLflow 参数持久化复用,避免重复造轮子。 `main` 分支已勾选“禁止直接推送”及“PR 合并前必须通过 CI 检查”。 
 3. **规约拦截器工程化(S1-04)**: **内部镜像源连通性**: 
    - **[需决策]** AST 拦截脚本的“魔法数字黑名单”维护方式:是硬编码在脚本内,还是抽离为 `.magic_numbers` 配置文件以降低后续维护成本? 确认实体机是否能顺畅访问阿里云 Docker 镜像源与 Python PyPI 镜像源(避免构建超时)。 

 --- 
 ## 议程四:M1 验收标准终审与技术债预防(10 议程四:待决项锁定与下一步行动(10 mins) 

 **主导人**:PM **主讲人**:PM 
 **讨论焦点**: **核心内容**: 
 1. **Done 标准无歧义对齐**:逐条过审 M1 的硬卡点(CI 0 Error、参数 0 偏差、main 分支保护生效)。 - 梳理本次会议遗留的需决策项。 
 2. **技术债预防登记**: 
    - 识别本 Sprint 可能引入的“临时妥协”(如:为了跑通 CI 暂时写了一个 Mock 测试用例),必须在 Redmine 提前建单登记清理 Deadline,严禁带入 Sprint 2。 分配 Story 至具体责任人,确认预计完成时间节点。 
 --- 
 **会议产出物要求**: 
 会后需由研发工程师在 Gitea `/docs` 目录下提交首份 `adr/001-s1-scaffolding-and-guardrails.md`,记录本次会议敲定的技术选型与决策理由。 - 约定 Daily Stand-up 的基本形式。