init: llm-wiki-web con FastAPI + Ollama
This commit is contained in:
commit
08291b578c
19 files changed
+1030
No files matched your search
@@ -0,0 +1,94 @@
|
||||
"""
|
||||
Ricerca nei file wiki
|
||||
"""
|
||||
|
||||
import re
|
||||
from pathlib import Path
|
||||
from typing import List, Dict
|
||||
import config
|
||||
|
||||
|
||||
def search_wiki(query: str, limit: int = 20) -> List[Dict]:
|
||||
"""Cerca nei contenuti delle pagine wiki."""
|
||||
results = []
|
||||
wiki_root = config.WIKI_ROOT
|
||||
|
||||
query_lower = query.lower()
|
||||
|
||||
for md_file in wiki_root.glob("wiki/**/*.md"):
|
||||
if md_file.name in ["index.md", "log.md"]:
|
||||
continue
|
||||
|
||||
try:
|
||||
content = md_file.read_text(encoding="utf-8").lower()
|
||||
if query_lower in content:
|
||||
# Trova le linee con il match
|
||||
lines = md_file.read_text(encoding="utf-8").split("\n")
|
||||
matches = []
|
||||
for i, line in enumerate(lines):
|
||||
if query_lower in line.lower():
|
||||
matches.append({
|
||||
"line": i + 1,
|
||||
"text": line.strip()[:200]
|
||||
})
|
||||
|
||||
results.append({
|
||||
"file": str(md_file.relative_to(wiki_root)),
|
||||
"name": md_file.stem,
|
||||
"category": md_file.parent.name,
|
||||
"matches": matches[:5] # max 5 match per file
|
||||
})
|
||||
|
||||
if len(results) >= limit:
|
||||
break
|
||||
|
||||
except Exception:
|
||||
continue
|
||||
|
||||
return results
|
||||
|
||||
|
||||
def search_by_name(query: str) -> List[Dict]:
|
||||
"""Cerca per nome file/titolo."""
|
||||
results = []
|
||||
wiki_root = config.WIKI_ROOT
|
||||
query_lower = query.lower()
|
||||
|
||||
for md_file in wiki_root.glob("wiki/**/*.md"):
|
||||
if md_file.name in ["index.md", "log.md"]:
|
||||
continue
|
||||
|
||||
name_lower = md_file.stem.lower()
|
||||
if query_lower in name_lower:
|
||||
results.append({
|
||||
"file": str(md_file.relative_to(wiki_root)),
|
||||
"name": md_file.stem,
|
||||
"category": md_file.parent.name
|
||||
})
|
||||
|
||||
return results
|
||||
|
||||
|
||||
def get_recent_pages(limit: int = 10) -> List[Dict]:
|
||||
"""Returns the most recently modified pages."""
|
||||
results = []
|
||||
wiki_root = config.WIKI_ROOT
|
||||
|
||||
files_with_mtime = []
|
||||
for md_file in wiki_root.glob("wiki/**/*.md"):
|
||||
if md_file.name in ["index.md", "log.md"]:
|
||||
continue
|
||||
mtime = md_file.stat().st_mtime
|
||||
files_with_mtime.append((mtime, md_file))
|
||||
|
||||
files_with_mtime.sort(reverse=True)
|
||||
|
||||
for mtime, md_file in files_with_mtime[:limit]:
|
||||
results.append({
|
||||
"file": str(md_file.relative_to(wiki_root)),
|
||||
"name": md_file.stem,
|
||||
"category": md_file.parent.name,
|
||||
"mtime": mtime
|
||||
})
|
||||
|
||||
return results
|
||||
Reference in new issue
Block a user