# Bug 修复报告

## 基本信息
- 日期：2025-11-22
- 模块：stateflow（流程状态管理）
- 修复者：Cline

---

## 问题描述
API `GET /api/v1/stateflow/business-objects/xxx/state-logs/` 无法获取已撤销状态的工艺参数。

**具体表现**：当一个状态流转记录被撤销后，通过该API获取状态日志列表时，已撤销状态记录的工艺参数会被过滤掉，导致参数丢失。

**影响范围**：
1. 使用 `GET /api/v1/stateflow/business-objects/xxx/state-logs/` API 获取包含已撤销状态的日志列表
2. 依赖这些日志进行审计、回溯或数据分析的功能

---

## 根本原因
在 `StateFlowRecordWithParametersSerializer` 中调用 `get_all_parameters_summary()` 时未传递 `include_cancelled=True` 参数，导致已撤销状态的参数被 `get_all_parameters_summary()` 方法内部逻辑过滤掉。

---

## 修复方案
修改 `/home/f/coding/flower/stateflow/serializers.py` 中的 `get_parameters_summary` 方法：

**修改前**：
```python
def get_parameters_summary(self, obj):
    """获取参数摘要"""
    return obj.get_all_parameters_summary()
```

**修改后**：
```python
def get_parameters_summary(self, obj):
    """获取参数摘要，包含已撤销状态的参数"""
    return obj.get_all_parameters_summary(include_cancelled=True)
```

---

## 测试验证
1. **创建测试用例**：在 `/home/f/coding/flower/stateflow/tests/test_business_object_api.py` 中创建 `test_get_state_logs_api_cancelled_state_with_parameters` 测试用例，用于复现和验证bug。

2. **验证修复**：
   - 运行测试用例 `test_get_state_logs_api_cancelled_state_with_parameters`
   - 修复前测试失败，修复后测试通过
   - 验证已撤销状态的工艺参数能够正确返回

---

## 总结
该修复确保了已撤销状态的工艺参数不会丢失，与未撤销状态的处理方式保持一致，符合业务需求。修复仅涉及一行代码的修改，但确保了数据完整性和API的一致性。
