Skip to content

复盘模块、复盘 Agent 与数据展示架构 #60

Description

@Alexander-Noah

复盘模块、复盘 Agent 与数据展示架构接口设计

本设计包含三个协作部分:

  1. 复盘业务模块:负责复盘范围校验、事实统计、证据构建、报告生命周期、历史查询、周期配置、Agent 任务调度、结果校验和展示模型。
  2. 复盘 Agent Adapter:只根据已经计算好的事实和证据生成复盘文字,不拥有业务状态和写权限。
  3. 前端复盘展示模块:只消费 ReviewReportView 并提交用户操作,不重新计算统计数据。

母 AI 编排模块是交互入口之一,但不是复盘模块的数据聚合器、Repository、定时器或报告状态机。

母 AI / API / 周期调度器 / GoalCompleted 事件
  → ReviewUseCase
  → ReviewFactReader 获取 FactSnapshot
  → FactCalculator 计算事实和证据
  → ReviewRepository 保存事实版本
  → ReviewNarrativeGenerator 调用复盘 Agent
  → NarrativeValidator 校验 Agent 草稿
  → ReviewRepository 保存 ready / partial 报告
  → ReviewReportViewBuilder
  → 前端交互与展示模块

核心约束:

  • 复盘模块拥有 ReviewReport、复盘事实、生成任务、周期配置和展示 DTO。
  • 复盘模块不直接读取其他领域 Repository,只通过 ReviewFactReader 获取按用途裁剪的 FactSnapshot
  • 完成率、次数、耗时和原因分布由复盘模块内的确定性代码计算,LLM 只组织文字。
  • 复盘 Agent 不读取数据库、不计算事实、不保存报告、不修改事项、不触发重排。
  • 母 AI 只识别意图、确定或追问复盘范围,并通过 Capability Gateway 调用 ReviewUseCase
  • 周期调度器只触发 ReviewUseCase;提醒模块只消费 ReviewReady 事件。
  • 前端只渲染展示模型,不重新计算统计数据。

0. 复盘模块硬边界

0.1 边界以内

以下职责和数据必须位于 timeflow.review

  • ReviewUseCase:目标复盘、周期复盘、查询、重试和周期配置的业务入口。
  • FactCalculatorEvidenceBuilder:确定性统计和证据目录。
  • ReviewReport 状态机及 facts_revision/revision 并发规则。
  • ReviewGenerationJobPeriodicReviewConfig
  • NarrativeValidatorReviewReportViewBuilder
  • ReviewFactReaderReviewNarrativeGeneratorReviewRepositoryReviewOutbox 等 Port 定义。

复盘模块拥有的数据:

ReviewReport
GoalReviewFacts
PeriodicReviewFacts
EvidenceCatalog
ReviewNarrative
ReviewGenerationJob
PeriodicReviewConfig

0.2 边界以外

外部能力 权威模块 与复盘模块的协作方式
用户意图、多轮追问 母 AI / Orchestrator 调用 ReviewUseCase,不读写报告
当前用户与会话 Identity 提供可信 AuthenticatedUser
日程、待办 Scheduling 通过事实查询适配器只读提供
Goal、GoalTask Goal 通过事实查询适配器只读提供
ExecutionFeedback Feedback 通过事实查询适配器只读提供
重排操作事实 Replanning / Audit 通过事实查询适配器只读提供
AI 文字生成 Review Agent Adapter 实现 ReviewNarrativeGenerator
物理数据库 Persistence Adapter 实现 ReviewRepository
周期触发 Scheduler 调用 ReviewUseCase.generatePeriodicReview
系统通知 Reminder 消费 ReviewReady 事件
图表和页面 Frontend 只消费 ReviewReportView

0.3 允许穿越边界的契约

允许进入复盘模块:

  • Command:GenerateGoalReviewCommandGeneratePeriodicReviewCommandRetryReviewNarrativeCommandUpdatePeriodicReviewConfigCommand
  • Query:GetReviewReportQueryListReviewReportsQueryGetPeriodicReviewConfigQuery
  • 可信上下文:AuthenticatedUser,客户端 Body 中的 user_id 不能作为授权依据。
  • 领域事件:GoalCompletedEvent 等已经认证、可幂等处理的事件。

允许离开复盘模块:

  • DTO:ReviewReportViewReviewReportSummaryReviewOperationResult
  • 领域事件:ReviewReadyReviewGenerationFailed
  • Outbound Port 调用:ReviewFactReaderReviewNarrativeGeneratorReviewRepositoryReviewOutbox

