feat(agent,report): 会话持久化与画像注入、报告反馈与预约留资——PM/开发双Agent迭代1-3
CI / lint / typecheck / import-linter / tests / secrets (push) Canceled after 0s

- agent: ag_conversation/ag_message 表(迁移0007),上下文组装注入最近报告画像摘要
  (report.profile.latest_profile_summary 经 apps 层闭包注入,同层不互调),历史带最近
  AGENT_HISTORY_TURNS=10 轮;POST/GET /agent/conversations 与消息历史接口
- agent 修复:ChatRequest.conversation_id 改 str(雪花ID超2^53,JS Number丢精度);
  _build_context 挪进 reserve commit 后同一 try,异常走 refund 兜底
- report: rp_feedback(维度反馈 upsert,认同率/修正率 SQL 可算,T-P3-21 最小版——
  L1 记忆未建,不回写结论)+ rp_reservation(预约留资幂等,T-P3-22,预约率口径
  行数/full_report.card_view 去重曝光,门槛≥8%),迁移0008
- 测试:全量 606 passed;ruff/mypy/lint-imports 全绿;E2E 真实 deepseek-v4-flash 验证
  画像注入与历史携带
This commit is contained in:
xsl
2026-09-11 21:50:58 +08:00
parent 00ef56b08b
commit 7bcbb8d40b
25 changed files with 1860 additions and 25 deletions
+26
View File
@@ -30,6 +30,12 @@ class DevTokenResponse(BaseModel):
class ChatRequest(BaseModel):
message: str = Field(min_length=1, max_length=2000)
conversation_id: str | None = Field(
default=None,
max_length=32,
description="会话 ID(字符串;雪花 ID 超 2^53,JS Number 会丢精度)。"
"缺省时新建会话并在响应中返回 (FR-AGT-09)",
)
request_key: str | None = Field(
default=None,
max_length=128,
@@ -37,6 +43,25 @@ class ChatRequest(BaseModel):
)
class ConversationResponse(BaseModel):
conversation_id: str = Field(description="雪花 ID 以字符串返回,避免 JS 精度丢失")
title: str
message_count: int
last_message_at: datetime | None
created_at: datetime
class ChatMessageItem(BaseModel):
message_id: str
role: str
content: str
model: str | None
call_id: str | None = Field(
description="assistant 消息关联的 ob_ai_call 行(复盘锚点);user 消息为 null"
)
created_at: datetime
class ChatUsage(BaseModel):
tokens_in: int
tokens_out: int
@@ -46,6 +71,7 @@ class ChatUsage(BaseModel):
class ChatResponse(BaseModel):
conversation_id: str
reply: str
provider: str
model: str