含易制毒计划安排后进入已安排待确认,确认通过后再占合同并生成链接/地磅;新增购买证/运输证主数据、产品行关联、余量校验与 OCR 配置,并停止跟踪 api_key/app.pid。 Co-authored-by: Cursor <cursoragent@cursor.com>
77 lines
2.3 KiB
Python
77 lines
2.3 KiB
Python
from datetime import date
|
|
|
|
from app.services.pl_purchase_cert_service import (
|
|
PURCHASE_CERT_WARN_TONS,
|
|
calc_cert_remain,
|
|
permit_nos_cover_purchase,
|
|
plate_allowed_on_transport,
|
|
product_name_matches,
|
|
validate_link_rules,
|
|
)
|
|
|
|
|
|
def test_calc_cert_remain():
|
|
assert calc_cert_remain(total=1700, occupied=152) == 1548.0
|
|
assert calc_cert_remain(total=100, occupied=100) == 0.0
|
|
|
|
|
|
def test_plate_allowed():
|
|
plates = "皖H57837、皖HA3690,皖LB1283"
|
|
assert plate_allowed_on_transport("皖H57837", plates) is True
|
|
assert plate_allowed_on_transport("皖A00000", plates) is False
|
|
|
|
|
|
def test_product_name_contains_match():
|
|
assert product_name_matches(plan_name="98% 工业硫酸", cert_name="硫酸") is True
|
|
assert product_name_matches(plan_name="液碱", cert_name="硫酸") is False
|
|
|
|
|
|
def test_permit_nos_cover():
|
|
assert permit_nos_cover_purchase("G1,G2", "G2") is True
|
|
assert permit_nos_cover_purchase("G1", "G9") is False
|
|
|
|
|
|
def test_validate_link_rules_ok():
|
|
err = validate_link_rules(
|
|
plan_qty=34,
|
|
purchase_remain=100,
|
|
transport_remain=50,
|
|
plan_plate="皖H57837",
|
|
transport_plates="皖H57837",
|
|
plan_product_name="硫酸",
|
|
purchase_product_name="硫酸",
|
|
purchase_cert_no="G34260485131004",
|
|
permit_cert_nos="G34260485131004",
|
|
purchase_valid_from=date(2026, 8, 13),
|
|
purchase_valid_to=date(2026, 9, 12),
|
|
transport_valid_from=date(2026, 8, 20),
|
|
transport_valid_to=date(2026, 11, 19),
|
|
today=date(2026, 8, 25),
|
|
)
|
|
assert err is None
|
|
|
|
|
|
def test_validate_link_rules_qty_fail():
|
|
err = validate_link_rules(
|
|
plan_qty=200,
|
|
purchase_remain=100,
|
|
transport_remain=50,
|
|
plan_plate="皖H57837",
|
|
transport_plates="皖H57837",
|
|
plan_product_name="硫酸",
|
|
purchase_product_name="硫酸",
|
|
purchase_cert_no="G1",
|
|
permit_cert_nos="G1",
|
|
purchase_valid_from=date(2026, 1, 1),
|
|
purchase_valid_to=date(2026, 12, 31),
|
|
transport_valid_from=date(2026, 1, 1),
|
|
transport_valid_to=date(2026, 12, 31),
|
|
today=date(2026, 6, 1),
|
|
)
|
|
assert err is not None
|
|
assert "购买证余量" in err or "运输证余量" in err
|
|
|
|
|
|
def test_warn_threshold_constant():
|
|
assert PURCHASE_CERT_WARN_TONS == 64
|