ADR-0007: schema di una wiki interrogabile con immagini; documentazione generale
- Nuovo ADR-0007: convenzione in tre parti (indice con gli id delle figure, catalogo JSON con campi minimi, istruzioni solo-query) e ripartizione dei compiti tra wiki, motore e app. Nessuna cartella o formato imposti dall'app. - ADR-0006, README, ROADMAP, PROJECT_STATE, TESTING: esempi resi generici (nessun riferimento a una wiki specifica) e nota sull'assenza di uno standard. - Test delle immagini con struttura e testi neutri. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
5870de6fda
commit
f2086de31d
8 files changed
+98
-27
No files matched your search
@@ -207,14 +207,14 @@ public sealed class MarkdownImageTests : IDisposable
|
||||
Assert.Contains("[guasta]", Text(view));
|
||||
}
|
||||
|
||||
// Struttura tipo wiki: <radice>/raw/immagini.json, <radice>/raw/immagini/<file>, exe in <radice>/agent-wiki-ui/
|
||||
// Struttura tipo wiki: <radice>/catalogo.json, <radice>/figure/<file>, exe in <radice>/query/
|
||||
string Wiki(string name, params string[] files)
|
||||
{
|
||||
var root = Path.Combine(dir, name);
|
||||
Directory.CreateDirectory(Path.Combine(root, "raw", "immagini"));
|
||||
Directory.CreateDirectory(Path.Combine(root, "agent-wiki-ui"));
|
||||
foreach (var f in files) File.WriteAllBytes(Path.Combine(root, "raw", "immagini", f), PngFactory.Create(24, 12));
|
||||
File.WriteAllText(Path.Combine(root, "raw", "immagini.json"), "{\"figures\":[]}");
|
||||
Directory.CreateDirectory(Path.Combine(root, "figure"));
|
||||
Directory.CreateDirectory(Path.Combine(root, "query"));
|
||||
foreach (var f in files) File.WriteAllBytes(Path.Combine(root, "figure", f), PngFactory.Create(24, 12));
|
||||
File.WriteAllText(Path.Combine(root, "catalogo.json"), "{\"figures\":[]}");
|
||||
return root;
|
||||
}
|
||||
|
||||
@@ -222,7 +222,7 @@ public sealed class MarkdownImageTests : IDisposable
|
||||
public void Immagine_percorso_relativo_alla_radice()
|
||||
{
|
||||
var root = Wiki("wiki-a", "fig1.png");
|
||||
var (_, view) = Show("", baseDir: Path.Combine(root, "agent-wiki-ui"));
|
||||
var (_, view) = Show("", baseDir: Path.Combine(root, "query"));
|
||||
Assert.Single(Images(view));
|
||||
Assert.DoesNotContain("[Figura 1]", Text(view));
|
||||
}
|
||||
@@ -231,16 +231,16 @@ public sealed class MarkdownImageTests : IDisposable
|
||||
public void Immagine_cartella_piu_vicina()
|
||||
{
|
||||
var root = Wiki("wiki-b");
|
||||
File.WriteAllBytes(Path.Combine(root, "raw", "immagini", "x.png"), PngFactory.Create(30, 30));
|
||||
var exeDir = Path.Combine(root, "agent-wiki-ui");
|
||||
Directory.CreateDirectory(Path.Combine(exeDir, "raw", "immagini"));
|
||||
File.WriteAllBytes(Path.Combine(exeDir, "raw", "immagini", "x.png"), PngFactory.Create(10, 10));
|
||||
File.WriteAllBytes(Path.Combine(root, "figure", "x.png"), PngFactory.Create(30, 30));
|
||||
var exeDir = Path.Combine(root, "query");
|
||||
Directory.CreateDirectory(Path.Combine(exeDir, "figure"));
|
||||
File.WriteAllBytes(Path.Combine(exeDir, "figure", "x.png"), PngFactory.Create(10, 10));
|
||||
|
||||
var (_, view) = Show("", baseDir: exeDir);
|
||||
var (_, view) = Show("", baseDir: exeDir);
|
||||
var bmp = Assert.IsAssignableFrom<Bitmap>(Assert.Single(Images(view)).Source);
|
||||
Assert.Equal(new PixelSize(10, 10), bmp.PixelSize); // vince la cartella più vicina all'exe
|
||||
|
||||
var (_, nowhere) = Show("", baseDir: exeDir);
|
||||
var (_, nowhere) = Show("", baseDir: exeDir);
|
||||
Assert.Empty(Images(nowhere));
|
||||
Assert.Contains("[y]", Text(nowhere));
|
||||
}
|
||||
@@ -248,18 +248,18 @@ public sealed class MarkdownImageTests : IDisposable
|
||||
[AvaloniaFact]
|
||||
public void Immagine_risposta_stile_wiki()
|
||||
{
|
||||
var root = Wiki("wiki-c", "455dd3d0.png");
|
||||
var root = Wiki("wiki-c", "schema-a.png");
|
||||
var risposta = """
|
||||
La struttura generica è in Figura 1.
|
||||
Lo schema è in Figura 1.
|
||||
|
||||

|
||||

|
||||
|
||||
Figura 1 - struttura generica di un dichetopirrolopirrolo · §1.1 r.73 · [[fig-001]]
|
||||
Figura 1 - schema generale del sistema · §2.1 r.40 · [[fig-001]]
|
||||
""";
|
||||
var (_, view) = Show(risposta, baseDir: Path.Combine(root, "agent-wiki-ui"));
|
||||
var (_, view) = Show(risposta, baseDir: Path.Combine(root, "query"));
|
||||
Assert.Single(Images(view));
|
||||
var text = Text(view);
|
||||
Assert.Contains("Figura 1 - struttura generica", text);
|
||||
Assert.Contains("Figura 1 - schema generale", text);
|
||||
Assert.Contains("[[fig-001]]", text); // il link alla nota resta testo: l'app non legge il catalogo JSON
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user