제 5 장

용병 구인 기능 개발

본 장은 팀 운영자가 부족한 인원을 채우는 경로 전체를 다룬다. 공고를 올리는 시점부터 참여가 확정되고 경기 후 기록이 남기까지가 범위이며, 확정된 참여자의 실력을 어떻게 검증하는지는 제 6 장에서 기술한다.

1) 모집 공고 등록

공고 항목

운영자가 입력하는 항목은 아래와 같다. 매칭에 직접 쓰이는 항목은 필수로 두어, 조건 없는 공고가 올라오는 것을 막는다.

항목 필수 설명
종목 ● 〔확인 필요: 1차 지원 종목 범위〕
일시 ● 경기 시작·종료 시각
장소 ● 구장명과 좌표. 좌표는 매칭의 거리 계산에 쓴다
모집 인원 ● 포지션별 인원
필요 포지션 ● 종목별 포지션 목록에서 선택
요구 실력대 ● 등급 구간으로 지정
마감 시각 ● 미지정 시 경기 시작 〔확인 필요: 기본 마감 여유〕 전으로 자동 설정
참가비 ○ 1인 기준 금액
비고 ○ 구장 조건, 유니폼 색상 등

등록 처리 흐름

  1. 운영자가 공고를 작성한다.
  2. 서버가 유효성 규칙을 검사한다. 하나라도 어긋나면 등록을 거부하고 사유를 함께 반환한다.
  3. 검사를 통과하면 공고를 모집중 상태로 공개하고, 조건에 맞는 후보에게 알림을 보낸다.

유효성 규칙은 다음과 같다.

  • 경기 일시는 현재 시각 이후여야 한다.
  • 마감 시각은 경기 시작 시각보다 앞서야 한다.
  • 포지션별 모집 인원의 합은 1명 이상이어야 한다.
  • 동일 운영자가 같은 시간대에 올린 공고와 겹치지 않아야 한다.

공고 상태

공고는 아래 상태를 순서대로 지난다. 상태 전이는 서버가 소유하며, 클라이언트가 직접 상태를 바꾸지 못한다.

상태 진입 조건 다음 상태
모집중 등록 완료 마감, 취소
마감 마감 시각 도달 또는 정원 충족 확정, 취소
확정 운영자가 참여자를 확정 종료, 취소
종료 경기 종료 시각 경과 —
취소 운영자 취소 또는 정원 미달 —

종료로 넘어간 공고는 경기 기록 입력과 영상 업로드 대상이 되며, 업로드된 영상의 색인이 6장의 스탯 갱신 입력이 된다.

2) 지원 및 자동 매칭

지원 접수

지원 시점에 두 가지를 확인한다. 같은 공고에 대한 중복 지원을 막고, 지원자가 이미 확정된 다른 경기와 시간이 겹치는지 검사한다. 겹치면 지원을 거부한다. 이 검사가 없으면 한 명이 여러 경기에 확정되어 노쇼가 구조적으로 발생한다.

매칭 에이전트 호출

지원이 접수될 때마다 매칭을 다시 계산하지 않는다. 지원자가 들어올 때마다 모델을 호출하면 비용과 지연이 지원자 수에 비례해 늘어나기 때문이다. 대신 아래 두 시점에만 호출한다.

  • 운영자가 후보 목록을 열람할 때
  • 마감 시각에 도달했을 때

에이전트에 넘기는 입력은 공고 조건과 지원자 목록이며, 받는 출력은 순위가 매겨진 추천 목록과 각 추천의 근거 문장이다. 에이전트 구성과 도구 스키마는 제 4 장에 기술한다.

순위 산출 요소

요소 방향 근거
포지션 적합도 높을수록 우선 공고가 지정한 포지션 수행 가능 여부
실력대 근접도 가까울수록 우선 경기 수준의 편차를 줄인다
이동 거리 가까울수록 우선 좌표 간 직선거리
신뢰도 높을수록 우선 영상 근거가 쌓인 스탯을 우선한다 (6장)
노쇼 이력 적을수록 우선 최근 〔확인 필요: 집계 기간〕 이내 이력

가중치는 〔확인 필요: 요소별 가중치 확정〕이며, 시험 결과에 따라 조정한 값을 제 7 장에 기록한다.

후보 부족 시 완화

조건을 모두 만족하는 후보가 모집 인원에 미치지 못하면, 아래 순서로 조건을 한 단계씩 완화하고 완화 사실을 운영자에게 함께 표시한다. 경기가 무산되는 것보다 조건을 낮춰 성사시키는 편이 낫지만, 무엇을 양보했는지는 반드시 드러내야 한다.

  1. 실력대를 인접 등급까지 확대한다.
  2. 이동 거리 상한을 확대한다.
  3. 부포지션 수행 가능자를 포함한다.

최종 선택은 운영자가 한다

에이전트는 순위와 근거만 제시하고, 참여자 확정은 운영자가 직접 누른다. 매칭 근거를 문장으로 함께 내보내는 것도 운영자가 판단을 검토할 수 있게 하기 위해서다. 자동 확정을 넣지 않은 이유는 잘못된 매칭의 책임 소재가 불분명해지고, 운영자가 아는 팀 사정을 반영할 방법이 사라지기 때문이다.

3) 참여 확정 및 노쇼 관리

확정과 취소

운영자가 참여자를 확정하면 해당 지원자에게 확정 알림을 보내고, 선택되지 않은 지원자에게는 마감 결과를 알린다. 확정된 참여자는 경기 시작 〔확인 필요: 취소 허용 기한〕 전까지 취소할 수 있으며, 취소가 발생하면 다음 순위 후보를 대기자로 승격시켜 운영자에게 알린다.

노쇼 판정

노쇼는 확정된 참여자가 경기에 나타나지 않은 경우를 말하며, 운영자의 신고와 함께 기록한다. 판정 기준과 제재 단계는 아래와 같다.

구분 기준 조치
사전 취소 허용 기한 이전 취소 이력만 기록
지각 취소 허용 기한 이후 취소 노쇼 0.5회로 집계
노쇼 무통보 불참 노쇼 1회로 집계
제재 〔확인 필요: 누적 기준〕 일정 기간 지원 제한

운영자의 일방적 신고만으로 제재가 확정되지 않도록, 신고에 대한 참여자의 이의 제기 경로를 둔다. 〔확인 필요: 이의 처리 주체와 절차〕

경기 기록 연계

경기가 종료 상태로 넘어가면 참여자별 기록 입력과 경기 영상 업로드를 요청한다. 결과는 두 곳으로 흘러간다. 하나는 참여 이력(노쇼 포함)으로 다음 매칭의 순위에 반영되고, 다른 하나는 영상 색인을 거쳐 제 6 장의 검증 입력이 된다.

영상 업로드는 강제하지 않는다. 다만 영상이 없는 경기는 근거가 남지 않아 참여자의 스탯이 갱신되지 않으므로, 검증된 스탯을 원하는 이용자일수록 업로드된 경기를 선호하게 된다.