0.4 禁止的跨边界依赖

ReviewUseCase  -X-> SchedulingRepository / GoalRepository / FeedbackRepository
ReviewAgent    -X-> ReviewRepository / FactQueryFacade / ReplanUseCase
MotherAI       -X-> ReviewRepository / FactCalculator
Frontend       -X-> FactCalculator / ReviewAgent
Reminder       -X-> 修改 ReviewReport
Scheduler      -X-> 直接创建 ReviewReport

用户采纳复盘建议时,必须创建新的用户交互并进入对应 Capability 的候选与确认流程;复盘模块不能直接执行建议。

1. 模块必须提供

1.1 复盘业务模块

函数(中文名称) 函数类型 调用方 函数输入(字段级别) 函数输出(字段级别) 失败 / 缺字段处理 函数功能文档 依赖数据 是否需要用户确认 是否写入 写入确认要求
生成或刷新目标复盘 业务命令 母 AI / API 可信用户上下文、goal_ididempotency_key? review_idgeneration_statusrevisionfactspoll_after_ms? 目标不存在或不属于用户时拒绝;无有效反馈时返回 no_reviewable_feedback 读取目标事实快照、计算事实、保存/刷新报告并提交 Agent 任务 FactSnapshot 一次性读取否;持久化策略待 Issue 确认 只写复盘模块数据
固化目标复盘 领域事件命令 GoalCompleted 事件消费者 event_iduser_idgoal_idgoal_versioncompleted_at review_id?lifecycle=finalizedrevision 重复事件幂等返回;旧目标版本拒绝 生成最终事实并固化目标报告 FactSnapshot 只写复盘模块数据
生成周期复盘 业务命令 API / Scheduler 可信用户上下文、granularityperiod_start/endidempotency_key? review_id?generation_statusrevisionempty? 周期未结束、边界不合法或无活动时返回受控结果 按用户时区自然窗口生成唯一周期报告 FactSnapshot 自动持久化策略待 Issue 确认 只写复盘模块数据
查询复盘报告 查询 母 AI / API / 前端 SDK 可信用户上下文、review_id ReviewReportView 不存在或不属于用户时返回受控 NotFound/Forbidden 统一目标和周期报告详情入口 ReviewRepository 不涉及
查询复盘列表 查询 API / 前端 SDK 可信用户上下文、筛选、分页 ReviewReportSummary[]、分页信息 空列表返回空集合 查询历史报告入口 ReviewRepository 不涉及
重试复盘文字 业务命令 API / 前端 SDK 可信用户上下文、review_idexpected_revision generation_status=generatingjob_id 事实不存在、报告过期或 revision 冲突时拒绝 只重试文字,不重新计算事实 ReviewRepository 只写生成任务和报告状态
更新周期配置 业务命令 API / 前端 SDK 可信用户上下文、granularityenabled、生成时间、expected_version PeriodicReviewConfig 版本冲突或时区无效时拒绝 管理自动复盘策略,不删除历史报告 Identity 时区 显式设置动作 只写复盘模块配置

1.2 复盘 Agent Adapter

函数(中文名称) 函数类型 调用方 函数输入 函数输出 明确边界
生成复盘文字 AI Adapter ReviewUseCase / Worker facts_revisionfactsevidence_catalog[]tone_policylocaleprompt_version ReviewNarrativeDraft、模型和 Prompt 元数据 不计算事实、不访问 Repository、不保存报告、不触发重排

1.3 前端交互与展示模块

函数(中文名称) 函数类型 调用方 函数输入(字段级别) 函数输出(字段级别) 失败 / 缺字段处理 函数功能文档 依赖数据 是否需要用户确认 是否写入 写入确认要求
获取复盘展示模型 查询 前端 SDK review_id ReviewReportViewheadersections[]actions[]empty_state?warnings[] 单个统计块缺失时只隐藏对应 section;整体结构无效时返回错误状态 展示模型由复盘模块生成,前端不重新计算事实 ReviewReportView 不涉及
展示复盘报告 展示 前端交互与展示模块 ReviewReportViewpage_context render_statususer_action? partial 时保留事实图表并显示文字重试入口;无数据时显示空状态 展示目标复盘或周期复盘页面 不涉及
展示复盘列表 展示 前端交互与展示模块 report_summaries[]filterpagination render_statusselected_review_id? 列表为空时展示空状态;单条异常不阻断整页 展示目标复盘和周期复盘的历史入口 用户操作数据 不涉及

2. 模块依赖

