fix: 修复扇区推断及按CGI更新导入

This commit is contained in:
2026-08-26 17:08:19 +08:00
parent e007776093
commit b6cf0e61e7
6 changed files with 385 additions and 17 deletions
+33
View File
@@ -0,0 +1,33 @@
import unittest
from app.database import _deduplicate_rows_by_key
class SectorImportTests(unittest.TestCase):
def test_duplicate_cgi_uses_last_uploaded_row(self):
columns = ["CGI", "扇区", "物理站"]
rows = [
("460-00-1-1", "旧扇区", "旧物理站"),
("460-00-2-1", "新增扇区", "新增物理站"),
("460-00-1-1", "新扇区", "新物理站"),
]
result, duplicate_count = _deduplicate_rows_by_key(columns, rows, "CGI")
self.assertEqual(duplicate_count, 1)
self.assertEqual(result, [
("460-00-1-1", "新扇区", "新物理站"),
("460-00-2-1", "新增扇区", "新增物理站"),
])
def test_blank_cgi_is_rejected(self):
with self.assertRaisesRegex(ValueError, "第 2 行 CGI 为空"):
_deduplicate_rows_by_key(["CGI", "扇区"], [(" ", "扇区1")], "CGI")
def test_missing_cgi_column_is_rejected(self):
with self.assertRaisesRegex(ValueError, "缺少业务键字段: CGI"):
_deduplicate_rows_by_key(["扇区"], [("扇区1",)], "CGI")
if __name__ == "__main__":
unittest.main()