Files
Agent-System/internal/stream/types.go
T
WeiCHEN 1fc7d0d01f feat(export): 实现单次智能体回复导出、私密文档保存与隐私防泄露全套闭环 (Phase 0 - Phase 2)
- Phase 0: 实现服务端回复导出策略矩阵引擎 (replyexport.EvaluatePolicy)、数据库迁移 (2026-09-11-message-export-policy.sql)、SSE done 事件挂载与能力探测 API
- Phase 1: 构建前端 ReplyDocumentIR 语法树解析与渲染管道,支持 Markdown / DOCX 文件下载及带格式富文本剪贴板复制
- Phase 2: 实现私密自由文档 (freeform_documents) 领域服务、PostgreSQL 乐观锁版本管理、ACL 隐私隔离、一键共享与右侧栏编辑联动
- 专项修复:
  1. 修复后台 API 路由注册并加入双向拉取同步,确保私密保存实时进入我的私密列表
  2. 实现轻量回复专属 DOCX 生成与静默下载逻辑 (downloadDocxReply)
  3. 将 LaTeX 公式转为标准 MathML 矢量标记,支持粘贴到 Microsoft Word / WPS 自动识别为原生公式
2026-09-13 02:50:21 +00:00

136 lines
6.2 KiB
Go

package stream
import (
"time"
)
// EventType 定义流式事件类型
type EventType string
const (
EventPhase EventType = "phase" // 阶段性状态跃迁(组建小队、法规筛选、初稿撰写、门禁审核)
EventStatus EventType = "status" // 意图识别结果、成熟度状态机更新
EventSummary EventType = "summary" // 提炼的核心进展摘要(低认知负荷)
EventBriefing EventType = "briefing" // 贴身业务参谋决策锦囊(B轨赋能)
EventDelta EventType = "delta" // 对话自然语言逐字/逐句流式吐出
EventDetail EventType = "detail" // 详细推演草稿或思考链(按需显示,默认折叠)
EventDeliverable EventType = "deliverable" // A轨正式合规文档生成通知
EventGovernance EventType = "governance" // 受控文档治理与认领/变更提案拦截通知
EventError EventType = "error" // 运行异常警报
EventDone EventType = "done" // 会话流完成
)
// GovernancePayload 文档治理生命周期与认领变更载荷
type GovernancePayload struct {
DocID string `json:"doc_id"`
Action string `json:"action"` // claimed, proposal_required, proposal_decided, submitted_review, rejected, approved
CurrentState string `json:"current_state"` // drafting, reviewing, approving, approved
IsLocked bool `json:"is_locked"`
AuthorClaimed bool `json:"author_claimed"`
ProposalID string `json:"proposal_id,omitempty"`
ProposedChanges string `json:"proposed_changes,omitempty"`
ImpactSummary string `json:"impact_summary,omitempty"`
RiskSummary string `json:"risk_summary,omitempty"`
AuthorDecision string `json:"author_decision,omitempty"`
NotificationTitle string `json:"notification_title"` // 用户前台高亮简报标题
NotificationMsg string `json:"notification_msg"` // 用户前台高亮简报内容
}
// PhasePayload 阶段性任务状态更新载荷
type PhasePayload struct {
PhaseID string `json:"phase_id"` // 如 squad_assembly, knowledge_retrieval, step_executing, quality_gate
Message string `json:"message"` // 用户友好的自然语言进度说明
Role string `json:"role,omitempty"` // 角色 (如 regulatory, writer, leader)
StepIndex int `json:"step_index,omitempty"` // 当前步骤索引 (如 1)
TotalSteps int `json:"total_steps,omitempty"` // 总步骤数 (如 3)
Progress int `json:"progress,omitempty"` // 百分比估算 (0-100)
}
// StatusPayload 意图与状态机更新载荷
type StatusPayload struct {
Intent string `json:"intent,omitempty"`
Branch string `json:"branch,omitempty"`
CurrentStage string `json:"current_stage,omitempty"`
Patches map[string]string `json:"patches,omitempty"`
Message string `json:"message,omitempty"`
}
// SummaryPayload 核心进展摘要载荷 (低认知负荷)
type SummaryPayload struct {
Title string `json:"title"`
Content string `json:"content"`
MaturityScore int `json:"maturity_score,omitempty"`
MaturityLevel string `json:"maturity_level,omitempty"`
}
// DetailPayload 详细执行与推演过程载荷 (按需显示,默认折叠)
type DetailPayload struct {
Category string `json:"category"` // agent_thought, step_output, tool_call, log
StepID string `json:"step_id,omitempty"` // 步骤标识 (如 tasks/01_regulatory)
Role string `json:"role,omitempty"` // 对应角色
Title string `json:"title"` // 详情标题
Content string `json:"content"` // 完整推演正文或技术草稿
Collapsible bool `json:"collapsible"` // 客户端是否应当默认折叠显示
}
// DeliverablePayload A轨正式合规文档交付载荷
type DeliverablePayload struct {
TaskKey string `json:"task_key"`
Title string `json:"title"`
FilePath string `json:"file_path"`
WordCount int `json:"word_count,omitempty"`
QualityScore float64 `json:"quality_score,omitempty"`
}
// DonePayload 流结束载荷
type DonePayload struct {
SessionID string `json:"session_id,omitempty"`
DurationMs int64 `json:"duration_ms"`
TotalEvents int `json:"total_events"`
WorkspaceID string `json:"workspace_id,omitempty"` // P2: 任务工作区目录(供前端「继续任务」续跑)
MessageID int64 `json:"message_id,omitempty"`
ContentRevision int `json:"content_revision,omitempty"`
ContentSha256 string `json:"content_sha256,omitempty"`
ExportCapability any `json:"export_capability,omitempty"`
}
type ErrorClass string
const (
ErrorClassTransient ErrorClass = "transient"
ErrorClassResumable ErrorClass = "resumable"
ErrorClassFatal ErrorClass = "fatal"
ErrorClassCancelled ErrorClass = "cancelled"
)
type ErrorInfo struct {
UserMessage string `json:"user_message"`
Code string `json:"code"`
Class ErrorClass `json:"class"`
PhaseID string `json:"phase_id,omitempty"`
Upstream string `json:"upstream,omitempty"`
RequestID string `json:"request_id,omitempty"`
SessionID string `json:"session_id,omitempty"`
WorkspaceID string `json:"workspace_id,omitempty"`
Actions []string `json:"actions"`
}
// StreamEvent 统一多层级流式事件
type StreamEvent struct {
ID string `json:"id"`
Type EventType `json:"type"`
Timestamp time.Time `json:"timestamp"`
Phase *PhasePayload `json:"phase,omitempty"`
Status *StatusPayload `json:"status,omitempty"`
Summary *SummaryPayload `json:"summary,omitempty"`
Briefing any `json:"briefing,omitempty"`
Detail *DetailPayload `json:"detail,omitempty"`
Delta string `json:"delta,omitempty"`
Deliverable *DeliverablePayload `json:"deliverable,omitempty"`
Governance *GovernancePayload `json:"governance,omitempty"`
Error string `json:"error,omitempty"`
ErrorInfo *ErrorInfo `json:"error_info,omitempty"`
Done *DonePayload `json:"done,omitempty"`
}