20 lines
690 B
Python
20 lines
690 B
Python
import random
|
|
from datetime import datetime
|
|
|
|
MONTH_CODES = "ABCDEFGHIJKL"
|
|
SAFE_CHARS = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789" # No 0, O, 1, I — avoids label confusion
|
|
|
|
|
|
def generate_serial(board_type: str, board_version: str) -> str:
|
|
"""Generate a serial number in the format PV-YYMMM-BBTTR-XXXXX.
|
|
|
|
board_type: 2-char uppercase code, e.g. 'VS', 'VP', 'VX'
|
|
board_version: 2-char zero-padded version, e.g. '01'
|
|
"""
|
|
now = datetime.utcnow()
|
|
year = now.strftime("%y")
|
|
month = MONTH_CODES[now.month - 1]
|
|
day = now.strftime("%d")
|
|
suffix = "".join(random.choices(SAFE_CHARS, k=5))
|
|
return f"PV-{year}{month}{day}-{board_type.upper()}{board_version}R-{suffix}"
|