2.1 入站调用者

调用者 调用复盘模块的能力 边界要求
母 AI / Capability Gateway 生成目标复盘、生成周期复盘、查询报告 只传 Command/Query,不组装 FactSnapshot、不保存报告
API / Frontend SDK 查询、生成、重试和配置 用户身份由服务端注入,页面只消费 DTO
Scheduler 生成到期周期复盘 只调用 ReviewUseCase,不直接创建报告
GoalCompleted 事件消费者 固化目标复盘 event_id 幂等处理

2.2 出站依赖 Port

Port 依赖原因 输入 输出 是否强依赖
ReviewFactReader 获取按用户、范围和用途裁剪的事实快照 GoalReviewQuery / PeriodicReviewQuery FactSnapshot
ReviewNarrativeGenerator 基于事实和证据生成文字草稿 ReviewNarrativeRequest ReviewNarrativeDraft 文字是,事实展示否
ReviewRepository 保存和查询复盘模块自有聚合 ReviewReport / 查询条件 报告或列表 需要历史报告时是
ReviewJobRepository 持久化异步生成任务 ReviewGenerationJob Job 状态 异步生成时是
ReviewOutbox 发布报告就绪、生成失败等事件 ReviewDomainEvent append 结果 通知联动时是
Clock 周期边界、过期和任务时间 当前时间

ReviewFactReader 的适配器可以调用 FactQueryFacade 及 Scheduling、Goal、Feedback、Replanning/Audit 的只读 Query Port;这些具体依赖不得泄漏到 timeflow.review

3. 核心数据契约

3.1 复盘命令与范围

ReviewScope {
    review_type      enum(goal, periodic)
    goal_id?         string
    period? {
        start_at     timestamp
        end_at       timestamp
        time_zone    string
        granularity  enum(day, week, month)
    }
}

GenerateReviewCommand {
    request_id       string
    user_id          string   // 由 CurrentUserContext 注入
    scope            ReviewScope
    idempotency_key? string
    locale           string
}

目标不唯一、周期缺失或用户表达有歧义时,由母 AI 在调用 ReviewUseCase 前继续追问;ReviewUseCase 仍需重新校验用户归属、周期边界和业务前置条件。复盘 Agent 不负责 is_need_user

3.2 事实快照

FactSnapshot {
    snapshot_id       string
    user_id           string
    purpose           literal(review)
    read_scope        string[]
    facts {
        items          ReviewItemFact[]
        feedbacks      ReviewFeedbackFact[]
        operation_logs ReviewOperationFact[]
    }
    source_versions   SourceVersion[]
    created_at        timestamp
    expires_at        timestamp
}

SourceVersion {
    aggregate_type    string
    aggregate_id      string
    version           integer
    updated_at        timestamp
}

FactSnapshotReviewFactReader 获取,必须按用户、范围和 purpose=review 裁剪;不得包含数据库连接、访问令牌、无关用户画像、其他用户数据或无关备注全文。母 AI 和复盘 Agent 都不能自行读取或扩展快照。

3.3 复盘报告

ReviewReport {
    review_id            string
    user_id              string
    review_type          enum(goal, periodic)
    scope                ReviewScope
    lifecycle            enum(live, finalized)
    generation_status    enum(facts_ready, generating, ready, partial, failed)
    facts                GoalReviewFacts | PeriodicReviewFacts
    evidence_catalog     EvidenceRef[]
    facts_schema_version string
    facts_revision       integer
    narrative?           ReviewNarrative
    source_versions      SourceVersion[]
    revision             integer
    created_at           timestamp
    updated_at           timestamp
}
  • 目标进行中时允许刷新同一报告并增加 revision;目标完成后固化为 finalized
  • 周期报告以 (user_id, granularity, start_at, end_at, time_zone) 唯一。
  • 重新生成文字不改变事实和周期边界。
  • Agent 结果只有在 facts_revision 仍匹配时才能写入。

3.4 复盘 Agent 输入与输出

ReviewNarrativeRequest {
    request_id           string
    review_id            string
    review_type          enum(goal, periodic)
    facts_revision       integer
    facts_schema_version string
    facts                GoalReviewFacts | PeriodicReviewFacts
    evidence_catalog     EvidenceRef[]
    tone_policy          string
    locale               string
    prompt_version       string
}

ReviewNarrativeDraft {
    status               enum(ready, partial, failed)
    narrative?           ReviewNarrative
    model_version        string
    prompt_version       string
    output_schema_version string
    generation_errors    string[]
}

