Improve AI logic

This commit is contained in:
Urtzi Alfaro
2025-11-05 13:34:56 +01:00
parent 5c87fbcf48
commit 394ad3aea4
218 changed files with 30627 additions and 7658 deletions

View File

@@ -82,7 +82,7 @@ export class ProcurementService {
/**
* Auto-generate procurement plan from forecast data (Orchestrator integration)
* POST /api/v1/tenants/{tenant_id}/procurement/auto-generate
* POST /api/v1/tenants/{tenant_id}/procurement/operations/auto-generate
*
* Called by Orchestrator Service to create procurement plans based on forecast data
*/
@@ -91,21 +91,21 @@ export class ProcurementService {
request: AutoGenerateProcurementRequest
): Promise<AutoGenerateProcurementResponse> {
return apiClient.post<AutoGenerateProcurementResponse>(
`/tenants/${tenantId}/procurement/auto-generate`,
`/tenants/${tenantId}/procurement/operations/auto-generate`,
request
);
}
/**
* Generate a new procurement plan (manual/UI-driven)
* POST /api/v1/tenants/{tenant_id}/procurement/plans/generate
* POST /api/v1/tenants/{tenant_id}/procurement/plans
*/
static async generateProcurementPlan(
tenantId: string,
request: GeneratePlanRequest
): Promise<GeneratePlanResponse> {
return apiClient.post<GeneratePlanResponse>(
`/tenants/${tenantId}/procurement/plans/generate`,
`/tenants/${tenantId}/procurement/plans`,
request
);
}
@@ -330,6 +330,121 @@ export class ProcurementService {
{ auto_approve: autoApprove }
);
}
/**
* Create a new purchase order
* POST /api/v1/tenants/{tenant_id}/procurement/purchase-orders
*/
static async createPurchaseOrder(
tenantId: string,
poData: any
): Promise<PurchaseOrderResponse> {
return apiClient.post<PurchaseOrderResponse>(
`/tenants/${tenantId}/procurement/purchase-orders`,
poData
);
}
/**
* Get purchase order by ID
* GET /api/v1/tenants/{tenant_id}/procurement/purchase-orders/{po_id}
*/
static async getPurchaseOrderById(
tenantId: string,
poId: string
): Promise<PurchaseOrderWithSupplierResponse> {
return apiClient.get<PurchaseOrderWithSupplierResponse>(
`/tenants/${tenantId}/procurement/purchase-orders/${poId}`
);
}
/**
* List purchase orders
* GET /api/v1/tenants/{tenant_id}/procurement/purchase-orders
*/
static async getPurchaseOrders(
tenantId: string,
params?: { skip?: number; limit?: number; supplier_id?: string; status?: string }
): Promise<PurchaseOrderResponse[]> {
const queryParams = new URLSearchParams();
if (params?.skip !== undefined) queryParams.append('skip', params.skip.toString());
if (params?.limit !== undefined) queryParams.append('limit', params.limit.toString());
if (params?.supplier_id) queryParams.append('supplier_id', params.supplier_id);
if (params?.status) queryParams.append('status', params.status);
const queryString = queryParams.toString();
const url = `/tenants/${tenantId}/procurement/purchase-orders${queryString ? `?${queryString}` : ''}`;
return apiClient.get<PurchaseOrderResponse[]>(url);
}
/**
* Update purchase order
* PATCH /api/v1/tenants/{tenant_id}/procurement/purchase-orders/{po_id}
*/
static async updatePurchaseOrder(
tenantId: string,
poId: string,
poData: any
): Promise<PurchaseOrderResponse> {
return apiClient.patch<PurchaseOrderResponse>(
`/tenants/${tenantId}/procurement/purchase-orders/${poId}`,
poData
);
}
/**
* Update purchase order status
* PATCH /api/v1/tenants/{tenant_id}/procurement/purchase-orders/{po_id}/status
*/
static async updatePurchaseOrderStatus(
tenantId: string,
poId: string,
status: string,
notes?: string
): Promise<PurchaseOrderResponse> {
const queryParams = new URLSearchParams({ status });
if (notes) queryParams.append('notes', notes);
return apiClient.patch<PurchaseOrderResponse>(
`/tenants/${tenantId}/procurement/purchase-orders/${poId}/status?${queryParams.toString()}`,
{}
);
}
/**
* Approve or reject purchase order
* POST /api/v1/tenants/{tenant_id}/procurement/purchase-orders/{po_id}/approve
*/
static async approvePurchaseOrder(
tenantId: string,
poId: string,
approveData: any
): Promise<PurchaseOrderResponse> {
return apiClient.post<PurchaseOrderResponse>(
`/tenants/${tenantId}/procurement/purchase-orders/${poId}/approve`,
approveData
);
}
/**
* Cancel purchase order
* POST /api/v1/tenants/{tenant_id}/procurement/purchase-orders/{po_id}/cancel
*/
static async cancelPurchaseOrder(
tenantId: string,
poId: string,
reason: string,
cancelledBy?: string
): Promise<PurchaseOrderResponse> {
const queryParams = new URLSearchParams({ reason });
if (cancelledBy) queryParams.append('cancelled_by', cancelledBy);
return apiClient.post<PurchaseOrderResponse>(
`/tenants/${tenantId}/procurement/purchase-orders/${poId}/cancel?${queryParams.toString()}`,
{}
);
}
}
export default ProcurementService;