fix: PDF iframe størrelse + AI skelner leverandør fra BMC-modtager v2.2.31
This commit is contained in:
parent
8d29302b01
commit
4b2b0ea0f3
@ -2361,13 +2361,20 @@ async def reprocess_uploaded_file(file_id: int):
|
|||||||
extracted_fields = llm_result
|
extracted_fields = llm_result
|
||||||
confidence = llm_result.get('confidence', 0.75)
|
confidence = llm_result.get('confidence', 0.75)
|
||||||
|
|
||||||
# Post-process: clear own CVR if AI mistakenly returned it
|
# Post-process: clear own CVR(s) if AI mistakenly returned them
|
||||||
extracted_cvr = llm_result.get('vendor_cvr')
|
extracted_cvr = llm_result.get('vendor_cvr')
|
||||||
own_cvr = getattr(settings, 'OWN_CVR', '')
|
own_cvr = getattr(settings, 'OWN_CVR', '29522790')
|
||||||
if extracted_cvr and own_cvr and str(extracted_cvr).replace('DK', '').strip() == str(own_cvr).strip():
|
OWN_CVRS = {str(own_cvr).strip(), '29522790', '14416285'} # alle BMC CVR numre
|
||||||
logger.warning(f"⚠️ AI returned own CVR ({own_cvr}) as vendor_cvr - clearing it")
|
extracted_cvr_clean = str(extracted_cvr).replace('DK', '').strip() if extracted_cvr else ''
|
||||||
|
if extracted_cvr_clean and extracted_cvr_clean in OWN_CVRS:
|
||||||
|
logger.warning(f"⚠️ AI returned own CVR ({extracted_cvr_clean}) as vendor_cvr - clearing it")
|
||||||
llm_result['vendor_cvr'] = None
|
llm_result['vendor_cvr'] = None
|
||||||
extracted_cvr = None
|
extracted_cvr = None
|
||||||
|
# Also clear vendor_name if it looks like BMC
|
||||||
|
vendor_name = llm_result.get('vendor_name', '') or ''
|
||||||
|
if 'BMC' in vendor_name.upper() and 'DENMARK' in vendor_name.upper():
|
||||||
|
logger.warning(f"⚠️ AI returned own company name '{vendor_name}' as vendor_name - clearing it")
|
||||||
|
llm_result['vendor_name'] = None
|
||||||
|
|
||||||
# Try to find vendor in DB by extracted CVR or name (overrides detected_vendor_id)
|
# Try to find vendor in DB by extracted CVR or name (overrides detected_vendor_id)
|
||||||
if extracted_cvr:
|
if extracted_cvr:
|
||||||
|
|||||||
@ -884,11 +884,11 @@
|
|||||||
<div class="modal-body p-0 d-flex" style="height: calc(100vh - 120px); overflow:hidden;">
|
<div class="modal-body p-0 d-flex" style="height: calc(100vh - 120px); overflow:hidden;">
|
||||||
|
|
||||||
<!-- LEFT: PDF viewer -->
|
<!-- LEFT: PDF viewer -->
|
||||||
<div class="d-flex flex-column border-end" style="width:58%; min-width:400px;">
|
<div class="d-flex flex-column border-end" style="width:58%; min-width:400px; height:100%;">
|
||||||
<div class="px-3 py-2 bg-body-tertiary border-bottom small text-muted">
|
<div class="px-3 py-2 bg-body-tertiary border-bottom small text-muted flex-shrink-0">
|
||||||
<i class="bi bi-file-pdf text-danger me-1"></i>Faktura PDF
|
<i class="bi bi-file-pdf text-danger me-1"></i>Faktura PDF
|
||||||
</div>
|
</div>
|
||||||
<iframe id="qvPdfFrame" src="" style="flex:1; border:none; width:100%; height:100%;" title="PDF Preview"></iframe>
|
<iframe id="qvPdfFrame" src="" style="flex:1 1 0; min-height:0; border:none; width:100%;" title="PDF Preview"></iframe>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- RIGHT: Vendor form -->
|
<!-- RIGHT: Vendor form -->
|
||||||
|
|||||||
@ -29,10 +29,16 @@ class OllamaService:
|
|||||||
def _build_system_prompt(self) -> str:
|
def _build_system_prompt(self) -> str:
|
||||||
"""Build Danish system prompt for invoice extraction with CVR"""
|
"""Build Danish system prompt for invoice extraction with CVR"""
|
||||||
own_cvr = getattr(settings, 'OWN_CVR', '29522790')
|
own_cvr = getattr(settings, 'OWN_CVR', '29522790')
|
||||||
|
# BMC har to CVR numre – begge er VORES (køber), aldrig leverandør
|
||||||
own_cvr_rule = (
|
own_cvr_rule = (
|
||||||
f"4b. KRITISK - LEVERANDØR CVR: CVR {own_cvr} er VORES eget CVR (køberen/modtageren). "
|
f"4b. KRITISK - LEVERANDØR vs. MODTAGER:\n"
|
||||||
f"Sæt ALDRIG vendor_cvr til {own_cvr}! Leverandørens CVR er CVR-nummeret der hører til "
|
f" - På en dansk faktura er LEVERANDØREN (vendor) det firma der HAR SENDT fakturaen.\n"
|
||||||
f"firmaet som har SENDT fakturaen (ikke modtageren).\n"
|
f" De kendes på: firmalogo øverst, bankkonto/IBAN/Gironr. nedad, ingen 'Faktureres til' label.\n"
|
||||||
|
f" - MODTAGEREN (os, buyer) kendes på: navnes under 'Faktureres til', 'Att.', 'Kundenr.', adresseblok med vores navn.\n"
|
||||||
|
f" - BMC DENMARK APS og alle varianter af 'BMC' er ALDRIG leverandøren – det er os (modtageren).\n"
|
||||||
|
f" - CVR {own_cvr} er VORES eget CVR. Sæt ALDRIG vendor_cvr til {own_cvr}.\n"
|
||||||
|
f" - CVR 14416285 er også VORES CVR. Sæt ALDRIG vendor_cvr til 14416285.\n"
|
||||||
|
f" - Ignorer 'SE/CVR-nr.' der hører til modtager-blokken – brug KUN afsenderens CVR som vendor_cvr.\n"
|
||||||
)
|
)
|
||||||
return ("""Du er en ekspert i at læse og udtrække strukturerede data fra danske fakturaer, kreditnotaer og leverandørdokumenter.
|
return ("""Du er en ekspert i at læse og udtrække strukturerede data fra danske fakturaer, kreditnotaer og leverandørdokumenter.
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user