Agent 请求不携带授权用途的 user_id、目标 Repository、原始数据客户端或业务命令。Agent 输出是未受信任的草稿,必须经过 NarrativeValidator 后才能进入 ReviewReport

3.5 事实统计

GoalReviewFacts {
    total_task_count
    completed_task_count
    incomplete_task_count
    delayed_task_count
    completion_rate?
    duration_comparison[]
    difficulty_distribution[]
    incomplete_reason_distribution[]
    replan_operation_stats
}

PeriodicReviewFacts {
    schedule_stats
    todo_stats
    goal_task_stats
    daily_distribution[]
    active_goal_progress[]
    incomplete_reason_distribution[]
    replan_operation_stats
}

统计规则:

  1. 目标任务列表决定目标复盘的分母,不能使用反馈数量代替。
  2. 日程、待办和目标任务分别计算完成率,不生成无法解释的总体完成率。
  3. 分母为 0 时完成率返回 null,前端显示“—”。
  4. 未完成任务为 0 时不生成原因分布。
  5. 重排统计从用户操作原始记录计算,不读取重排 Agent 的解释文本。

3.6 文本与证据

EvidenceRef {
    evidence_id       string
    metric_key        string
    display_value     string
    sample_size       integer
    source_fact_ids   string[]
}

ReviewNarrative {
    headline          string
    summary           string
    claims: Array<{ text, evidence_ids[] }>
    suggestions: Array<{ title, action, evidence_ids[] }>
}
  • 每条结论和建议至少引用一个有效 evidence_id
  • LLM 不得输出证据中不存在的数字、时长、次数或日期。
  • 建议最多 3 条,不能评价用户人格、意志力或心理状态。
  • 文字校验失败时返回 partial,事实统计继续展示。

4. 调用流程

sequenceDiagram
    actor U as 用户
    participant FE as 前端交互与展示模块
    participant M as 母 AI 编排模块
    participant R as ReviewUseCase
    participant F as ReviewFactReader
    participant C as FactCalculator
    participant DB as ReviewRepository
    participant A as 复盘 Agent Adapter
    participant V as NarrativeValidator

    U->>FE: 请求复盘
    FE->>M: 用户输入 + 页面上下文
    M->>M: 确定目标或周期
    alt 范围不明确
        M-->>FE: 追问缺失信息
        FE-->>U: 请求补充
    else 范围明确
        M->>R: GenerateReviewCommand
        R->>F: 读取裁剪后的 FactSnapshot
        F-->>R: 事实 + source_versions
        R->>C: 计算 ReviewFacts + EvidenceCatalog
        C-->>R: 确定性事实和证据
        R->>DB: 保存 facts_revision 和生成任务
        R->>A: ReviewNarrativeRequest
        A-->>R: ReviewNarrativeDraft
        R->>V: 校验数字、证据和建议边界
        V-->>R: valid / validation_errors
        R->>DB: CAS 保存 ready / partial
        R-->>M: ReviewReportView
        M-->>FE: ReviewReportView
        FE-->>U: 展示复盘报告
    end
Loading

周期自动复盘由 Scheduler → ReviewUseCase 触发,不经过母 AI;报告首次进入可查看状态后,由复盘模块写入 ReviewReady Outbox 事件,提醒模块消费事件并发送通知。

5. 数据展示

5.1 目标复盘页面

顺序 内容 展示形式 显示条件
1 完成情况 进度环 + 指标卡 始终显示
2 预计与实际耗时 横向对比图 至少一项有实际耗时
3 难度分布 条形图 至少一条反馈包含难度
4 未完成原因 条形图 未完成任务大于 0
5 重排操作 触发、接受、拒绝指标卡 存在重排操作记录
6 复盘总结 文字卡片 readypartial 显示降级提示
7 后续建议 最多 3 条建议 存在有效建议

5.2 周期复盘页面

顺序 内容 展示形式 显示条件
1 日程、待办、目标任务统计 分组指标卡 始终显示
2 每日完成分布 柱状图 周报或月报
3 活跃目标进度 进度列表 周期内存在目标任务
4 未完成原因 条形图 存在完整目标任务反馈
5 重排操作 指标卡 存在重排操作记录
6 复盘总结 文字卡片 readypartial 显示降级提示
7 后续建议 最多 3 条建议 存在有效建议

5.3 页面状态

