Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| efe6f6c2b0 |
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
<groupId>com.loremind</groupId>
|
<groupId>com.loremind</groupId>
|
||||||
<artifactId>loremind-core</artifactId>
|
<artifactId>loremind-core</artifactId>
|
||||||
<version>0.6.11</version>
|
<version>0.6.12</version>
|
||||||
<name>LoreMind Core</name>
|
<name>LoreMind Core</name>
|
||||||
<description>Backend Core - Architecture Hexagonale</description>
|
<description>Backend Core - Architecture Hexagonale</description>
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,12 @@ server.port=8080
|
|||||||
# de WebFlux (utilisé uniquement pour WebClient côté adapter SSE vers le Brain).
|
# de WebFlux (utilisé uniquement pour WebClient côté adapter SSE vers le Brain).
|
||||||
spring.main.web-application-type=servlet
|
spring.main.web-application-type=servlet
|
||||||
|
|
||||||
|
# Pas de timeout sur les requetes async (StreamingResponseBody, SSE).
|
||||||
|
# Le defaut Tomcat coupe a 30s, ce qui interrompt le streaming d'un pull
|
||||||
|
# de modele Ollama (peut durer des dizaines de minutes pour un GGUF de 10+ Go).
|
||||||
|
# -1 = pas de timeout, on s'appuie sur la fermeture cote client ou cote upstream.
|
||||||
|
spring.mvc.async.request-timeout=-1
|
||||||
|
|
||||||
# Configuration de la base de donnees PostgreSQL
|
# Configuration de la base de donnees PostgreSQL
|
||||||
# Valeurs surchargeables via variables d'env (cf. docker-compose.yml).
|
# Valeurs surchargeables via variables d'env (cf. docker-compose.yml).
|
||||||
# En dev local, creez un fichier .env a la racine de core/ OU definissez les
|
# En dev local, creez un fichier .env a la racine de core/ OU definissez les
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
Auteur : ietm64
|
Auteur : ietm64
|
||||||
Licence : AGPL-3.0
|
Licence : AGPL-3.0
|
||||||
Projet : LoreMindMJ - assistant pour Maitres de Jeu de JDR
|
Projet : LoreMindMJ - assistant pour Maitres de Jeu de JDR
|
||||||
Version : 0.6.11
|
Version : 0.6.12
|
||||||
|
|
||||||
.LINK
|
.LINK
|
||||||
https://git.igmlcreation.fr/ietm64/loremind
|
https://git.igmlcreation.fr/ietm64/loremind
|
||||||
|
|||||||
4
web/package-lock.json
generated
4
web/package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "loremind-web",
|
"name": "loremind-web",
|
||||||
"version": "0.6.11",
|
"version": "0.6.12",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "loremind-web",
|
"name": "loremind-web",
|
||||||
"version": "0.6.11",
|
"version": "0.6.12",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@angular/animations": "^17.0.0",
|
"@angular/animations": "^17.0.0",
|
||||||
"@angular/common": "^17.0.0",
|
"@angular/common": "^17.0.0",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "loremind-web",
|
"name": "loremind-web",
|
||||||
"version": "0.6.11",
|
"version": "0.6.12",
|
||||||
"description": "LoreMind Frontend - Angular",
|
"description": "LoreMind Frontend - Angular",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"ng": "ng",
|
"ng": "ng",
|
||||||
|
|||||||
@@ -59,6 +59,10 @@ export class SettingsComponent implements OnInit {
|
|||||||
pullTotal = 0;
|
pullTotal = 0;
|
||||||
/** Souscription au flux de pull pour pouvoir l'annuler. */
|
/** Souscription au flux de pull pour pouvoir l'annuler. */
|
||||||
private pullSubscription: Subscription | null = null;
|
private pullSubscription: Subscription | null = null;
|
||||||
|
/** True si on a recu un evenement {status:"success"} d'Ollama. Sans ca,
|
||||||
|
* une fermeture de stream (timeout proxy, perte reseau) ne doit PAS etre
|
||||||
|
* interpretee comme une reussite. */
|
||||||
|
private pullSucceeded = false;
|
||||||
|
|
||||||
/** Modele en cours de suppression (nom) pour disabler son bouton. */
|
/** Modele en cours de suppression (nom) pour disabler son bouton. */
|
||||||
deletingModel: string | null = null;
|
deletingModel: string | null = null;
|
||||||
@@ -293,6 +297,9 @@ export class SettingsComponent implements OnInit {
|
|||||||
if (event.status) this.pullStatus = event.status;
|
if (event.status) this.pullStatus = event.status;
|
||||||
if (event.completed != null) this.pullCompleted = event.completed;
|
if (event.completed != null) this.pullCompleted = event.completed;
|
||||||
if (event.total != null) this.pullTotal = event.total;
|
if (event.total != null) this.pullTotal = event.total;
|
||||||
|
// Marqueur explicite : Ollama emet "success" en derniere ligne quand
|
||||||
|
// le pull est reellement complet (manifest + layers + verify).
|
||||||
|
if (event.status === 'success') this.pullSucceeded = true;
|
||||||
},
|
},
|
||||||
error: (err) => {
|
error: (err) => {
|
||||||
this.errorMessage = this.extractError(err, `Echec du telechargement de ${name}.`);
|
this.errorMessage = this.extractError(err, `Echec du telechargement de ${name}.`);
|
||||||
@@ -300,6 +307,14 @@ export class SettingsComponent implements OnInit {
|
|||||||
},
|
},
|
||||||
complete: () => {
|
complete: () => {
|
||||||
this.pullInProgress = false;
|
this.pullInProgress = false;
|
||||||
|
if (!this.pullSucceeded) {
|
||||||
|
// Stream ferme sans 'success' final = connexion coupee
|
||||||
|
// (timeout proxy, perte reseau, ...). Le modele est probablement
|
||||||
|
// partiellement telecharge ; Ollama gardera les couches deja DL.
|
||||||
|
this.errorMessage = `Telechargement de ${name} interrompu avant la fin. Relancez pour reprendre.`;
|
||||||
|
this.refreshModels();
|
||||||
|
return;
|
||||||
|
}
|
||||||
this.successMessage = `Modele ${name} telecharge.`;
|
this.successMessage = `Modele ${name} telecharge.`;
|
||||||
this.refreshModels();
|
this.refreshModels();
|
||||||
// Si l'utilisateur n'avait aucun modele, on selectionne celui-ci.
|
// Si l'utilisateur n'avait aucun modele, on selectionne celui-ci.
|
||||||
@@ -326,6 +341,7 @@ export class SettingsComponent implements OnInit {
|
|||||||
this.pullStatus = '';
|
this.pullStatus = '';
|
||||||
this.pullCompleted = 0;
|
this.pullCompleted = 0;
|
||||||
this.pullTotal = 0;
|
this.pullTotal = 0;
|
||||||
|
this.pullSucceeded = false;
|
||||||
if (this.pullSubscription) {
|
if (this.pullSubscription) {
|
||||||
this.pullSubscription.unsubscribe();
|
this.pullSubscription.unsubscribe();
|
||||||
this.pullSubscription = null;
|
this.pullSubscription = null;
|
||||||
|
|||||||
Reference in New Issue
Block a user