@zeyue0329/xiaoma-cli 1.0.38 → 1.0.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1448,6 +1448,198 @@ workflow:
|
|
|
1448
1448
|
- 质量评分 ≥9/10
|
|
1449
1449
|
- 可行性 ≥8/10
|
|
1450
1450
|
|
|
1451
|
+
- step: shard_architecture_document
|
|
1452
|
+
command: "*shard-doc"
|
|
1453
|
+
description: "将架构文档按技术模块切分"
|
|
1454
|
+
action: shard_architecture_by_modules
|
|
1455
|
+
prompt_template: |
|
|
1456
|
+
架构设计文档已完成,现在需要将其按技术模块切分为多个子文档,便于开发团队查阅和维护。
|
|
1457
|
+
|
|
1458
|
+
**源文档**:
|
|
1459
|
+
docs/architecture/iteration-backend-design.md
|
|
1460
|
+
|
|
1461
|
+
**切分命令**:
|
|
1462
|
+
请执行 shard-doc 命令,将架构文档切分到指定目录:
|
|
1463
|
+
|
|
1464
|
+
```
|
|
1465
|
+
shard-doc docs/architecture/iteration-backend-design.md docs/architecture
|
|
1466
|
+
```
|
|
1467
|
+
|
|
1468
|
+
**切分策略**:
|
|
1469
|
+
请将架构文档按以下技术模块切分:
|
|
1470
|
+
|
|
1471
|
+
1. **数据库设计** (database-design.md)
|
|
1472
|
+
- 从【第2节 新增数据模型设计】提取
|
|
1473
|
+
- 包含:Entity 类设计、数据表 DDL、关联关系、数据迁移策略
|
|
1474
|
+
- 切分标记:`## 2. 新增数据模型设计` 到 `## 3. API 设计` 之前
|
|
1475
|
+
|
|
1476
|
+
2. **API 设计** (api-design.md)
|
|
1477
|
+
- 从【第3节 API 设计】提取
|
|
1478
|
+
- 包含:RESTful API 端点、DTO 设计、API 版本策略、集成点
|
|
1479
|
+
- 切分标记:`## 3. API 设计` 到 `## 4. 服务层设计` 之前
|
|
1480
|
+
|
|
1481
|
+
3. **服务集成** (service-integration.md)
|
|
1482
|
+
- 从【第4节 服务层设计】提取
|
|
1483
|
+
- 包含:Service 接口、业务逻辑流程、事务设计、服务交互
|
|
1484
|
+
- 切分标记:`## 4. 服务层设计` 到 `## 5. 技术决策` 之前
|
|
1485
|
+
|
|
1486
|
+
4. **迁移计划** (migration-plan.md)
|
|
1487
|
+
- 从【第6节 数据库变更脚本】和【第8.3节 部署注意事项】提取
|
|
1488
|
+
- 包含:数据库迁移脚本、数据迁移策略、部署步骤、回滚方案
|
|
1489
|
+
- 切分标记:`## 6. 数据库变更脚本` + `### 8.3 部署注意事项`
|
|
1490
|
+
|
|
1491
|
+
5. **编码规范** (coding-standards.md)
|
|
1492
|
+
- 从【第1节 设计概述】和【第7节 技术风险和注意事项】提取
|
|
1493
|
+
- 包含:设计原则、编码约定、技术约束、注意事项
|
|
1494
|
+
- 切分标记:`## 1. 设计概述` + `## 7. 技术风险和注意事项`
|
|
1495
|
+
|
|
1496
|
+
6. **技术栈** (tech-stack.md)
|
|
1497
|
+
- 从【第1节 设计概述 - 技术选型】和【第5节 技术决策】提取
|
|
1498
|
+
- 包含:框架和依赖、新技术组件、性能优化、安全策略、缓存策略
|
|
1499
|
+
- 切分标记:`### 1.3 技术选型` + `## 5. 技术决策`
|
|
1500
|
+
|
|
1501
|
+
7. **项目结构** (project-structure.md)
|
|
1502
|
+
- 从【第1节 设计概述】和【第8.1节 开发顺序建议】提取
|
|
1503
|
+
- 包含:包结构、模块组织、开发顺序、集成策略
|
|
1504
|
+
- 切分标记:`### 1.2 设计原则` + `### 8.1 开发顺序建议`
|
|
1505
|
+
|
|
1506
|
+
**切分指令**:
|
|
1507
|
+
请严格按照以下映射关系进行切分:
|
|
1508
|
+
|
|
1509
|
+
| 目标文件 | 源章节 | 内容范围 |
|
|
1510
|
+
|---------|--------|---------|
|
|
1511
|
+
| database-design.md | 第2节 | 完整的数据模型设计章节 |
|
|
1512
|
+
| api-design.md | 第3节 | 完整的 API 设计章节 |
|
|
1513
|
+
| service-integration.md | 第4节 | 完整的服务层设计章节 |
|
|
1514
|
+
| migration-plan.md | 第6节 + 第8.3节 | 数据库变更脚本 + 部署注意事项 |
|
|
1515
|
+
| coding-standards.md | 第1节 + 第7节 | 设计概述 + 技术风险和注意事项 |
|
|
1516
|
+
| tech-stack.md | 第1.3节 + 第5节 | 技术选型 + 技术决策 |
|
|
1517
|
+
| project-structure.md | 第1.2节 + 第8.1节 | 设计原则 + 开发顺序 |
|
|
1518
|
+
|
|
1519
|
+
**切分要求**:
|
|
1520
|
+
1. 保持每个子文档的独立性和完整性
|
|
1521
|
+
2. 保留原文档的所有内容(不丢失信息)
|
|
1522
|
+
3. 在每个子文档开头添加元数据和来源说明
|
|
1523
|
+
4. 保持 Markdown 格式的正确性
|
|
1524
|
+
5. 保留代码块、表格、列表等格式
|
|
1525
|
+
6. 为每个子文档添加适当的标题和说明
|
|
1526
|
+
|
|
1527
|
+
**子文档模板格式**:
|
|
1528
|
+
```markdown
|
|
1529
|
+
# {模块名称}
|
|
1530
|
+
|
|
1531
|
+
> **来源**: iteration-backend-design.md - {对应章节}
|
|
1532
|
+
> **最后更新**: {日期}
|
|
1533
|
+
> **状态**: Validated
|
|
1534
|
+
|
|
1535
|
+
## 概述
|
|
1536
|
+
简要说明本文档的范围和用途
|
|
1537
|
+
|
|
1538
|
+
## {具体内容章节}
|
|
1539
|
+
(从源文档提取的内容)
|
|
1540
|
+
```
|
|
1541
|
+
|
|
1542
|
+
**执行确认**:
|
|
1543
|
+
切分完成后,请确认:
|
|
1544
|
+
1. ✓ 所有7个子文档已创建
|
|
1545
|
+
2. ✓ 每个子文档内容完整
|
|
1546
|
+
3. ✓ 没有内容丢失
|
|
1547
|
+
4. ✓ 格式正确无误
|
|
1548
|
+
5. ✓ 交叉引用已更新
|
|
1549
|
+
|
|
1550
|
+
请开始执行 shard-doc 命令。
|
|
1551
|
+
|
|
1552
|
+
execution_process:
|
|
1553
|
+
phase_1: load_source_architecture_document
|
|
1554
|
+
phase_2: identify_section_boundaries
|
|
1555
|
+
phase_3: extract_content_by_modules
|
|
1556
|
+
phase_4: create_individual_module_documents
|
|
1557
|
+
phase_5: add_metadata_and_headers
|
|
1558
|
+
phase_6: validate_content_completeness
|
|
1559
|
+
phase_7: save_sharded_documents
|
|
1560
|
+
|
|
1561
|
+
output_files:
|
|
1562
|
+
- "docs/architecture/database-design.md"
|
|
1563
|
+
- "docs/architecture/api-design.md"
|
|
1564
|
+
- "docs/architecture/service-integration.md"
|
|
1565
|
+
- "docs/architecture/migration-plan.md"
|
|
1566
|
+
- "docs/architecture/coding-standards.md"
|
|
1567
|
+
- "docs/architecture/tech-stack.md"
|
|
1568
|
+
- "docs/architecture/project-structure.md"
|
|
1569
|
+
|
|
1570
|
+
notes: |
|
|
1571
|
+
架构文档切分步骤:
|
|
1572
|
+
1. 使用 shard-doc 命令
|
|
1573
|
+
2. 源文档:iteration-backend-design.md
|
|
1574
|
+
3. 目标目录:docs/architecture/
|
|
1575
|
+
4. 按技术模块切分为7个子文档
|
|
1576
|
+
5. 保持内容完整性和格式正确性
|
|
1577
|
+
|
|
1578
|
+
切分后的好处:
|
|
1579
|
+
- 开发人员可以快速找到特定模块的设计文档
|
|
1580
|
+
- 每个子文档聚焦单一技术关注点
|
|
1581
|
+
- 便于团队分工和并行开发
|
|
1582
|
+
- 降低文档维护的复杂度
|
|
1583
|
+
- 提高文档的可读性和可用性
|
|
1584
|
+
|
|
1585
|
+
- step: validate_sharded_documents
|
|
1586
|
+
action: verify_sharding_quality
|
|
1587
|
+
prompt_template: |
|
|
1588
|
+
请验证架构文档切分的质量,确认:
|
|
1589
|
+
|
|
1590
|
+
**完整性检查**:
|
|
1591
|
+
1. ✓ docs/architecture/database-design.md 已创建
|
|
1592
|
+
2. ✓ docs/architecture/api-design.md 已创建
|
|
1593
|
+
3. ✓ docs/architecture/service-integration.md 已创建
|
|
1594
|
+
4. ✓ docs/architecture/migration-plan.md 已创建
|
|
1595
|
+
5. ✓ docs/architecture/coding-standards.md 已创建
|
|
1596
|
+
6. ✓ docs/architecture/tech-stack.md 已创建
|
|
1597
|
+
7. ✓ docs/architecture/project-structure.md 已创建
|
|
1598
|
+
|
|
1599
|
+
**内容检查**:
|
|
1600
|
+
8. ✓ 每个文档包含完整的相关内容
|
|
1601
|
+
9. ✓ 没有内容丢失或重复
|
|
1602
|
+
10. ✓ 格式正确(Markdown、代码块、表格)
|
|
1603
|
+
11. ✓ 元数据已添加(来源、日期、状态)
|
|
1604
|
+
|
|
1605
|
+
**可用性检查**:
|
|
1606
|
+
12. ✓ 每个文档独立可读
|
|
1607
|
+
13. ✓ 交叉引用清晰
|
|
1608
|
+
14. ✓ 技术细节完整
|
|
1609
|
+
15. ✓ 适合开发团队使用
|
|
1610
|
+
|
|
1611
|
+
如有问题,请指出并修正。
|
|
1612
|
+
如果所有检查项都通过,请确认切分质量合格。
|
|
1613
|
+
|
|
1614
|
+
validation_process:
|
|
1615
|
+
step_1: check_all_files_exist
|
|
1616
|
+
step_2: verify_content_completeness
|
|
1617
|
+
step_3: validate_markdown_format
|
|
1618
|
+
step_4: check_cross_references
|
|
1619
|
+
step_5: ensure_usability
|
|
1620
|
+
|
|
1621
|
+
on_issues_found:
|
|
1622
|
+
action: fix_sharding_issues
|
|
1623
|
+
max_iterations: 1
|
|
1624
|
+
notes: "修正切分中的问题"
|
|
1625
|
+
|
|
1626
|
+
on_all_checks_passed:
|
|
1627
|
+
action: mark_sharding_validated
|
|
1628
|
+
message: "✅ 架构文档切分完成并验证通过"
|
|
1629
|
+
|
|
1630
|
+
notes: |
|
|
1631
|
+
验证切分后的架构文档:
|
|
1632
|
+
- 确认所有7个子文档已创建
|
|
1633
|
+
- 验证内容完整性
|
|
1634
|
+
- 检查格式正确性
|
|
1635
|
+
- 确保开发团队可用性
|
|
1636
|
+
|
|
1637
|
+
质量标准:
|
|
1638
|
+
- 文件完整性 100%
|
|
1639
|
+
- 内容完整性 100%
|
|
1640
|
+
- 格式正确性 100%
|
|
1641
|
+
- 可用性 ≥9/10
|
|
1642
|
+
|
|
1451
1643
|
validation_criteria:
|
|
1452
1644
|
- architecture_design_complete
|
|
1453
1645
|
- data_models_designed
|
|
@@ -1456,9 +1648,18 @@ workflow:
|
|
|
1456
1648
|
- database_scripts_generated
|
|
1457
1649
|
- risks_identified
|
|
1458
1650
|
- quality_self_check_passed
|
|
1651
|
+
- architecture_documents_sharded
|
|
1652
|
+
- seven_module_documents_created
|
|
1459
1653
|
- files_created:
|
|
1460
1654
|
- "docs/architecture/iteration-backend-design.md"
|
|
1461
1655
|
- "docs/architecture/db-migration-scripts.sql"
|
|
1656
|
+
- "docs/architecture/database-design.md"
|
|
1657
|
+
- "docs/architecture/api-design.md"
|
|
1658
|
+
- "docs/architecture/service-integration.md"
|
|
1659
|
+
- "docs/architecture/migration-plan.md"
|
|
1660
|
+
- "docs/architecture/coding-standards.md"
|
|
1661
|
+
- "docs/architecture/tech-stack.md"
|
|
1662
|
+
- "docs/architecture/project-structure.md"
|
|
1462
1663
|
|
|
1463
1664
|
on_failure:
|
|
1464
1665
|
action: retry_architecture_design
|
|
@@ -1467,7 +1668,7 @@ workflow:
|
|
|
1467
1668
|
|
|
1468
1669
|
on_success:
|
|
1469
1670
|
action: finalize_requirements_analysis
|
|
1470
|
-
message: "✅
|
|
1671
|
+
message: "✅ 后端架构增量设计完成,架构文档已按模块切分"
|
|
1471
1672
|
|
|
1472
1673
|
notes: |
|
|
1473
1674
|
Architect 后端架构增量设计的完整流程:
|
|
@@ -1483,16 +1684,23 @@ workflow:
|
|
|
1483
1684
|
- 提供实施指导
|
|
1484
1685
|
4. 自评审架构设计质量(18项检查)
|
|
1485
1686
|
5. 输出架构设计文档和数据库脚本
|
|
1687
|
+
6. 执行 shard-doc 切分架构文档
|
|
1688
|
+
- 将 iteration-backend-design.md 按技术模块切分
|
|
1689
|
+
- 生成7个子文档:database-design, api-design, service-integration,
|
|
1690
|
+
migration-plan, coding-standards, tech-stack, project-structure
|
|
1691
|
+
7. 验证切分质量(15项检查)
|
|
1486
1692
|
|
|
1487
1693
|
关键输出:
|
|
1488
1694
|
- iteration-backend-design.md:完整的架构设计文档
|
|
1489
1695
|
- db-migration-scripts.sql:数据库变更脚本
|
|
1696
|
+
- 7个技术模块子文档:便于开发团队查阅
|
|
1490
1697
|
|
|
1491
1698
|
增量设计要点:
|
|
1492
1699
|
- 基于现有架构扩展
|
|
1493
1700
|
- 保持一致性和兼容性
|
|
1494
1701
|
- 关注性能和安全
|
|
1495
1702
|
- 提供清晰的实施路径
|
|
1703
|
+
- 模块化文档便于团队协作
|
|
1496
1704
|
|
|
1497
1705
|
# ================================
|
|
1498
1706
|
# 完成:需求分析工作流结束
|
|
@@ -1516,6 +1724,14 @@ workflow:
|
|
|
1516
1724
|
- Epic 文档清单: "docs/epics/史诗-*.md"
|
|
1517
1725
|
- 架构设计文档: "docs/architecture/iteration-backend-design.md"
|
|
1518
1726
|
- 数据库脚本: "docs/architecture/db-migration-scripts.sql"
|
|
1727
|
+
- 架构模块文档:
|
|
1728
|
+
- 数据库设计: "docs/architecture/database-design.md"
|
|
1729
|
+
- API 设计: "docs/architecture/api-design.md"
|
|
1730
|
+
- 服务集成: "docs/architecture/service-integration.md"
|
|
1731
|
+
- 迁移计划: "docs/architecture/migration-plan.md"
|
|
1732
|
+
- 编码规范: "docs/architecture/coding-standards.md"
|
|
1733
|
+
- 技术栈: "docs/architecture/tech-stack.md"
|
|
1734
|
+
- 项目结构: "docs/architecture/project-structure.md"
|
|
1519
1735
|
|
|
1520
1736
|
section_3_next_steps:
|
|
1521
1737
|
- 下一阶段:用户故事创建和细化
|
|
@@ -1545,6 +1761,8 @@ workflow:
|
|
|
1545
1761
|
4. Epic 史诗拆分(PM)
|
|
1546
1762
|
5. 后端架构增量设计(Architect)
|
|
1547
1763
|
6. 数据库迁移脚本生成
|
|
1764
|
+
7. 架构文档按模块切分
|
|
1765
|
+
8. 切分文档质量验证
|
|
1548
1766
|
|
|
1549
1767
|
📄 生成的文档:
|
|
1550
1768
|
- docs/requirements/requirements-analysis.md
|
|
@@ -1553,6 +1771,13 @@ workflow:
|
|
|
1553
1771
|
- docs/epics/史诗-*.md ({epic_count} 个史诗)
|
|
1554
1772
|
- docs/architecture/iteration-backend-design.md
|
|
1555
1773
|
- docs/architecture/db-migration-scripts.sql
|
|
1774
|
+
- docs/architecture/database-design.md (数据库设计)
|
|
1775
|
+
- docs/architecture/api-design.md (API 设计)
|
|
1776
|
+
- docs/architecture/service-integration.md (服务集成)
|
|
1777
|
+
- docs/architecture/migration-plan.md (迁移计划)
|
|
1778
|
+
- docs/architecture/coding-standards.md (编码规范)
|
|
1779
|
+
- docs/architecture/tech-stack.md (技术栈)
|
|
1780
|
+
- docs/architecture/project-structure.md (项目结构)
|
|
1556
1781
|
|
|
1557
1782
|
🚀 下一步:
|
|
1558
1783
|
可以启动 automated-story-development.yaml 工作流进行用户故事开发。
|
|
@@ -1640,6 +1865,24 @@ workflow:
|
|
|
1640
1865
|
- 技术风险已识别
|
|
1641
1866
|
- 可测试性已考虑
|
|
1642
1867
|
|
|
1868
|
+
architecture_sharding:
|
|
1869
|
+
required_files:
|
|
1870
|
+
- docs/architecture/database-design.md
|
|
1871
|
+
- docs/architecture/api-design.md
|
|
1872
|
+
- docs/architecture/service-integration.md
|
|
1873
|
+
- docs/architecture/migration-plan.md
|
|
1874
|
+
- docs/architecture/coding-standards.md
|
|
1875
|
+
- docs/architecture/tech-stack.md
|
|
1876
|
+
- docs/architecture/project-structure.md
|
|
1877
|
+
validation_rules:
|
|
1878
|
+
- 所有7个模块文档已创建
|
|
1879
|
+
- 内容完整性 100%(无内容丢失)
|
|
1880
|
+
- 模块文档格式规范
|
|
1881
|
+
- 章节边界准确识别
|
|
1882
|
+
- 模块文档独立可读
|
|
1883
|
+
- 交叉引用清晰标注
|
|
1884
|
+
- 元数据标题包含源文档和日期
|
|
1885
|
+
|
|
1643
1886
|
# ================================
|
|
1644
1887
|
# 错误处理和重试策略
|
|
1645
1888
|
# ================================
|
|
@@ -1660,6 +1903,10 @@ workflow:
|
|
|
1660
1903
|
max_retries: 2
|
|
1661
1904
|
escalation: "架构设计失败,需要人工审查 PRD 和现有架构的兼容性"
|
|
1662
1905
|
|
|
1906
|
+
architecture_sharding_failure:
|
|
1907
|
+
max_retries: 1
|
|
1908
|
+
escalation: "架构文档切分失败,需要检查 iteration-backend-design.md 的章节结构"
|
|
1909
|
+
|
|
1663
1910
|
# ================================
|
|
1664
1911
|
# 进度追踪
|
|
1665
1912
|
# ================================
|
|
@@ -1669,6 +1916,8 @@ workflow:
|
|
|
1669
1916
|
- prd_created
|
|
1670
1917
|
- epics_created_count
|
|
1671
1918
|
- architecture_design_completed
|
|
1919
|
+
- architecture_sharding_completed
|
|
1920
|
+
- module_documents_count
|
|
1672
1921
|
- total_duration
|
|
1673
1922
|
- identified_tables_count
|
|
1674
1923
|
- identified_apis_count
|
|
@@ -1721,7 +1970,13 @@ workflow:
|
|
|
1721
1970
|
V -->|通过| X[架构设计完成]
|
|
1722
1971
|
|
|
1723
1972
|
X --> Y[生成数据库迁移脚本]
|
|
1724
|
-
Y -->
|
|
1973
|
+
Y --> Y1[Architect: 切分架构文档]
|
|
1974
|
+
Y1 --> Y2[执行 shard-doc 命令]
|
|
1975
|
+
Y2 --> Y3{验证切分质量}
|
|
1976
|
+
Y3 -->|有问题| Y4[调整切分]
|
|
1977
|
+
Y4 --> Y3
|
|
1978
|
+
Y3 -->|通过| Y5[切分完成: 7个模块文档]
|
|
1979
|
+
Y5 --> Z[生成完成报告]
|
|
1725
1980
|
Z --> AA[🎉 需求分析完成]
|
|
1726
1981
|
|
|
1727
1982
|
style C fill:#E6E6FA
|
|
@@ -1729,6 +1984,7 @@ workflow:
|
|
|
1729
1984
|
style G fill:#ADD8E6
|
|
1730
1985
|
style M fill:#98FB98
|
|
1731
1986
|
style T fill:#FFE4B5
|
|
1987
|
+
style Y1 fill:#FFE4B5
|
|
1732
1988
|
style AA fill:#90EE90
|
|
1733
1989
|
```
|
|
1734
1990
|
|
|
@@ -1755,6 +2011,14 @@ workflow:
|
|
|
1755
2011
|
- Epic 史诗文档(多个)
|
|
1756
2012
|
- 后端架构增量设计文档
|
|
1757
2013
|
- 数据库迁移脚本
|
|
2014
|
+
- 架构模块文档(7个):
|
|
2015
|
+
- 数据库设计
|
|
2016
|
+
- API 设计
|
|
2017
|
+
- 服务集成
|
|
2018
|
+
- 迁移计划
|
|
2019
|
+
- 编码规范
|
|
2020
|
+
- 技术栈
|
|
2021
|
+
- 项目结构
|
|
1758
2022
|
|
|
1759
2023
|
# ================================
|
|
1760
2024
|
# 流程交接提示
|
|
@@ -1772,6 +2036,10 @@ workflow:
|
|
|
1772
2036
|
all_epics_created: "✅ 所有史诗创建完成"
|
|
1773
2037
|
architecture_design_start: "Architect 开始后端架构增量设计..."
|
|
1774
2038
|
architecture_design_complete: "✅ 后端架构增量设计完成"
|
|
2039
|
+
architecture_sharding_start: "Architect 开始按模块切分架构文档..."
|
|
2040
|
+
architecture_sharding_complete: "✅ 架构文档按模块切分完成"
|
|
2041
|
+
sharding_validation_start: "开始验证切分文档质量..."
|
|
2042
|
+
sharding_validation_complete: "✅ 切分文档质量验证通过"
|
|
1775
2043
|
workflow_complete: "🎉 需求分析自动化工作流完成!可以启动用户故事开发流程。"
|
|
1776
2044
|
|
|
1777
2045
|
# ================================
|
|
@@ -1862,8 +2130,17 @@ workflow:
|
|
|
1862
2130
|
- consistency_score: ">=9/10"
|
|
1863
2131
|
- feasibility_score: ">=8/10"
|
|
1864
2132
|
|
|
2133
|
+
architecture_sharding:
|
|
2134
|
+
- all_seven_modules_created
|
|
2135
|
+
- content_completeness: "100%"
|
|
2136
|
+
- no_information_loss
|
|
2137
|
+
- module_documents_independently_readable
|
|
2138
|
+
- cross_references_clear
|
|
2139
|
+
- metadata_headers_present
|
|
2140
|
+
|
|
1865
2141
|
overall_workflow:
|
|
1866
2142
|
- all_documents_generated
|
|
1867
2143
|
- all_quality_gates_passed
|
|
2144
|
+
- architecture_modules_sharded
|
|
1868
2145
|
- ready_for_story_development: true
|
|
1869
2146
|
- total_duration: "1.5-2.5 hours"
|