状态 页面行为
loading 显示正在整理复盘数据
ready 展示事实、文字和建议
partial 展示事实,文字区域提示暂不可用并允许重试
no_reviewable_feedback 显示暂无可复盘的执行记录
no_activity 显示该周期暂无活动,不生成空报告
error 显示可重试错误,不展示过期结果

6. 架构骨架代码

from __future__ import annotations

from dataclasses import dataclass
from datetime import datetime
from typing import Literal, Mapping, Protocol, Sequence


@dataclass(frozen=True)
class AuthenticatedUser:
    user_id: str
    session_id: str
    time_zone: str


@dataclass(frozen=True)
class GenerateGoalReviewCommand:
    request_id: str
    actor: AuthenticatedUser
    goal_id: str
    idempotency_key: str | None = None
    locale: str = "zh-CN"


@dataclass(frozen=True)
class FactSnapshot:
    snapshot_id: str
    user_id: str
    purpose: Literal["review"]
    read_scope: tuple[str, ...]
    facts: Mapping[str, object]
    source_versions: tuple[Mapping[str, object], ...]
    created_at: datetime
    expires_at: datetime


@dataclass(frozen=True)
class CalculatedReview:
    facts: Mapping[str, object]
    evidence_catalog: tuple[Mapping[str, object], ...]
    facts_schema_version: str


@dataclass(frozen=True)
class ReviewNarrativeRequest:
    request_id: str
    review_id: str
    review_type: Literal["goal", "periodic"]
    facts_revision: int
    facts_schema_version: str
    facts: Mapping[str, object]
    evidence_catalog: tuple[Mapping[str, object], ...]
    tone_policy: str
    locale: str
    prompt_version: str


@dataclass(frozen=True)
class ReviewNarrativeDraft:
    status: Literal["ready", "partial", "failed"]
    narrative: Mapping[str, object] | None
    model_version: str
    prompt_version: str
    output_schema_version: str
    generation_errors: tuple[str, ...] = ()


@dataclass(frozen=True)
class ReviewReport:
    review_id: str
    user_id: str
    review_type: Literal["goal", "periodic"]
    lifecycle: Literal["live", "finalized"]
    generation_status: Literal[
        "facts_ready", "generating", "ready", "partial", "failed"
    ]
    facts: Mapping[str, object]
    evidence_catalog: tuple[Mapping[str, object], ...]
    facts_revision: int
    revision: int


class ReviewFactReader(Protocol):
    async def goal_snapshot(
        self, command: GenerateGoalReviewCommand
    ) -> FactSnapshot: ...


class FactCalculator(Protocol):
    def calculate_goal(self, snapshot: FactSnapshot) -> CalculatedReview: ...


class ReviewNarrativeGenerator(Protocol):
    async def generate(
        self, request: ReviewNarrativeRequest
    ) -> ReviewNarrativeDraft: ...


class NarrativeValidator(Protocol):
    def validate(
        self,
        facts: Mapping[str, object],
        evidence_catalog: Sequence[Mapping[str, object]],
        draft: ReviewNarrativeDraft,
    ) -> tuple[bool, tuple[str, ...]]: ...


class ReviewRepository(Protocol):
    async def get(self, user_id: str, review_id: str) -> ReviewReport | None: ...
    async def save(self, report: ReviewReport) -> None: ...


class ReviewUnitOfWork(Protocol):
    reviews: ReviewRepository

    async def __aenter__(self) -> "ReviewUnitOfWork": ...
    async def __aexit__(self, exc_type, exc, tb) -> None: ...
    async def enqueue_generation(self, review_id: str, facts_revision: int) -> None: ...
    async def append_event(self, event: object) -> None: ...
    async def commit(self) -> None: ...


class ReviewApplicationService:
    def __init__(
        self,
        fact_reader: ReviewFactReader,
        calculator: FactCalculator,
        unit_of_work: ReviewUnitOfWork,
    ) -> None:
        self._fact_reader = fact_reader
        self._calculator = calculator
        self._uow = unit_of_work

    async def generate_goal_review(
        self, command: GenerateGoalReviewCommand
    ) -> ReviewReport:
        snapshot = await self._fact_reader.goal_snapshot(command)
        if snapshot.user_id != command.actor.user_id:
            raise ReviewScopeForbiddenError("fact snapshot user mismatch")
        if snapshot.purpose != "review":
            raise ReviewScopeInvalidError("invalid fact snapshot purpose")

        calculated = self._calculator.calculate_goal(snapshot)
        report = build_or_refresh_goal_report(command, snapshot, calculated)
        async with self._uow:
            await self._uow.reviews.save(report)
            await self._uow.enqueue_generation(
                report.review_id, report.facts_revision
            )
            await self._uow.commit()
        return report

