更新登录页及优化相关功能

This commit is contained in:
焦龙言
2026-10-08 14:13:05 +08:00
parent 9a14b692e3
commit 56e646bcc1
139 changed files with 77587 additions and 811 deletions
@@ -52,6 +52,7 @@ from module_business.entity.vo.operation_vo import (
ShipmentScanQueryModel,
ShipmentUpdateModel,
)
from module_business.entity.vo.shipment_label_vo import ShipmentLabelModel
from module_business.service import shipment_service as shipment_service_module
from module_business.service.access_service import AccessService
from module_business.service.shipment_service import ShipmentService
@@ -395,12 +396,12 @@ class ShipmentControllerContractTest(unittest.TestCase):
@staticmethod
def _routes() -> dict[tuple[str, str], APIRoute]:
return {
(route.path, next(iter(route.methods))): route
(route.path_format, next(iter(route.methods))): route
for route in shipment_controller_module.shipment_controller.routes
if isinstance(route, APIRoute)
}
def test_openapi_has_nine_operations_aliases_and_response_models(self) -> None:
def test_openapi_has_ten_operations_aliases_and_response_models(self) -> None:
app = FastAPI()
app.include_router(shipment_controller_module.shipment_controller)
schema = app.openapi()
@@ -410,6 +411,7 @@ class ShipmentControllerContractTest(unittest.TestCase):
('/business/shipment/site-options', 'get'),
('/business/shipment/scan/{qr_token}', 'get'),
('/business/shipment/{shipment_id}', 'get'),
('/business/shipment/{shipment_id}/labels', 'get'),
('/business/shipment', 'post'),
('/business/shipment', 'put'),
('/business/shipment/{shipment_ids}', 'delete'),
@@ -437,6 +439,10 @@ class ShipmentControllerContractTest(unittest.TestCase):
DataResponseModel[ShipmentModel],
routes[('/business/shipment/{shipment_id}', 'GET')].response_model,
)
self.assertEqual(
DataResponseModel[list[ShipmentLabelModel]],
routes[('/business/shipment/{shipment_id}/labels', 'GET')].response_model,
)
for key in (
('/business/shipment', 'POST'),
('/business/shipment', 'PUT'),
@@ -446,7 +452,7 @@ class ShipmentControllerContractTest(unittest.TestCase):
self.assertEqual(ResponseBaseModel, routes[key].response_model)
def test_static_options_and_scan_precede_dynamic_detail(self) -> None:
paths = [route.path for route in shipment_controller_module.shipment_controller.routes]
paths = [route.path_format for route in shipment_controller_module.shipment_controller.routes]
detail_index = paths.index('/business/shipment/{shipment_id}')
for static_path in (
'/business/shipment/warehouse-options',
@@ -462,6 +468,7 @@ class ShipmentControllerContractTest(unittest.TestCase):
('/business/shipment/site-options', 'GET'): 'business:shipment:query',
('/business/shipment/scan/{qr_token}', 'GET'): 'business:shipment:query',
('/business/shipment/{shipment_id}', 'GET'): 'business:shipment:query',
('/business/shipment/{shipment_id}/labels', 'GET'): 'business:shipment:query',
('/business/shipment', 'POST'): 'business:shipment:add',
('/business/shipment', 'PUT'): 'business:shipment:edit',
('/business/shipment/{shipment_ids}', 'DELETE'): 'business:shipment:list',
@@ -1822,8 +1829,8 @@ class ShipmentConfirmServiceTest(unittest.IsolatedAsyncioTestCase):
'warehouse-mapping-lock',
'site-lock',
'site-mapping-lock',
'transition-FILLED_IN_WAREHOUSE-AT_SITE_UNUSED',
'transition-FILLED_IN_WAREHOUSE-AT_SITE_UNUSED',
'transition-FILLED_IN_WAREHOUSE-IN_TRANSIT',
'transition-FILLED_IN_WAREHOUSE-IN_TRANSIT',
'update-order',
'event-2',
'event-5',
@@ -1843,6 +1850,9 @@ class ShipmentConfirmServiceTest(unittest.IsolatedAsyncioTestCase):
self.assertEqual(self.request_hash, shipment.confirm_request_hash)
self.assertEqual(7, shipment.confirmed_by)
self.assertEqual(self.fixed_time, shipment.confirmed_at)
self.assertEqual('PENDING', shipment.receipt_state)
self.assertIsNone(shipment.received_by)
self.assertIsNone(shipment.received_at)
snapshots = {item.pallet_id: (item.active_filling_id, item.package_qty) for item in shipment.items}
self.assertEqual({2: (102, 8), 5: (105, 13)}, snapshots)
for inventory, original_version, remaining in zip(
@@ -1851,7 +1861,8 @@ class ShipmentConfirmServiceTest(unittest.IsolatedAsyncioTestCase):
(8, 13),
strict=True,
):
self.assertEqual('AT_SITE_UNUSED', inventory.flow_state)
self.assertEqual('IN_TRANSIT', inventory.flow_state)
self.assertIsNone(inventory.site_arrived_at)
self.assertIsNone(inventory.warehouse_id)
self.assertEqual(9, inventory.site_id)
self.assertIsNone(inventory.current_line_id)
@@ -1865,7 +1876,7 @@ class ShipmentConfirmServiceTest(unittest.IsolatedAsyncioTestCase):
self.assertEqual('SHIPMENT', event.source_type)
self.assertEqual(12, event.source_id)
self.assertEqual('FILLED_IN_WAREHOUSE', event.before_state)
self.assertEqual('AT_SITE_UNUSED', event.after_state)
self.assertEqual('IN_TRANSIT', event.after_state)
self.assertEqual(7, event.before_warehouse_id)
self.assertIsNone(event.before_site_id)
self.assertIsNone(event.after_warehouse_id)