Add quality template logic
This commit is contained in:
@@ -16,7 +16,7 @@ import type {
|
||||
} from '../types/qualityTemplates';
|
||||
|
||||
class QualityTemplateService {
|
||||
private readonly baseURL = '/production/api/v1/quality-templates';
|
||||
private readonly baseURL = '/tenants';
|
||||
|
||||
/**
|
||||
* Create a new quality check template
|
||||
@@ -25,10 +25,10 @@ class QualityTemplateService {
|
||||
tenantId: string,
|
||||
templateData: QualityCheckTemplateCreate
|
||||
): Promise<QualityCheckTemplate> {
|
||||
const response = await apiClient.post(this.baseURL, templateData, {
|
||||
const data = await apiClient.post(`${this.baseURL}/${tenantId}/production/quality-templates`, templateData, {
|
||||
headers: { 'X-Tenant-ID': tenantId }
|
||||
});
|
||||
return response.data;
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -38,11 +38,11 @@ class QualityTemplateService {
|
||||
tenantId: string,
|
||||
params?: QualityTemplateQueryParams
|
||||
): Promise<QualityCheckTemplateList> {
|
||||
const response = await apiClient.get(this.baseURL, {
|
||||
const data = await apiClient.get(`${this.baseURL}/${tenantId}/production/quality-templates`, {
|
||||
params,
|
||||
headers: { 'X-Tenant-ID': tenantId }
|
||||
});
|
||||
return response.data;
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -52,10 +52,10 @@ class QualityTemplateService {
|
||||
tenantId: string,
|
||||
templateId: string
|
||||
): Promise<QualityCheckTemplate> {
|
||||
const response = await apiClient.get(`${this.baseURL}/${templateId}`, {
|
||||
const data = await apiClient.get(`${this.baseURL}/${tenantId}/production/quality-templates/${templateId}`, {
|
||||
headers: { 'X-Tenant-ID': tenantId }
|
||||
});
|
||||
return response.data;
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -66,17 +66,17 @@ class QualityTemplateService {
|
||||
templateId: string,
|
||||
templateData: QualityCheckTemplateUpdate
|
||||
): Promise<QualityCheckTemplate> {
|
||||
const response = await apiClient.put(`${this.baseURL}/${templateId}`, templateData, {
|
||||
const data = await apiClient.put(`${this.baseURL}/${tenantId}/production/quality-templates/${templateId}`, templateData, {
|
||||
headers: { 'X-Tenant-ID': tenantId }
|
||||
});
|
||||
return response.data;
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a quality check template
|
||||
*/
|
||||
async deleteTemplate(tenantId: string, templateId: string): Promise<void> {
|
||||
await apiClient.delete(`${this.baseURL}/${templateId}`, {
|
||||
await apiClient.delete(`${this.baseURL}/${tenantId}/production/quality-templates/${templateId}`, {
|
||||
headers: { 'X-Tenant-ID': tenantId }
|
||||
});
|
||||
}
|
||||
@@ -89,11 +89,11 @@ class QualityTemplateService {
|
||||
stage: ProcessStage,
|
||||
isActive: boolean = true
|
||||
): Promise<QualityCheckTemplateList> {
|
||||
const response = await apiClient.get(`${this.baseURL}/stages/${stage}`, {
|
||||
const data = await apiClient.get(`${this.baseURL}/${tenantId}/production/quality-templates/stages/${stage}`, {
|
||||
params: { is_active: isActive },
|
||||
headers: { 'X-Tenant-ID': tenantId }
|
||||
});
|
||||
return response.data;
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -103,10 +103,10 @@ class QualityTemplateService {
|
||||
tenantId: string,
|
||||
templateId: string
|
||||
): Promise<QualityCheckTemplate> {
|
||||
const response = await apiClient.post(`${this.baseURL}/${templateId}/duplicate`, {}, {
|
||||
const data = await apiClient.post(`${this.baseURL}/${tenantId}/production/quality-templates/${templateId}/duplicate`, {}, {
|
||||
headers: { 'X-Tenant-ID': tenantId }
|
||||
});
|
||||
return response.data;
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -116,10 +116,10 @@ class QualityTemplateService {
|
||||
tenantId: string,
|
||||
executionData: QualityCheckExecutionRequest
|
||||
): Promise<QualityCheckExecutionResponse> {
|
||||
const response = await apiClient.post('/production/api/v1/quality-checks/execute', executionData, {
|
||||
const data = await apiClient.post(`${this.baseURL}/${tenantId}/production/quality-checks/execute`, executionData, {
|
||||
headers: { 'X-Tenant-ID': tenantId }
|
||||
});
|
||||
return response.data;
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -130,11 +130,11 @@ class QualityTemplateService {
|
||||
batchId: string,
|
||||
stage?: ProcessStage
|
||||
): Promise<any[]> {
|
||||
const response = await apiClient.get('/production/api/v1/quality-checks', {
|
||||
const data = await apiClient.get(`${this.baseURL}/${tenantId}/production/quality-checks`, {
|
||||
params: { batch_id: batchId, process_stage: stage },
|
||||
headers: { 'X-Tenant-ID': tenantId }
|
||||
});
|
||||
return response.data;
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -168,15 +168,15 @@ class QualityTemplateService {
|
||||
templateData: Partial<QualityCheckTemplateCreate | QualityCheckTemplateUpdate>
|
||||
): Promise<{ valid: boolean; errors: string[] }> {
|
||||
try {
|
||||
const response = await apiClient.post(`${this.baseURL}/validate`, templateData, {
|
||||
const data = await apiClient.post(`${this.baseURL}/${tenantId}/production/quality-templates/validate`, templateData, {
|
||||
headers: { 'X-Tenant-ID': tenantId }
|
||||
});
|
||||
return response.data;
|
||||
return data;
|
||||
} catch (error: any) {
|
||||
if (error.response?.status === 400) {
|
||||
return {
|
||||
valid: false,
|
||||
errors: [error.response.data.detail || 'Validation failed']
|
||||
errors: [error.response?.data?.detail || 'Validation failed']
|
||||
};
|
||||
}
|
||||
throw error;
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
import React from 'react';
|
||||
import { QualityTemplateManager } from '../../../../components/domain/production';
|
||||
|
||||
/**
|
||||
* QualityTemplatesPage - Page wrapper for the QualityTemplateManager component
|
||||
*
|
||||
* This page provides access to quality template management functionality,
|
||||
* allowing users to create, edit, duplicate, and manage quality control templates
|
||||
* that are used during production processes.
|
||||
*/
|
||||
const QualityTemplatesPage: React.FC = () => {
|
||||
return (
|
||||
<div className="container mx-auto px-4 py-6">
|
||||
<QualityTemplateManager />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default QualityTemplatesPage;
|
||||
@@ -37,6 +37,7 @@ const OrganizationsPage = React.lazy(() => import('../pages/app/settings/organiz
|
||||
// Database pages
|
||||
const DatabasePage = React.lazy(() => import('../pages/app/database/DatabasePage'));
|
||||
const ModelsConfigPage = React.lazy(() => import('../pages/app/database/models/ModelsConfigPage'));
|
||||
const QualityTemplatesPage = React.lazy(() => import('../pages/app/database/quality-templates/QualityTemplatesPage'));
|
||||
|
||||
// Data pages
|
||||
const WeatherPage = React.lazy(() => import('../pages/app/data/weather/WeatherPage'));
|
||||
@@ -190,6 +191,16 @@ export const AppRouter: React.FC = () => {
|
||||
</ProtectedRoute>
|
||||
}
|
||||
/>
|
||||
<Route
|
||||
path="/app/database/quality-templates"
|
||||
element={
|
||||
<ProtectedRoute>
|
||||
<AppShell>
|
||||
<QualityTemplatesPage />
|
||||
</AppShell>
|
||||
</ProtectedRoute>
|
||||
}
|
||||
/>
|
||||
<Route
|
||||
path="/app/database/maquinaria"
|
||||
element={
|
||||
|
||||
@@ -137,6 +137,7 @@ export const ROUTES = {
|
||||
SETTINGS_BILLING: '/settings/billing',
|
||||
SETTINGS_BAKERY_CONFIG: '/app/database/bakery-config',
|
||||
SETTINGS_TEAM: '/app/database/team',
|
||||
QUALITY_TEMPLATES: '/app/database/quality-templates',
|
||||
|
||||
// Reports
|
||||
REPORTS: '/reports',
|
||||
@@ -353,6 +354,17 @@ export const routesConfig: RouteConfig[] = [
|
||||
showInNavigation: true,
|
||||
showInBreadcrumbs: true,
|
||||
},
|
||||
{
|
||||
path: '/app/database/quality-templates',
|
||||
name: 'QualityTemplates',
|
||||
component: 'QualityTemplatesPage',
|
||||
title: 'Plantillas de Calidad',
|
||||
icon: 'settings',
|
||||
requiresAuth: true,
|
||||
requiredRoles: ROLE_COMBINATIONS.MANAGEMENT_ACCESS,
|
||||
showInNavigation: true,
|
||||
showInBreadcrumbs: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user