feat: affiche la date de derniere extraction et revient aux documents
La liste des documents montrait la date d'import, figee au premier enregistrement : c'est la date de la derniere extraction ayant produit les donnees affichees qui renseigne, surtout apres un balayage de re-extraction. La colonne `extracted_at` la porte, mise a jour a chaque enregistrement, et la date d'import reste consultable en infobulle. Le projet n'ayant pas d'outil de migration (`create_all` laisse intactes les tables existantes), `init_db` rattrape les colonnes ajoutees apres coup : sans cela une base deja installee cesserait de fonctionner. Les documents deja presents recoivent leur date d'import, qui est bien celle de leur extraction. Une fois la selection appliquee sans echec, le balayage renvoie vers la liste des documents ; en cas d'echec on reste sur place, les lignes concernees portant leur message. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -64,7 +64,7 @@
|
||||
<tr>
|
||||
<th>Document</th>
|
||||
<th>Immeuble</th>
|
||||
<th>Date</th>
|
||||
<th>Date / extraction</th>
|
||||
<th class="text-right">Solde</th>
|
||||
<th class="text-center">Fichiers</th>
|
||||
<th class="text-right">Actions</th>
|
||||
@@ -100,7 +100,12 @@
|
||||
<!-- Date -->
|
||||
<td>
|
||||
<div class="text-sm text-white">{{ formatDate(doc.date) }}</div>
|
||||
<div class="text-xs text-gray-500">Importe le {{ formatDateTime(doc.created_at) }}</div>
|
||||
<div
|
||||
class="text-xs text-gray-500"
|
||||
:title="`Importé le ${formatDateTime(doc.created_at)}`"
|
||||
>
|
||||
Extrait le {{ formatDateTime(doc.extracted_at || doc.created_at) }}
|
||||
</div>
|
||||
</td>
|
||||
|
||||
<!-- Solde -->
|
||||
|
||||
@@ -320,6 +320,7 @@
|
||||
|
||||
<script setup>
|
||||
import { computed, onMounted, onBeforeUnmount, reactive, ref } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import ExtractionDiffDetails from '../components/ExtractionDiffDetails.vue'
|
||||
import TagAutocomplete from '../components/TagAutocomplete.vue'
|
||||
import {
|
||||
@@ -333,6 +334,8 @@ import { fillPredictions, remapTags, toDepensesTags } from '../utils/tagRemap.js
|
||||
// Ordre de grandeur mesuré d'une extraction, avant toute mesure réelle.
|
||||
const SECONDS_PER_DOC = 7
|
||||
|
||||
const router = useRouter()
|
||||
|
||||
const documents = ref([])
|
||||
const items = ref([])
|
||||
const availableTags = ref([])
|
||||
@@ -663,8 +666,11 @@ async function applySelection() {
|
||||
|
||||
isApplying.value = false
|
||||
if (failures) {
|
||||
// On reste sur la page : les lignes en échec portent leur message.
|
||||
applyError.value = `${failures} document${failures > 1 ? 's' : ''} n'${failures > 1 ? 'ont' : 'a'} pas pu être enregistré${failures > 1 ? 's' : ''}`
|
||||
return
|
||||
}
|
||||
router.push('/documents')
|
||||
}
|
||||
|
||||
function formatDate(dateStr) {
|
||||
|
||||
Reference in New Issue
Block a user