integracao-core
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
# API Configuration
|
||||
# Base URL da API do HGTX
|
||||
VITE_API_BASE_URL=https://prod-hgtx-intelligence-n8n.hgtx.com.br
|
||||
VITE_BASE_URL_OPEN_CODEX_APIs=https://codex-api.hgtx.com.br/api/
|
||||
VITE_BASE_URL_HGTX_CORE_API=https://core-api.hgtx.com.br/api/
|
||||
VITE_BASE_URL_HGTX_CORE=https://core.hgtx.com.br/
|
||||
|
||||
# API Key para autenticação
|
||||
# IMPORTANTE: Mantenha esta chave segura e não compartilhe publicamente
|
||||
|
||||
+4
-4
@@ -1,5 +1,5 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<html lang="pt-br">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
@@ -10,11 +10,11 @@
|
||||
<meta property="og:title" content="HGTX Codex - AI Interface System" />
|
||||
<meta property="og:description" content="Sistema moderno de interface conversacional com IA - Chat, Geração de Imagens e Processamento de Áudio" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:image" content="https://lovable.dev/opengraph-image-p98pqg.png" />
|
||||
<meta property="og:image" content="/favicon.png" />
|
||||
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:site" content="@lovable_dev" />
|
||||
<meta name="twitter:image" content="https://lovable.dev/opengraph-image-p98pqg.png" />
|
||||
<meta name="twitter:site" content="@hgtx" />
|
||||
<meta name="twitter:image" content="/favicon.png" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
Generated
+9
@@ -44,6 +44,7 @@
|
||||
"date-fns": "^3.6.0",
|
||||
"embla-carousel-react": "^8.6.0",
|
||||
"input-otp": "^1.4.2",
|
||||
"jwt-decode": "^4.0.0",
|
||||
"lucide-react": "^0.462.0",
|
||||
"next-themes": "^0.3.0",
|
||||
"react": "^18.3.1",
|
||||
@@ -4828,6 +4829,14 @@
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/jwt-decode": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz",
|
||||
"integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==",
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/keyv": {
|
||||
"version": "4.5.4",
|
||||
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
"date-fns": "^3.6.0",
|
||||
"embla-carousel-react": "^8.6.0",
|
||||
"input-otp": "^1.4.2",
|
||||
"jwt-decode": "^4.0.0",
|
||||
"lucide-react": "^0.462.0",
|
||||
"next-themes": "^0.3.0",
|
||||
"react": "^18.3.1",
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 2.9 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 28 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 7.5 KiB |
+14
-2
@@ -2,11 +2,13 @@ import { Toaster } from "@/components/ui/toaster";
|
||||
import { Toaster as Sonner } from "@/components/ui/sonner";
|
||||
import { TooltipProvider } from "@/components/ui/tooltip";
|
||||
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
||||
import { BrowserRouter, Routes, Route } from "react-router-dom";
|
||||
import { BrowserRouter, Routes, Route, Navigate } from "react-router-dom";
|
||||
import { ThemeProvider } from "next-themes";
|
||||
import Index from "./pages/Index";
|
||||
import NotFound from "./pages/NotFound";
|
||||
import Redirect from "./pages/Redirect";
|
||||
import { GlobalFunctions } from "./GlobalFunctions";
|
||||
import React from "react";
|
||||
|
||||
const queryClient = new QueryClient();
|
||||
|
||||
@@ -23,7 +25,7 @@ const App = () => (
|
||||
element={<Redirect />}
|
||||
/>
|
||||
|
||||
<Route path="/*" element={<Index />} />
|
||||
<Route path="/*" element={GlobalFunctions.isUsuarioLogado() ? <Index /> : <HGTXLogin />} />
|
||||
{/* ADD ALL CUSTOM ROUTES ABOVE THE CATCH-ALL "*" ROUTE */}
|
||||
<Route path="*" element={<NotFound />} />
|
||||
<Route path="/404" element={<NotFound />} />
|
||||
@@ -35,3 +37,13 @@ const App = () => (
|
||||
);
|
||||
|
||||
export default App;
|
||||
|
||||
|
||||
const HGTXLogin = () =>{
|
||||
|
||||
React.useEffect(() => {
|
||||
window.location.replace(import.meta.env.VITE_BASE_URL_HGTX_CORE);
|
||||
});
|
||||
|
||||
return(<></>);
|
||||
}
|
||||
@@ -0,0 +1,286 @@
|
||||
import { jwtDecode } from 'jwt-decode';
|
||||
import { RedirectService } from './pages/RedirectService';
|
||||
|
||||
export class GlobalFunctions {
|
||||
|
||||
public static getTranferAreaObj(): TransferAreaResponse {
|
||||
let objRetorno: TransferAreaResponse = {
|
||||
aplicativoID: 0,
|
||||
aplicativoNome: "",
|
||||
areaTransferenciaID: 0,
|
||||
dataRegistro: "",
|
||||
estabelecimentoID: 0,
|
||||
usuarioID: 0,
|
||||
usuarioEmail: "",
|
||||
usuarioNome: "",
|
||||
aplicativoShareCode: "",
|
||||
nivelAcesso: 0
|
||||
};
|
||||
try {
|
||||
const objTransferStr = sessionStorage.getItem("TRANSFER_AREA");
|
||||
if (
|
||||
objTransferStr != null &&
|
||||
objTransferStr != undefined &&
|
||||
objTransferStr.trim() != ""
|
||||
) {
|
||||
const objTransfer = <TransferAreaResponse>JSON.parse(objTransferStr);
|
||||
objRetorno = objTransfer;
|
||||
}
|
||||
} catch (error) {}
|
||||
|
||||
return objRetorno;
|
||||
}
|
||||
|
||||
public static getRedirectComponent(): string {
|
||||
let objRetorno = "";
|
||||
try {
|
||||
const objTransfer = GlobalFunctions.getTranferAreaObj();
|
||||
if (objTransfer != null) {
|
||||
// let objRedir = objTransfer.find(x => x.name == 'REDIRECT');
|
||||
// objRetorno = objRedir?.value ?? '';
|
||||
objRetorno = objTransfer.urlDestino ?? "";
|
||||
if (objRetorno.startsWith("/")) objRetorno = objRetorno.substring(1);
|
||||
} else {
|
||||
objRetorno = "";
|
||||
}
|
||||
} catch (error) {
|
||||
//console.log(error);
|
||||
objRetorno = "";
|
||||
}
|
||||
|
||||
return objRetorno;
|
||||
}
|
||||
|
||||
public static getTransferProperty(propertyName: TransferAreaProperties): any {
|
||||
let objRetorno: any = "";
|
||||
try {
|
||||
const objTransfer = this.getTranferAreaObj();
|
||||
if (objTransfer != null) {
|
||||
//let obj: any = objTransfer[propertyName];
|
||||
const element = objTransfer[propertyName];
|
||||
objRetorno = element;
|
||||
} else {
|
||||
objRetorno = null;
|
||||
}
|
||||
} catch (error) {
|
||||
objRetorno = null;
|
||||
}
|
||||
|
||||
return objRetorno;
|
||||
}
|
||||
|
||||
public static isUsuarioLogado(): boolean {
|
||||
let jsonUsuario = sessionStorage.getItem('usuarioLogado');
|
||||
if (jsonUsuario) {
|
||||
let tokenDecode: any = GlobalFunctions.getUsuarioLogado();
|
||||
let d: Date = new Date();
|
||||
let dateAtual: number = Date.UTC(d.getFullYear(), d.getUTCMonth(), d.getUTCDate(), d.getUTCHours(), d.getUTCMinutes() + 5, d.getUTCSeconds()) / 1000;
|
||||
if (dateAtual > tokenDecode.exp) return false;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static tokenExpired(tokenDecode: any): boolean {
|
||||
let d: Date = new Date();
|
||||
let dateAtual: number = Date.UTC(d.getFullYear(), d.getUTCMonth(), d.getUTCDate(), d.getUTCHours(), d.getUTCMinutes() + 5, d.getUTCSeconds()) / 1000;
|
||||
if (dateAtual > tokenDecode.exp) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public static handleNavigateBack(): void {
|
||||
try {
|
||||
// Verifica se existe histórico de navegação
|
||||
if (window.history && window.history.length > 1) {
|
||||
window.history.back();
|
||||
return;
|
||||
}
|
||||
|
||||
// Tenta fechar a janela
|
||||
if (!window.closed) {
|
||||
try {
|
||||
const windowRef = window.open('', '_self');
|
||||
if (windowRef) {
|
||||
windowRef.close();
|
||||
|
||||
// Pequeno timeout para verificar se a janela foi fechada
|
||||
setTimeout(() => {
|
||||
// Se ainda estiver aberta, redireciona
|
||||
if (!windowRef.closed) {
|
||||
window.location.href = "https://core.hgtx.com.br/aplicativos/";
|
||||
}
|
||||
}, 100);
|
||||
return;
|
||||
}
|
||||
} catch (closeError) {
|
||||
console.warn("Não foi possível fechar a janela:", closeError);
|
||||
}
|
||||
}
|
||||
|
||||
// Se não conseguiu fechar, redireciona
|
||||
window.location.href = "https://core.hgtx.com.br/aplicativos/";
|
||||
} catch (error) {
|
||||
// Em caso de qualquer erro, garante o redirecionamento
|
||||
console.error("Erro ao tentar navegar:", error);
|
||||
window.location.href = "https://core.hgtx.com.br/aplicativos/";
|
||||
}
|
||||
}
|
||||
|
||||
public static getUsuarioLogado(): UsuarioLogadoData {
|
||||
const jsonUsuario = sessionStorage.getItem("usuarioLogado") ?? "";
|
||||
try {
|
||||
const objJwt = JSON.parse(jsonUsuario);
|
||||
//return jwt_decode(objJwt.token);
|
||||
return jwtDecode(objJwt.token);
|
||||
} catch (error) {}
|
||||
|
||||
return {
|
||||
EID: "0",
|
||||
email: "",
|
||||
exp: 0,
|
||||
iat: 0,
|
||||
jti: "",
|
||||
name: "",
|
||||
nbf: 0,
|
||||
UID: "0",
|
||||
};
|
||||
}
|
||||
|
||||
public static getUsuarioLogadoToken(): string {
|
||||
let retorno = "";
|
||||
const jsonUsuario = sessionStorage.getItem("usuarioLogado") ?? "";
|
||||
try {
|
||||
const objJwt = JSON.parse(jsonUsuario);
|
||||
retorno = objJwt.token;
|
||||
} catch (error) {}
|
||||
|
||||
return retorno;
|
||||
}
|
||||
|
||||
public static getUsuarioLogadoRefreshToken(): string {
|
||||
let retorno = "";
|
||||
const jsonUsuario = sessionStorage.getItem("usuarioLogado") ?? "";
|
||||
try {
|
||||
const objJwt = JSON.parse(jsonUsuario);
|
||||
retorno = objJwt.refreshToken;
|
||||
} catch (error) {}
|
||||
|
||||
return retorno;
|
||||
}
|
||||
|
||||
public static getPerfilUsuario(): PerfilUsuario | null {
|
||||
let retorno: PerfilUsuario | null = null;
|
||||
const jsonUsuario = sessionStorage.getItem("perfilUsuario") ?? "";
|
||||
try {
|
||||
const objJwt = <PerfilUsuario>JSON.parse(jsonUsuario);
|
||||
retorno = objJwt;
|
||||
} catch (error) {
|
||||
retorno = null;
|
||||
}
|
||||
|
||||
return retorno;
|
||||
}
|
||||
|
||||
public static getHighUserProfile(): number {
|
||||
let retorno = 6;
|
||||
const objPerfil = GlobalFunctions.getPerfilUsuario();
|
||||
|
||||
if (objPerfil) {
|
||||
const tiposPerfil: number[] = objPerfil.results.map((v) => v.tipoPerfil);
|
||||
retorno = Math.min(...tiposPerfil);
|
||||
}
|
||||
|
||||
return retorno;
|
||||
}
|
||||
|
||||
public static async getToken(): Promise<string> {
|
||||
let token: string = GlobalFunctions.getUsuarioLogadoToken();
|
||||
|
||||
const tokenDecode: any = GlobalFunctions.getUsuarioLogado();
|
||||
|
||||
let currentDate = new Date();
|
||||
|
||||
// JWT exp is in seconds
|
||||
if ((tokenDecode.exp * 1000) < currentDate.getTime()) {
|
||||
//console.log("Token expired.");
|
||||
let gsikey: number = parseInt(sessionStorage.getItem('gsikey') ?? '0');
|
||||
RedirectService.loadTransferArea(gsikey).then((response) => {
|
||||
if(response.data.errorCode == 0){
|
||||
sessionStorage.setItem('TRANSFER_AREA',JSON.stringify(response.data.areTrs));
|
||||
sessionStorage.setItem('usuarioLogado',JSON.stringify({
|
||||
token: response.data.jwt.token,
|
||||
refreshToken: response.data.jwt.refreshToken
|
||||
}));
|
||||
|
||||
token = response.data.jwt.token;
|
||||
}
|
||||
// else if(error !== 1401){
|
||||
// navigate('/',{replace: true});
|
||||
// }
|
||||
});
|
||||
}
|
||||
// else {
|
||||
// //console.log("Valid token");
|
||||
// result = true;
|
||||
// }
|
||||
|
||||
return token;
|
||||
}
|
||||
}
|
||||
|
||||
export interface UsuarioLogadoData {
|
||||
UID: string;
|
||||
EID: string;
|
||||
name: string;
|
||||
email: string;
|
||||
jti: string;
|
||||
nbf: number;
|
||||
exp: number;
|
||||
iat: number;
|
||||
}
|
||||
|
||||
export interface TransferAreaResponse {
|
||||
estabelecimentoID: number;
|
||||
nivelAcesso: number;
|
||||
aplicativoID: number;
|
||||
usuarioID: number;
|
||||
areaTransferenciaID: number;
|
||||
dataRegistro: string;
|
||||
urlBase?: string;
|
||||
urlDestino?: string;
|
||||
aplicativoNome: string;
|
||||
usuarioNome: string;
|
||||
usuarioEmail: string;
|
||||
aplicativoShareCode: string;
|
||||
}
|
||||
|
||||
export enum TransferAreaProperties {
|
||||
EstabelecimentoCodigo = "estabelecimentoID",
|
||||
UsuarioCodigo = "usuarioID",
|
||||
UsuarioNome = "usuarioNome",
|
||||
UsuarioEmail = "usuarioEmail",
|
||||
APP_COD = "aplicativoID",
|
||||
APP_TITULO = "aplicativoNome",
|
||||
areaTransferenciaID = "areaTransferenciaID",
|
||||
urlBase = "urlBase",
|
||||
urlDestino = "urlDestino",
|
||||
aplicativoShareCode = "aplicativoShareCode",
|
||||
nivelAcesso = "nivelAcesso",
|
||||
}
|
||||
|
||||
type PerfilUsuario = {
|
||||
errorCode: number;
|
||||
errorMessage: string;
|
||||
results: PerfilUsuarioResult[];
|
||||
};
|
||||
|
||||
export type PerfilUsuarioResult = {
|
||||
tipoPerfil: number;
|
||||
itens: PerfilUsuarioItem[];
|
||||
};
|
||||
|
||||
type PerfilUsuarioItem = {
|
||||
id: number;
|
||||
descricao: string;
|
||||
identificador: string;
|
||||
};
|
||||
@@ -27,7 +27,7 @@ export default function FullScreenLoader({ show, text = "Carregando..." }: FullS
|
||||
}`}
|
||||
>
|
||||
<div className="flex flex-col items-center gap-3 p-6 rounded-2xl bg-card shadow-lg border border-border transition-all duration-200">
|
||||
<Loader2 className="h-8 w-8 animate-spin text-primary" />
|
||||
<Loader2 className="h-10 w-10 animate-spin text-primary" />
|
||||
<p className="text-card-foreground text-sm font-medium">{text}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -3,6 +3,7 @@ import { MessageSquare, Image, AudioLines, Mic, ArrowLeft, Plus, ChevronLeft, Ch
|
||||
import { Button } from "@/components/ui/button";
|
||||
import { Separator } from "@/components/ui/separator";
|
||||
import { ThemeToggle } from "@/components/ThemeToggle";
|
||||
import { GlobalFunctions } from "@/GlobalFunctions";
|
||||
|
||||
interface LayoutProps {
|
||||
children: React.ReactNode;
|
||||
@@ -75,7 +76,7 @@ export const Layout = ({ children, activeTab, onTabChange }: LayoutProps) => {
|
||||
<span className="text-sm font-medium text-sidebar-foreground">Tema</span>
|
||||
<ThemeToggle />
|
||||
</div>
|
||||
<Button variant="ghost" className="w-full justify-start gap-2 text-sidebar-foreground">
|
||||
<Button onClick={GlobalFunctions.handleNavigateBack} variant="ghost" className="w-full justify-start gap-2 text-sidebar-foreground">
|
||||
<ArrowLeft className="w-4 h-4" />
|
||||
Voltar
|
||||
</Button>
|
||||
|
||||
@@ -49,6 +49,7 @@ const Index = () => {
|
||||
} />
|
||||
|
||||
</Route>
|
||||
<Route path="*" element={<Navigate to={`/404`} replace />} />
|
||||
</Routes>
|
||||
|
||||
);
|
||||
|
||||
@@ -1,9 +1,47 @@
|
||||
import FullScreenLoader from "@/components/FullScreenLoader";
|
||||
import { GlobalFunctions } from "@/GlobalFunctions";
|
||||
import { RedirectService } from "./RedirectService";
|
||||
import React from "react";
|
||||
import { useNavigate, useParams } from "react-router-dom";
|
||||
|
||||
|
||||
|
||||
export default function Redirect() {
|
||||
|
||||
const navigate = useNavigate();
|
||||
let { gsikey } = useParams();
|
||||
|
||||
React.useEffect(() => {
|
||||
let error: number = 0;
|
||||
sessionStorage.setItem('gsikey', gsikey ?? '0');
|
||||
RedirectService.loadTransferArea(parseInt(gsikey ?? '0')).then((response) => {
|
||||
//console.log(response);
|
||||
error = response.data.errorCode;
|
||||
//msg = response.data.errorMessage;
|
||||
if(response.data.errorCode == 0){
|
||||
sessionStorage.setItem('TRANSFER_AREA',JSON.stringify(response.data.areTrs));
|
||||
sessionStorage.setItem('usuarioLogado',JSON.stringify({
|
||||
token: response.data.jwt.token,
|
||||
refreshToken: response.data.jwt.refreshToken
|
||||
}));
|
||||
}
|
||||
// else if(error !== 1401){
|
||||
// navigate('/',{replace: true});
|
||||
// }
|
||||
})
|
||||
.catch((_err) => {
|
||||
navigate('/404',{replace: true});
|
||||
})
|
||||
.finally(() => {
|
||||
if(error == 0 || error === 1401){
|
||||
navigate(`/${GlobalFunctions.getRedirectComponent()}`,{replace: true});
|
||||
}
|
||||
// else if(error === 1401){
|
||||
// navigate({pathname: '/',search:`?p=${window.btoa(msg)}`},{replace: true});
|
||||
// }
|
||||
});
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<FullScreenLoader show={true} text="Carregando...Aguarde..." />
|
||||
);
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
import { GlobalFunctions, TransferAreaProperties } from "@/GlobalFunctions";
|
||||
import axios from "axios";
|
||||
const endPoint: string = 'v1/login/';
|
||||
|
||||
export class RedirectService{
|
||||
|
||||
public static loadTransferArea(gsikey: number): Promise<any>{
|
||||
return axios.post(`${import.meta.env.VITE_BASE_URL_OPEN_CODEX_APIs}${endPoint}login_by_gsikey`,{
|
||||
"gsikey" : gsikey
|
||||
});
|
||||
}
|
||||
|
||||
public static async validaAcessoApp(urlDestino: string): Promise<any>{
|
||||
//let token = await GlobalFunctions.getToken();
|
||||
let usuLogado = GlobalFunctions.getUsuarioLogado();
|
||||
let usuCod: string = GlobalFunctions.getTransferProperty(TransferAreaProperties.UsuarioCodigo);
|
||||
let estCod: string = usuLogado.EID;
|
||||
|
||||
let urlDestinoPost: string = urlDestino;//urlDestino.trim().length < 1 ? GlobalFunctions.getTransferProperty(TransferAreaProperties.urlDestino) : urlDestino;
|
||||
if(urlDestinoPost.trim().length < 1){
|
||||
try {
|
||||
let pathSplit = window.location.pathname.split('/');
|
||||
|
||||
urlDestinoPost = `/${pathSplit[pathSplit.length-2]}/${pathSplit[pathSplit.length-1]}`;
|
||||
} catch (error) {
|
||||
}
|
||||
}
|
||||
//const heads = { headers: {'Content-Type':'application/json; charset=utf-8','Authorization': `Bearer ${token}`} };
|
||||
const heads = { headers: {'Content-Type':'application/json; charset=utf-8'} };
|
||||
return axios.post(`${import.meta.env.VITE_BASE_URL_HGTX_CORE_API}v1/aplicativos/validar_acesso_app?usuCod=${usuCod}&estCod=${estCod}`,{
|
||||
"urlDestino": urlDestinoPost
|
||||
},heads);
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
import { GlobalFunctions, TransferAreaProperties } from '@/GlobalFunctions';
|
||||
import { apiService } from './api';
|
||||
|
||||
/**
|
||||
@@ -83,8 +84,8 @@ class AudioGenerationService {
|
||||
const { message, voice, userEmail, estabelecimentoId } = request;
|
||||
|
||||
// Usa valores do .env se não forem fornecidos
|
||||
const email = userEmail || import.meta.env.VITE_USER_EMAIL || '';
|
||||
const estabId = estabelecimentoId || parseInt(import.meta.env.VITE_ESTABELECIMENTO_ID) || 1;
|
||||
const email = GlobalFunctions.getTransferProperty(TransferAreaProperties.UsuarioEmail);//userEmail || import.meta.env.VITE_USER_EMAIL || '';
|
||||
const estabId = GlobalFunctions.getTransferProperty(TransferAreaProperties.EstabelecimentoCodigo);//estabelecimentoId || parseInt(import.meta.env.VITE_ESTABELECIMENTO_ID) || 1;
|
||||
|
||||
// Valida o texto
|
||||
if (!message || message.trim().length === 0) {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { GlobalFunctions, TransferAreaProperties } from '@/GlobalFunctions';
|
||||
import { apiService } from './api';
|
||||
|
||||
/**
|
||||
@@ -126,8 +127,8 @@ class ChatService {
|
||||
} = request;
|
||||
|
||||
// Usa valores do .env se não forem fornecidos
|
||||
const email = userEmail || import.meta.env.VITE_USER_EMAIL || '';
|
||||
const estabId = estabelecimentoId || import.meta.env.VITE_ESTABELECIMENTO_ID || '';
|
||||
const email = GlobalFunctions.getTransferProperty(TransferAreaProperties.UsuarioEmail);//userEmail || import.meta.env.VITE_USER_EMAIL || '';
|
||||
const estabId = GlobalFunctions.getTransferProperty(TransferAreaProperties.EstabelecimentoCodigo);//estabelecimentoId || import.meta.env.VITE_ESTABELECIMENTO_ID || '';
|
||||
|
||||
// Validações
|
||||
if (!chatId) {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { GlobalFunctions, TransferAreaProperties } from '@/GlobalFunctions';
|
||||
import { apiService } from './api';
|
||||
|
||||
/**
|
||||
@@ -65,8 +66,8 @@ class ImageGenerationService {
|
||||
const { description, size, userEmail, estabelecimentoId } = request;
|
||||
|
||||
// Usa valores do .env se não forem fornecidos
|
||||
const email = userEmail || import.meta.env.VITE_USER_EMAIL || '';
|
||||
const estabId = estabelecimentoId || parseInt(import.meta.env.VITE_ESTABELECIMENTO_ID) || 1;
|
||||
const email = GlobalFunctions.getTransferProperty(TransferAreaProperties.UsuarioEmail);//userEmail || import.meta.env.VITE_USER_EMAIL || '';
|
||||
const estabId = GlobalFunctions.getTransferProperty(TransferAreaProperties.EstabelecimentoCodigo);//estabelecimentoId || parseInt(import.meta.env.VITE_ESTABELECIMENTO_ID) || 1;
|
||||
|
||||
// Valida a descrição
|
||||
if (!description || description.trim().length === 0) {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { GlobalFunctions, TransferAreaProperties } from '@/GlobalFunctions';
|
||||
import { apiService } from './api';
|
||||
|
||||
/**
|
||||
@@ -39,8 +40,8 @@ class TranscriptionService {
|
||||
formData.append('data', audioFile);
|
||||
|
||||
// Usa valores do .env se não forem fornecidos
|
||||
const email = userEmail || import.meta.env.VITE_USER_EMAIL || '';
|
||||
const estabId = estabelecimentoId || import.meta.env.VITE_ESTABELECIMENTO_ID || '';
|
||||
const email = GlobalFunctions.getTransferProperty(TransferAreaProperties.UsuarioEmail);//userEmail || import.meta.env.VITE_USER_EMAIL || '';
|
||||
const estabId = GlobalFunctions.getTransferProperty(TransferAreaProperties.EstabelecimentoCodigo);//estabelecimentoId || import.meta.env.VITE_ESTABELECIMENTO_ID || '';
|
||||
|
||||
formData.append('user_email', email);
|
||||
formData.append('estabelecimento_id', estabId.toString());
|
||||
|
||||
Vendored
+3
@@ -5,6 +5,9 @@ interface ImportMetaEnv {
|
||||
readonly VITE_API_KEY: string
|
||||
readonly VITE_USER_EMAIL: string
|
||||
readonly VITE_ESTABELECIMENTO_ID: string
|
||||
readonly VITE_BASE_URL_OPEN_CODEX_APIs: string
|
||||
readonly VITE_BASE_URL_HGTX_CORE_API: string
|
||||
readonly VITE_BASE_URL_HGTX_CORE: string
|
||||
}
|
||||
|
||||
interface ImportMeta {
|
||||
|
||||
Reference in New Issue
Block a user