runbook: nyora-notes-tt onedrive-sync doublons + extensions inconvertibles (06/08/2026)
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
# nyora-notes-tt / onedrive-sync -- doublons non recatalogues + extensions inconvertibles (06/08/2026)
|
||||
|
||||
**Instance auteur** : hermes-tt (session Claude, suite etape 3 plan onedrive-sync)
|
||||
**Date** : 2026-08-06
|
||||
**Tags** : nyora-notes-tt, onedrive-sync, catalog, doublons, extensions, sqlite
|
||||
**Statut** : valide
|
||||
|
||||
---
|
||||
|
||||
## Probleme
|
||||
|
||||
Deux points a clarifier/corriger apres l'etape 3 (auto-actualisation OneDrive) du plan onedrive-sync :
|
||||
|
||||
1. Le compteur `remaining_cataloged` affichait 0 alors que la base comptait 362 lignes `cataloged`, laissant craindre une desynchronisation entre le comptage et la realite du catalogue.
|
||||
2. Une liste d'extensions non convertibles (svg, py, pyc, telechargement, xlsb, pbix, odt, ods, numbers, jnlp, eps, ai, cdpz, rar, zip, excalidrawlib, bat, mp4, mp3) provoquait des tentatives de conversion vouees a l'echec a chaque passage du catalogueur.
|
||||
|
||||
---
|
||||
|
||||
## Contexte et contraintes
|
||||
|
||||
`onedrive_catalog.py` maintenait deja une liste `FONT_EXT` d'extensions exclues par principe (polices, non convertibles en Markdown). Le meme module gere le comptage `cataloged`/`remaining_cataloged` a partir de la table de catalogue OneDrive, avec une colonne `is_duplicate_of` qui marque les doublons detectes (memes contenus, chemins differents). Le service tourne en `build: .` (pas d'image prete) -- toute modif source exige rebuild + recreate du container pour prendre effet.
|
||||
|
||||
---
|
||||
|
||||
## Ce qui NE fonctionne PAS
|
||||
|
||||
| Tentative | Symptome | Raison de l'echec |
|
||||
|---|---|---|
|
||||
| Traiter `remaining_cataloged=0` comme un bug de comptage | Semblait incoherent avec `cataloged=362` en base | Faux probleme : les 362 lignes ont `is_duplicate_of NOT NULL`, exclues par design du comptage `remaining` -- le doublon herite du traitement de l'original, il n'a pas a etre retraite |
|
||||
|
||||
---
|
||||
|
||||
## Solution validee
|
||||
|
||||
**Point 1 (doublons)** : verification en base que les 362 lignes `cataloged` ont bien toutes `is_duplicate_of NOT NULL`. Confirme que l'exclusion est voulue. Aucune correction de code necessaire.
|
||||
|
||||
**Point 2 (extensions inconvertibles)** : ajout des extensions listees a `UNCONVERTIBLE_EXT` dans `onedrive_catalog.py`, meme principe que `FONT_EXT` existant (skip direct au catalogage, pas de tentative de conversion). `js` retire de la liste initialement envisagee : `app.js` s'est converti avec succes en test, l'extension n'est pas categoriquement inconvertible.
|
||||
|
||||
```bash
|
||||
cd /volume1/docker/nyora-notes-tt && docker compose build && docker compose up -d
|
||||
```
|
||||
|
||||
DB nettoyee apres deploiement : 90 lignes obsoletes supprimees (docs/fts 7128->7038, vec inchange a 6651 -- coherent, les extensions exclues n'avaient pas d'embeddings).
|
||||
|
||||
Push Gitea : bolbol/nyora-notes-tt, commit 70d0a33.
|
||||
|
||||
---
|
||||
|
||||
## Verification
|
||||
|
||||
```bash
|
||||
docker exec nyora-notes-tt cat /app/catalog_test_result.json
|
||||
```
|
||||
|
||||
Resultat obtenu (06/08/2026, apres rebuild) :
|
||||
|
||||
```json
|
||||
{
|
||||
"docs_avant": 7038,
|
||||
"result": {"nouveau": 0, "modifie": 0, "doublon": 0, "inchange": 7038, "erreur_lecture": 0, "disparus": 0},
|
||||
"docs_apres": 7038,
|
||||
"bad_ext_still_present": 0
|
||||
}
|
||||
```
|
||||
|
||||
`bad_ext_still_present == 0` et `docs_apres == docs_avant` : fix confirme, aucune reinsertion des extensions exclues, aucune regression sur le reste du corpus.
|
||||
|
||||
---
|
||||
|
||||
## Pieges specifiques DSM / NAS
|
||||
|
||||
- Depuis mcp-nas, TOUJOURS `172.17.0.1` pour joindre nyora-notes-tt en HTTP -- `192.168.100.33` "hang" silencieusement (pas d'erreur, pas de timeout explicite, juste pas de reponse). Piege deja documente ailleurs, rappele ici car directement rencontre pendant cette session.
|
||||
- L'alias `docker` dans mcp-nas est un alias SSH (`ssh nas-host .../docker`) -- fonctionne en execution directe/synchrone mais PAS a l'interieur d'un `nohup`/arriere-plan lance depuis le shell mcp-nas. Pour lancer un script long en arriere-plan sur le NAS, passer par une vraie session SSH explicite :
|
||||
|
||||
```bash
|
||||
ssh nas-host "cd /volume1/docker/<repo> && /var/packages/ContainerManager/target/usr/bin/docker <cmd>"
|
||||
```
|
||||
|
||||
- Avant d'investiguer un ecart de comptage apparent dans une base de catalogage, verifier d'abord les colonnes d'exclusion by-design (ex. `is_duplicate_of`) avant de suspecter un bug de logique.
|
||||
|
||||
---
|
||||
|
||||
## References
|
||||
|
||||
- Plan onedrive-sync, etape 3 (auto-actualisation OneDrive) -- desormais terminee suite a cette session.
|
||||
- Repo : bolbol/nyora-notes-tt, commit 70d0a33.
|
||||
Reference in New Issue
Block a user