test(server): 适配 A/R/D 紧凑单号格式

- approval_routing/service/user_agent 测试中报销单查询统一兼容 RE- 旧格式与 R+8 新格式,申请单单号断言改为短格式
- generate_claim_no 用例重命名为短前缀校验,正则改为 R[A-HJ-NP-Z2-9]{8}
- 同步更新差旅/交通/通信等财务规则表
This commit is contained in:
caoxiaozhu
2026-06-20 22:04:31 +08:00
parent 0cda750ff0
commit 8158716e23
9 changed files with 59 additions and 33 deletions

View File

@@ -5,7 +5,7 @@ from datetime import UTC, datetime
from decimal import Decimal
import pytest
from sqlalchemy import create_engine
from sqlalchemy import create_engine, or_
from sqlalchemy.orm import Session, sessionmaker
from sqlalchemy.pool import StaticPool
@@ -36,6 +36,15 @@ def build_session() -> Session:
return session_factory()
def reimbursement_claim_query(db: Session):
return db.query(ExpenseClaim).filter(
or_(
ExpenseClaim.claim_no.like("RE-%"),
ExpenseClaim.claim_no.like("R________"),
)
)
def _seed_budget_monitor_role(db: Session) -> Role:
role = Role(role_code="budget_monitor", name="预算管理员")
db.add(role)
@@ -149,7 +158,7 @@ def test_low_risk_application_skips_budget_manager_and_generates_draft() -> None
assert approved is not None
assert approved.status == "approved"
assert approved.approval_stage == APPLICATION_LINK_STATUS_STAGE
assert db.query(ExpenseClaim).filter(ExpenseClaim.claim_no.like("RE-%")).count() == 1
assert reimbursement_claim_query(db).count() == 1
assert any(
isinstance(flag, dict)
and flag.get("source") == "approval_routing"