From 29abc79699592a9f779e19121ca9ec852befb397 Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Mon, 31 Aug 2026 14:36:46 +0800 Subject: [PATCH] feat(backend): require conclusion on production work order complete Co-authored-by: Cursor --- backend/app/schemas/production_work_order.py | 1 + .../tests/test_production_cascade_complete.py | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 backend/tests/test_production_cascade_complete.py diff --git a/backend/app/schemas/production_work_order.py b/backend/app/schemas/production_work_order.py index 742c49fb..2b6ac5bd 100644 --- a/backend/app/schemas/production_work_order.py +++ b/backend/app/schemas/production_work_order.py @@ -28,6 +28,7 @@ class ProductionWorkOrderListQuery(BaseModel): class ProductionWorkOrderComplete(BaseModel): + conclusion: str = Field(..., description="生产结论 cg=成功 sb=失败,写入本次级联完成的任务") remark: Optional[str] = None diff --git a/backend/tests/test_production_cascade_complete.py b/backend/tests/test_production_cascade_complete.py new file mode 100644 index 00000000..0deae8d5 --- /dev/null +++ b/backend/tests/test_production_cascade_complete.py @@ -0,0 +1,23 @@ +"""生产完成任务/工单状态级联。""" +import unittest +from datetime import datetime +from unittest.mock import MagicMock, patch + +from pydantic import ValidationError + +from app.schemas.production_work_order import ProductionWorkOrderComplete + + +class TestProductionWorkOrderCompleteSchema(unittest.TestCase): + def test_requires_conclusion(self): + with self.assertRaises(ValidationError): + ProductionWorkOrderComplete() + + def test_accepts_cg_and_remark(self): + body = ProductionWorkOrderComplete(conclusion="cg", remark="ok") + self.assertEqual(body.conclusion, "cg") + self.assertEqual(body.remark, "ok") + + +if __name__ == "__main__": + unittest.main()