骨架 PR 至少包含:

  • 真实 timeflow.review 包、核心实体、状态枚举和错误模型。
  • ReviewUseCaseReviewFactReaderReviewNarrativeGenerator、Repository、Job、Outbox Port。
  • GoalFactCalculatorPeriodicFactCalculatorNarrativeValidator
  • In-memory Repository、Mock FactReader 和 Mock Narrative Generator。
  • bootstrap.py 中从入站 UseCase 到出站 Adapter 的真实装配。
  • 至少一条“周期复盘 → 事实计算 → 保存报告 → Mock 文字 → ReviewReportView”的完整主干。
  • 目标复盘、周期复盘、并发版本、跨用户、文字降级和通知失败集成测试。

timeflow.review 中不得导入其他业务模块的 Repository、具体数据库客户端、具体 LLM SDK 或通知 SDK。Adapter 可以依赖外部 SDK,但只能实现复盘模块定义的 Port。

7. 技术风险与验收

7.1 技术风险

风险 处理方式
FactSnapshot 过大 ReviewFactReader 按用途、范围和字段白名单裁剪;不传无关画像与备注全文
FactSnapshot 缺失或过期 校验 snapshot_idexpires_atsource_versions;关键事实不足时不调用 Agent
统计口径不一致 固定分子、分母和排除状态,使用契约测试验证
LLM 编造数字或原因 事实与文字分离,使用证据 ID 和代码后置校验
事项标题提示注入 用户文本作为 JSON 数据传入,不拼接为系统指令
生成时间过长 先返回事实统计;文字生成失败时降级为 partial
旧 Agent 覆盖新事实 生成任务携带 facts_revision;保存文字时使用 compare-and-set
目标完成与刷新竞态 根据 Goal version 和报告 lifecycle 固化;finalized 后拒绝旧 revision
周期边界重复或遗漏 使用用户时区和半开区间 [start_at, end_at),建立周期唯一键
通知重复或失败 ReviewReady 使用 Outbox 和事件幂等键;通知失败不回滚报告

7.2 验收标准

  • 母 AI、API 和 Scheduler 只能通过 ReviewUseCase 进入复盘模块。
  • 母 AI 不组装 FactSnapshot、不保存报告、不负责周期调度。
  • timeflow.review 不导入 Scheduling、Goal、Feedback 的 Repository 或具体 Adapter。
  • ReviewFactReader 返回按当前用户、范围和 purpose=review 裁剪的 FactSnapshot。
  • 复盘 Agent 的依赖中不存在数据库客户端或业务 Repository。
  • 复盘 Agent 只接收事实和证据,不能重新计算统计或返回可执行业务命令。
  • 10 个目标任务完成 6 个时,完成率为 60%,不受反馈数量影响。
  • 日程、待办和目标任务分别统计完成率。
  • 只有一条未完成反馈时,不生成确定性原因归因。
  • LLM 返回无效数字或证据 ID 时,状态为 partial,事实仍可展示。
  • facts_revision 的 Agent 结果不能覆盖已刷新报告。
  • 同一周期并发生成最终只存在一份报告。
  • GoalCompleted 事件重放不会重复固化报告或发送通知。
  • Reminder 只能消费 ReviewReady,通知失败不改变报告状态。
  • 前端只消费 ReviewReportView,不重新计算统计数据。
  • 用户采纳建议时创建新的交互和候选,复盘模块不直接修改其他领域。
  • 骨架能启动并通过目标复盘、周期复盘、并发版本、跨用户和文字降级集成测试。

8. 函数英文名对照

所属模块 函数(中文名称) 函数英文名
复盘业务模块 生成或刷新目标复盘 generateGoalReview
复盘业务模块 固化目标复盘 finalizeGoalReview
复盘业务模块 生成周期复盘 generatePeriodicReview
复盘业务模块 查询复盘报告 getReviewReport
复盘业务模块 查询复盘列表 listReviewReports
复盘业务模块 重试复盘文字 retryReviewNarrative
复盘业务模块 更新周期配置 updatePeriodicReviewConfig
复盘业务模块 校验复盘文字 validateReviewNarrative
复盘业务模块 生成复盘展示模型 buildReviewReportView
复盘 Agent Adapter 生成复盘文字草稿 generateReviewNarrative
前端交互与展示模块 展示复盘报告 renderReviewReport
前端交互与展示模块 展示复盘列表 renderReviewList

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions