refactor(server): user_agent/steward/ocr 等服务重构并适配关联任务
- user_agent 拆分 application/locations/knowledge/response/review 四个子模块,接入申请位置语义与关联草稿分支 - steward planner/runtime/slot/plan_builder 决策链路重构,travel_reimbursement_calculator/orchestrator_expense_query 适配 - ocr/document_preview/document_intelligence/receipt_folder 复用预览与资产缓存,expense_claim_draft_flow/application_handoff 适配 - pyproject.toml 新增依赖,paddleocr bootstrap 脚本与 server_start.sh 调整 - 更新差旅/交通/通信等财务规则表,同步 document_intelligence/ocr/receipt_folder/user_agent 等测试
This commit is contained in:
@@ -85,6 +85,31 @@ def test_notification_state_service_persists_user_scoped_read_and_hidden_state()
|
||||
assert other_saved.states[0].hidden_at is None
|
||||
|
||||
|
||||
def test_notification_state_storage_ready_runs_once_per_database_bind(monkeypatch) -> None:
|
||||
with build_session() as db:
|
||||
service = NotificationStateService(db)
|
||||
user = CurrentUserContext(username="alice", name="Alice", role_codes=[], is_admin=False)
|
||||
calls: list[object] = []
|
||||
original_create_all = Base.metadata.create_all
|
||||
|
||||
def track_create_all(*args, **kwargs):
|
||||
calls.append(kwargs.get("bind"))
|
||||
return original_create_all(*args, **kwargs)
|
||||
|
||||
monkeypatch.setattr(Base.metadata, "create_all", track_create_all)
|
||||
|
||||
service.list_states(user)
|
||||
service.list_states(user)
|
||||
service.patch_states(
|
||||
NotificationStateBatchPatch(
|
||||
states=[NotificationStatePatch(notification_id="workbench:todo:EXP-002", read=True)]
|
||||
),
|
||||
user,
|
||||
)
|
||||
|
||||
assert len(calls) == 1
|
||||
|
||||
|
||||
def test_notification_state_endpoint_reads_and_updates_current_user_state() -> None:
|
||||
client = build_client()
|
||||
headers = {"x-auth-username": "alice", "x-auth-name": "Alice"}
|
||||
|
||||
Reference in New Issue
Block a user