Код вакансии на kadrout
Ответ нейросети
12 марта 2026 16:06
Поскольку не указаны язык программирования и точные требования к формату кода вакансии, предложу понятное и практичное решение на Python. Формат кода возьмём такой:
KD-<КОМПАНИЯ>-
- KD — префикс площадки (Kadrout).
- COMPANY — код компании (буквы и цифры, без пробелов, upper-case).
- YYYYMMDD — дата публикации вакансии.
- SEQ — последовательность за день (4 цифры, ведущие нули).
Такой формат позволяет быстро проверить валидность кода и легко разобрать его на составляющие.
Что будет в решении (пошагово):
- Валидация входных данных: проверяем, что company_code допустим (только A-Z и 0-9, без пробелов).
- Обеспечение даты: если дата не передана, берем сегодня.
- Формирование кода: KD-
-YYYYMMDD- с seq как 4-значным числом. - Парсинг кода: извлекаем части обратно в удобную структуру.
- Валидация формата кода через регулярное выражение.
Готовый пример на Python
- Генерация кода вакансии
- Вход: company_code (строка), date (datetime.date или None), seq (целое число или None)
- Выход: строка вида KD-ACME-20260312-0007
- Парсинг кода
- Вход: код вакансии
- Выход: словарь с полями prefix, company_code, date (date), seq (int)
- Валидация формата
- Вход: код
- Выход: True/False
Пример кода:
import re from datetime import date, datetime
Формат: KD---
_PREFIX = "KD" _VALID_PATTERN = re.compile(r"^([A-Z0-9]+)-([A-Z0-9]+)-([0-9]{8})-([0-9]{4})$")
def generate_job_code(company_code: str, dt: date = None, seq: int = 1) -> str: """ Сгенерировать код вакансии для Kadrout. - company_code: код компании (разрешены A-Z0-9, без пробелов, регистр не обязательно). - dt: дата в формате date; если None, взять today's date. - seq: последовательность за день; по умолчанию 1. """ if not isinstance(company_code, str) or not company_code.strip(): raise ValueError("company_code должен быть непустой строкой") code = company_code.upper().strip() if not re.match(r"^[A-Z0-9]+$", code): raise ValueError("company_code должен состоять только из A-Z и 0-9")
dt = dt or date.today()
if not isinstance(dt, date):
raise ValueError("dt должен быть объектом date или None")
if not isinstance(seq, int) or seq < 0:
raise ValueError("seq должен быть неотрицательным целым числом")
return f"{_PREFIX}-{code}-{dt:%Y%m%d}-{seq:04d}"
def parse_job_code(code: str) -> dict: """ Разбор кода вакансии. Возвращает словарь: {'prefix': 'KD', 'company_code': 'ACME', 'date': date, 'seq': int} """ m = _VALID_PATTERN.match(code) if not m: raise ValueError("Неправильный формат кода вакансии")
# Разбиваем на части: префикс-ко-мп-датa-seq
company_and_prefix, company_code, date_str, seq_str = code.split('-', 3)
# date_str — часть с YYYYMMDD
parsed_date = datetime.strptime(date_str, "%Y%m%d").date()
return {
"prefix": code.split('-', 1)[0], # например "KD"
"company_code": company_code,
"date": parsed_date,
"seq": int(seq_str)
}
def is_valid_job_code(code: str) -> bool:
"""Проверка: соответствует ли код формату KD-
Примеры использования
if name == "main": # Генерация code1 = generate_job_code("ACME", dt=date(2026, 3, 12), seq=7) print("Сгенерированный код:", code1) # KD-ACME-20260312-0007
# Разбор
info = parse_job_code(code1)
print("Разбор кода:")
print(info)
# Валидация
print("Валидность:", is_valid_job_code(code1)) # True
# Пример неверного кода
try:
parse_job_code("KD-ACME-202603-0007")
except ValueError as e:
print("Ошибка разбора:", e)
Пояснения к коду и основным моментам
- Формат KD-
-YYYYMMDD- выбран за счёт простоты и удобства парсинга. Он обеспечивает: - Быстрый доступ к дате и коду компании.
- Возможность нумерации по дням (SEQ можно увеличивать внутри дня).
- Легкую проверку валидности через регулярное выражение.
- company_code приводим к верхнему регистру и допускаем только латинские буквы и цифры (без пробелов и спецсимволов).
- seq по умолчанию можно начинать с 1; на практике для реального применения шаг счётчика обычно хранится в БД или файле и увеличивается при каждой новой вакансии за день.
- Парсинг возвращает удобную структуру для дальнейшей обработки (дата как объект date, seq как int).
Если вы получите уточнения
- Какой формат желательнее именно на вашей задаче (другой разделитель, другой набор полей и пр.)?
- Какой язык программирования вы используете на экзамене?
- Нужно ли интегрировать с реальным хранением последовательности (база данных, файл) или достаточно чисто статическое генератор-валидатор?
Я могу адаптировать решение под нужный формат и под выбранный язык, а также дать более простые/более сложные варианты (например, без даты, с префиксом компании более длинным, или с уникальным идентификатором вместо SEQ).
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



