补充设备初始化留言与OTA后端能力

This commit is contained in:
stu2not
2026-05-08 16:56:29 +08:00
parent 1aaaf4747a
commit 9f38965a79
14 changed files with 848 additions and 28 deletions

View File

@@ -21,7 +21,7 @@ from qrcode.main import QRCode
DEFAULT_OUTPUT_DIR = SCRIPT_DIR.parent / "output" / "qr"
SERIAL_PREFIX = "TalkingQ-"
SERIAL_PREFIXES = ("TalkingQ-", "TQ_")
SAFE_NAME_RE = re.compile(r"[^A-Za-z0-9._-]+")
@@ -32,7 +32,7 @@ def parse_args() -> argparse.Namespace:
parser.add_argument("device_id", help="Device ID written into the QR payload.")
parser.add_argument(
"serial_number",
help=f"Device serial number. It must start with {SERIAL_PREFIX!r}.",
help=f"Device serial number. It must start with one of {SERIAL_PREFIXES!r}.",
)
parser.add_argument(
"-o",
@@ -56,8 +56,8 @@ def validate_inputs(device_id: str, serial_number: str, box_size: int) -> tuple[
raise ValueError("device_id cannot be empty")
if not normalized_serial_number:
raise ValueError("serial_number cannot be empty")
if not normalized_serial_number.startswith(SERIAL_PREFIX):
raise ValueError(f"serial_number must start with {SERIAL_PREFIX}")
if not normalized_serial_number.startswith(SERIAL_PREFIXES):
raise ValueError(f"serial_number must start with one of {SERIAL_PREFIXES}")
if box_size <= 0:
raise ValueError("box_size must be greater than 0")