Atualiza exibição do tempo por processo e garante consistência da estrutura em app/
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
95
app/main.py
95
app/main.py
@@ -8,12 +8,9 @@ from fastapi.responses import StreamingResponse
|
||||
from io import BytesIO
|
||||
import pandas as pd
|
||||
from sqlalchemy.future import select
|
||||
from database import AsyncSessionLocal
|
||||
from models import Fatura
|
||||
from models import ParametrosFormula
|
||||
from fastapi import Form
|
||||
from types import SimpleNamespace
|
||||
from processor import (
|
||||
from app.database import AsyncSessionLocal
|
||||
from app.models import Fatura
|
||||
from app.processor import (
|
||||
fila_processamento,
|
||||
processar_em_lote,
|
||||
status_arquivos,
|
||||
@@ -21,8 +18,8 @@ from processor import (
|
||||
)
|
||||
|
||||
app = FastAPI()
|
||||
templates = Jinja2Templates(directory="templates")
|
||||
app.mount("/static", StaticFiles(directory="static"), name="static")
|
||||
templates = Jinja2Templates(directory="app/templates")
|
||||
app.mount("/static", StaticFiles(directory="app/static"), name="static")
|
||||
|
||||
UPLOAD_DIR = "uploads/temp"
|
||||
os.makedirs(UPLOAD_DIR, exist_ok=True)
|
||||
@@ -57,20 +54,8 @@ def relatorios_page(request: Request):
|
||||
return templates.TemplateResponse("relatorios.html", {"request": request})
|
||||
|
||||
@app.get("/parametros", response_class=HTMLResponse)
|
||||
async def parametros_page(request: Request):
|
||||
async with AsyncSessionLocal() as session:
|
||||
result = await session.execute(select(ParametrosFormula).limit(1))
|
||||
parametros = result.scalar_one_or_none()
|
||||
|
||||
return templates.TemplateResponse("parametros.html", {
|
||||
"request": request,
|
||||
"parametros": parametros or SimpleNamespace(
|
||||
aliquota_icms=None,
|
||||
incluir_icms=True,
|
||||
incluir_pis=True,
|
||||
incluir_cofins=True
|
||||
)
|
||||
})
|
||||
def parametros_page(request: Request):
|
||||
return templates.TemplateResponse("parametros.html", {"request": request})
|
||||
|
||||
@app.post("/upload-files")
|
||||
async def upload_files(files: list[UploadFile] = File(...)):
|
||||
@@ -93,14 +78,24 @@ async def process_queue():
|
||||
async def get_status():
|
||||
files = []
|
||||
for nome, status in status_arquivos.items():
|
||||
files.append({
|
||||
"nome": nome,
|
||||
"status": status,
|
||||
"mensagem": "---" if status == "Concluído" else status
|
||||
})
|
||||
if isinstance(status, dict):
|
||||
files.append({
|
||||
"nome": nome,
|
||||
"status": status.get("status", "Erro"),
|
||||
"mensagem": status.get("mensagem", "---"),
|
||||
"tempo": status.get("tempo", "---") # ✅ AQUI
|
||||
})
|
||||
else:
|
||||
files.append({
|
||||
"nome": nome,
|
||||
"status": status,
|
||||
"mensagem": "---" if status == "Concluído" else status,
|
||||
"tempo": "---" # ✅ AQUI também
|
||||
})
|
||||
is_processing = not fila_processamento.empty()
|
||||
return JSONResponse(content={"is_processing": is_processing, "files": files})
|
||||
|
||||
|
||||
@app.post("/clear-all")
|
||||
async def clear_all():
|
||||
limpar_arquivos_processados()
|
||||
@@ -149,49 +144,3 @@ async def export_excel():
|
||||
media_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
||||
headers={"Content-Disposition": "attachment; filename=relatorio_faturas.xlsx"}
|
||||
)
|
||||
|
||||
@app.post("/parametros", response_class=HTMLResponse)
|
||||
async def salvar_parametros(
|
||||
request: Request,
|
||||
aliquota_icms: float = Form(...),
|
||||
formula_pis: str = Form(...),
|
||||
formula_cofins: str = Form(...)
|
||||
):
|
||||
async with AsyncSessionLocal() as session:
|
||||
result = await session.execute(select(ParametrosFormula).limit(1))
|
||||
existente = result.scalar_one_or_none()
|
||||
|
||||
if existente:
|
||||
existente.aliquota_icms = aliquota_icms
|
||||
existente.incluir_icms = 1
|
||||
existente.incluir_pis = 1
|
||||
existente.incluir_cofins = 1
|
||||
existente.formula = f"PIS={formula_pis};COFINS={formula_cofins}"
|
||||
mensagem = "Parâmetros atualizados com sucesso."
|
||||
else:
|
||||
novo = ParametrosFormula(
|
||||
aliquota_icms=aliquota_icms,
|
||||
incluir_icms=1,
|
||||
incluir_pis=1,
|
||||
incluir_cofins=1,
|
||||
formula=f"PIS={formula_pis};COFINS={formula_cofins}"
|
||||
)
|
||||
session.add(novo)
|
||||
mensagem = "Parâmetros salvos com sucesso."
|
||||
|
||||
await session.commit()
|
||||
|
||||
parametros = SimpleNamespace(
|
||||
aliquota_icms=aliquota_icms,
|
||||
incluir_icms=1,
|
||||
incluir_pis=1,
|
||||
incluir_cofins=1,
|
||||
formula_pis=formula_pis,
|
||||
formula_cofins=formula_cofins
|
||||
)
|
||||
|
||||
return templates.TemplateResponse("parametros.html", {
|
||||
"request": request,
|
||||
"parametros": parametros,
|
||||
"mensagem": mensagem
|
||||
})
|
||||
Reference in New Issue
Block a user