feat(memory): add WritePipeline and MemoryService facade
Introduce a layered pipeline architecture for the memory write flow: - WritePipeline: orchestrates preprocess → extract → store → cluster → summarize with deadlock retry, resource cleanup, and pilot-run support - MemoryService: facade that delegates to WritePipeline, placeholder methods for read/forget/reflect - BearLogger: structured step-level logging with perf threshold alerts - Shadow pipeline integration in MemoryAgentService (env-gated pilot run) Also includes: - Fix deprecated SQLAlchemy declarative_base import - Extend Neo4j Entity fulltext index to cover description and aliases - Migrate Pydantic schemas to v2 (ConfigDict, field_validator)
This commit is contained in:
@@ -4,7 +4,7 @@ Order Schema
|
||||
Defines request and response models for order operations.
|
||||
"""
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
from typing import Any, Optional
|
||||
|
||||
|
||||
@@ -17,8 +17,8 @@ class CreateOrderRequest(BaseModel):
|
||||
customer_email: Optional[str] = Field(None, description="Customer email")
|
||||
notes: Optional[str] = Field(None, description="Order notes")
|
||||
|
||||
class Config:
|
||||
json_schema_extra = {
|
||||
model_config = ConfigDict(
|
||||
json_schema_extra={
|
||||
"example": {
|
||||
"product_id": "PROD-001",
|
||||
"quantity": 2,
|
||||
@@ -27,6 +27,7 @@ class CreateOrderRequest(BaseModel):
|
||||
"notes": "Please deliver before 5pm"
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
class OrderResponse(BaseModel):
|
||||
@@ -40,8 +41,8 @@ class OrderResponse(BaseModel):
|
||||
created_at: Optional[str] = Field(None, description="Creation timestamp")
|
||||
message: Optional[str] = Field(None, description="Response message")
|
||||
|
||||
class Config:
|
||||
json_schema_extra = {
|
||||
model_config = ConfigDict(
|
||||
json_schema_extra={
|
||||
"example": {
|
||||
"order_id": "ORD-20231224-001",
|
||||
"status": "pending",
|
||||
@@ -52,6 +53,7 @@ class OrderResponse(BaseModel):
|
||||
"message": "Order created successfully"
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
class ExternalOrderResponse(BaseModel):
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from dataclasses import field
|
||||
from pydantic import BaseModel, EmailStr, Field, field_validator, validator, ConfigDict
|
||||
from pydantic import BaseModel, EmailStr, Field, field_validator, ConfigDict
|
||||
from typing import Optional, List
|
||||
import datetime
|
||||
import uuid
|
||||
@@ -90,7 +90,8 @@ class User(UserBase):
|
||||
permissions: Optional[List[str]] = None # 用户权限列表,由 external_source 的 permissions 控制
|
||||
|
||||
# 将 datetime 转换为毫秒时间戳
|
||||
@validator("created_at", pre=True)
|
||||
@field_validator("created_at", mode="before")
|
||||
@classmethod
|
||||
def _created_at_to_ms(cls, v):
|
||||
if isinstance(v, datetime.datetime):
|
||||
return int(v.timestamp() * 1000)
|
||||
|
||||
Reference in New Issue
Block a user