Sobes.tech
Senior
32

Как обрабатывать закрытие вакансии — она должна архивироваться на всех работных сайтах?

Сұралған компаниялар
OZONOZON

AI-дан жауап

sobes.tech AI

При закрытии вакансии важно обеспечить, чтобы она была корректно удалена или архивирована на всех площадках, где она размещена. Обычно процесс выглядит так:

  1. В системе управления вакансиями меняется статус вакансии на "закрыта".
  2. Отправляются API-запросы или используются интеграции с работными сайтами для удаления или архивирования вакансии.
  3. Проверяется успешность операций на каждой площадке, с логированием ошибок.

В Go это можно реализовать через последовательные или параллельные HTTP-запросы с обработкой ответов и повторными попытками в случае ошибок. Важно учитывать, что разные сайты могут иметь разные API и требования к аутентификации.

Пример упрощённого кода для отправки запроса на архивирование вакансии:

package main

import (
    "bytes"
    "fmt"
    "net/http"
)

func archiveVacancyOnSite(vacancyID string, apiURL string, token string) error {
    reqBody := []byte(fmt.Sprintf(`{"vacancy_id":"%s","action":"archive"}`, vacancyID))
    req, err := http.NewRequest("POST", apiURL, bytes.NewBuffer(reqBody))
    if err != nil {
        return err
    }
    req.Header.Set("Authorization", "Bearer "+token)
    req.Header.Set("Content-Type", "application/json")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        return err
    }
    defer resp.Body.Close()

    if resp.StatusCode != http.StatusOK {
        return fmt.Errorf("failed to archive vacancy, status: %s", resp.Status)
    }
    return nil
}

Таким образом, закрытие вакансии сопровождается синхронизацией статуса на всех площадках.