---
id: FEAT-0031
type: feature
status: closed
stage: done
title: 状态递归聚合 (Recursive State Aggregation)
created_at: '2026-01-11T00:00:00'
updated_at: '2026-01-11T23:20:12.959753'
closed_at: '2026-01-11T23:20:12.959795'
parent: EPIC-0004
solution: implemented
dependencies: []
related: []
domains: []
tags:
- '#EPIC-0004'
- '#FEAT-0031'
author: Monoco Agent
uid: 2a539f
---

## FEAT-0031: 状态递归聚合 (Recursive State Aggregation)

## 目标 (Objective)

通过自动聚合子任务的状态和数据，让 Epic 变得“鲜活”。

## 需求 (Requirements)

### 1. 触发机制 (Trigger Mechanism)

- [x] 挂钩到 `update_issue` (Core)。
- [x] 当子任务改变 `status` 或 `stage` 时，触发父级更新。

### 2. 聚合逻辑 (Aggregation Logic)

- [x] **进度 (Progress)**: 计算 `done / total` 比例。
- [x] **数据汇总 (Data Rollup)**: 将子任务的 `delivery.files_count` 汇总到父级。
- [x] **状态推断 (Status Inference)**:
  - 如果第一个子任务开始 `doing`，自动启动父级 (Auto-start Parent)? (实现: 是，从 TODO -> DOING)。

## 技术实现 (Technical Implementation)

- 避免循环更新。
- 使用轻量级的 `recalculate_epic(epic_id)` 函数。

## Review Comments

- [x] Self-Review
