数据库与模型:新增多版迁移(章节证据快照、对话血缘、记忆事实/时间线 lineage 等),把「成稿 ↔ 对话/记忆」的溯源信息落到表结构里。 业务链路:会话与 WS、回忆录/故事流水线、记忆写入与 enrichment 等跟着接上线索与快照;新增章节证据快照与评测侧 EvalTraceService 等模块,方便组评审用的证据包。 内部评测:自动化 run 与手工 memoir 评审共用可追溯证据;rubric/ judge 相关脚本与文档有配套调整。 app-eval-web:Memoir/实验详情里能展开看证据摘要与 evidence_trace(含对话轮次 id);Vite 代理与 development.sh 注入的 API 端口与当前默认内部评测端口一致,避免改端口后页面连错服务。 工程杂项:GitHub Actions / 仓库说明有更新;各适配器与支付/配额/plan 等多处为小改动或跟随主改动的收尾;新增/扩充了?
25 lines
705 B
Python
25 lines
705 B
Python
"""
|
||
HTTP 中间件:request_id 注入。
|
||
"""
|
||
|
||
import uuid
|
||
|
||
from starlette.middleware.base import BaseHTTPMiddleware
|
||
from starlette.requests import Request
|
||
|
||
from app.core.logging import logger
|
||
|
||
|
||
class RequestIdMiddleware(BaseHTTPMiddleware):
|
||
"""Inject request_id into request.state and response headers, bind to loguru context."""
|
||
|
||
async def dispatch(self, request: Request, call_next):
|
||
request_id = request.headers.get("X-Request-ID") or str(uuid.uuid4())
|
||
request.state.request_id = request_id
|
||
|
||
with logger.contextualize(request_id=request_id):
|
||
response = await call_next(request)
|
||
|
||
response.headers["X-Request-ID"] = request_id
|
||
return response
|