Files
HarborForge/docs/wave-2026-03-scope.md
zhi d6ed523731 DOC-001: 整理本波开发范围说明
- 明确 Calendar 为独立功能线,Proposal/Essential 为项目结构调整线
- 明确两条线交叉点仅限 event_data / Agent 调度引用层
- 区分必须本波完成 vs 仅设计保留内容
- 新增 docs/wave-2026-03-scope.md
2026-03-29 14:01:10 +00:00

107 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 本波开发范围说明
> Date: 2026-03-29
> Wave: 2026-03 (Calendar & Proposal 重构)
---
## 一、两条功能线概述
本波开发包含两条独立的功能线:
### 功能线 1Calendar 日程系统(独立功能线)
全新功能模块,为 HarborForge 增加日程调度能力。
**包含内容:**
- `TimeSlot` 日程槽模型与 CRUD API
- `SchedulePlan` 周期性计划模型与管理 API
- Agent 状态管理Idle / Busy / OnCall / Exhausted / Offline
- `MinimumWorkload` 最小工作量配置
- Plan 虚拟 slot 标识与物化策略
- Overlap 校验与 Workload warning 规则
- 不可变过去 slot 规则
- Agent 心跳唤醒机制与 Exhausted 恢复
- 前端 Calendar 页面
- CLI `hf calendar` 命令组
- OpenClaw 插件 Calendar 心跳联动
### 功能线 2Proposal / Essential / Story restricted项目结构调整线
对已有的 Propose 流程进行重构和增强。
**包含内容:**
- `Propose``Proposal` 统一重命名
- 新增 `Essential` 概念及数据模型
- `EssentialCode` 编码规则
- Proposal Accept 语义变更:遍历 Essential 批量生成 story task
- `story/*` 整个大类设为 restricted仅允许通过 Proposal Accept 创建
- 清理旧 `feat_task_id` 语义
- 前端 Proposal 详情页 Essential 管理
- CLI Proposal Essential 子命令
---
## 二、两条线的交叉点
两条功能线设计上相互独立,交叉点仅限于以下层面:
| 交叉点 | 说明 |
|--------|------|
| `event_data` | Calendar 的 TimeSlot 通过 `event_data` JSON 字段引用 Task/Essential code但不直接依赖 Proposal/Essential 的数据模型 |
| Agent 调度引用层 | Calendar 心跳唤醒 Agent 执行任务时,任务可能是 story task由 Proposal Accept 生成),但 Calendar 只关心 task code不关心其来源 |
**关键原则:**
- Calendar 不直接 FK 到 Essential 或 Proposal 表
- Proposal/Essential 不直接 FK 到 TimeSlot 或 SchedulePlan 表
- 两者通过 code 引用(字符串)松耦合
- 可以独立开发、独立测试、独立部署
---
## 三、本波必须完成 vs 仅设计保留
### ✅ 必须本波完成
#### Calendar 线
| 范围 | 任务 ID 区间 | 说明 |
|------|-------------|------|
| 后端基础模型 | BE-CAL-001 ~ BE-CAL-008 | TimeSlot、SchedulePlan、Agent 扩展、MinimumWorkload、物化策略、overlap/warning/不可变规则 |
| 后端 API | BE-CAL-API-001 ~ BE-CAL-API-007 | 日程 CRUD、计划 CRUD、date-list |
| 后端 Agent 协作 | BE-AGT-001 ~ BE-AGT-004 | 心跳查询、状态流转、多 slot 竞争、Exhausted 恢复 |
| 前端 | FE-CAL-001 ~ FE-CAL-005 | 页面骨架、slot 列表、计划列表、CRUD 交互、状态提示 |
| CLI | CLI-CAL-001 ~ CLI-CAL-010 | `hf calendar` 全部子命令 |
| 插件 | PLG-CAL-001 ~ PLG-CAL-004 | 心跳格式、唤醒处理、Deferred 分支、ScheduledGatewayRestart |
#### Proposal 线
| 范围 | 任务 ID 区间 | 说明 |
|------|-------------|------|
| 后端 | BE-PR-001 ~ BE-PR-011 | 重命名、Essential 模型/schema/API、Accept 重构、story restricted、测试 |
| 前端 | FE-PR-001 ~ FE-PR-005 | 重命名、Essential 列表/表单、Accept milestone 选择、story 限制 |
| CLI | CLI-PR-001 ~ CLI-PR-004 | 重命名、Essential 命令、Accept 更新、story 限制 |
#### 文档与测试
| 范围 | 任务 ID 区间 | 说明 |
|------|-------------|------|
| 文档 | DOC-001 ~ DOC-003 | 范围说明、迁移说明、验收清单 |
| 测试 | TEST-* | 各子模块测试补充 |
### 📐 仅设计保留(不在本波实现)
| 内容 | 说明 |
|------|------|
| Entertainment 事件子类型 | `event_data` 中 Entertainment 的具体结构待设计 |
| 用户级时区支持 | 本波统一使用服务器时区 |
| 前端日程表详细 UI 设计 | 本波实现基础功能骨架,精细 UI 留后续迭代 |
| Agent 唤醒的提示词模板 | 本波实现唤醒机制,提示词模板留后续打磨 |
| Proposal/Essential 数据迁移工具 | 旧数据兼容读取即可,自动化迁移工具留后续 |
---
## 四、Bug Fix附带修复
- **acc-mgr 密码修改限制**:后端禁止修改 acc-mgr 用户密码;前端隐藏修改密码入口