import { api, apiFetchBlob } from '../../api/client'; import type { ConsolidationCreate, VersionStatusUpdate } from '../../types/api'; import type { LockOut } from '../../types/consolidations/common_types'; import type { IConsolidation } from '../../types/consolidations/consolidations'; import type { ChecklistBackendShape, VersionCard } from '../../types/consolidations/version_members'; /** Список консолидаций ГК; `in_work_only` — серверный фильтр «Только в работе» (по умолчанию false). */ export const getConsolidations = (groupId: string, in_work_only: boolean) => api.get(`/company-groups/${groupId}/consolidations`, { in_work_only }); export const getVersionCard = (versionId: string) => api.get(`/consolidations/versions/${versionId}`); export const createConsolidation = (body: ConsolidationCreate) => api.post('/consolidations', body); export const downloadChecklistCsv = (versionId: string) => apiFetchBlob(`/consolidations/versions/${versionId}/checklist?format=csv`); export const getChecklist = (versionId: string) => api.get(`/consolidations/versions/${versionId}/checklist`); /** «Взять в работу»: 201 — взята, 200 — уже ваша; чужая — 409 `LOCKED_BY_OTHER` (перехват — с `takeover_reason`). */ export const lockVersion = (versionId: string, reason?: string | null) => api.post(`/consolidations/versions/${versionId}/lock`, reason ? { takeover_reason: reason } : {}); /** Ручная смена статуса (гайд §5.7): нужна своя блокировка; ответ — карточка версии с новым статусом. */ export const updateStatus = (versionId: string, body: VersionStatusUpdate) => api.post(`/consolidations/versions/${versionId}/status`, body);