Lalabase
Tickets, Doku, Zeiterfassung und Kundengespräche an einem Ort, durchsuchbar per KI. Für Softwarefirmen mit Kundenprojekten. Open Source: auf deinem eigenen Server oder in unserer Cloud in Deutschland.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Přehled cen dodavatelů
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Ceník dodavatelů — Mistři dřeva s.r.o. Aplikace, do které se nahrávají PDF doklady od dodavatelů — faktury i cenové nabídky. Z každého dokladu se vytěží všechny položky a z nich se postupně staví databáze nákupních cen materiálu. Pak stačí zadat, co hledáte — třeba kvh 60x120 — a uvidíte, za kolik ten materiál máte u kterého dodavatele, jak se cena vyvíjela a kolik jste u koho celkem odebrali. Doklady se dělí na dvě cenové větve, které se nikde nesčítají:檢視完整 README ↗
Aplikace, do které se nahrávají PDF doklady od dodavatelů — faktury i cenové
nabídky. Z každého dokladu se vytěží všechny položky a z nich se postupně staví
databáze nákupních cen materiálu. Pak stačí zadat, co hledáte — třeba
kvh 60x120 — a uvidíte, za kolik ten materiál máte u kterého dodavatele, jak se
cena vyvíjela a kolik jste u koho celkem odebrali.
Doklady se dělí na dvě cenové větve, které se nikde nesčítají:
| Větev | Doklady | Co říká |
|---|---|---|
| Fakturováno | faktura, dodací list | co jste za materiál skutečně zaplatili |
| Nabídnuto | cenová nabídka, potvrzení objednávky | co vám kdo nezávazně nabídl, s platností do data |
Je to zásadní rozdíl: nabídková cena je nezávazná a může se od konečné faktury lišit. Kdyby se obojí míchalo, „nejlepší cena" by mohla být částka, kterou vám nikdo nikdy nenaúčtoval. Druh dokladu pozná aplikace sama z jeho záhlaví a při kontrole ho můžete přepsat.
V kalkulaci se ve výchozím režimu počítá platnou nabídkou, pokud je novější než poslední faktura — za tu materiál skutečně koupíte. Jde přepnout na „jen fakturované" nebo „jen nabídkové" ceny; u každé částky je vidět zdroj.
| Obrazovka | K čemu je |
|---|---|
| Nahrát doklady | Přetáhnete PDF (i víc najednou), Claude pozná druh dokladu a přečte hlavičku i všechny řádky. |
| Doklady | Kontrola a potvrzení. Dokud doklad nepotvrdíte, do cen se nezapočítá. |
| Materiály a ceny | Vyhledávání materiálu → srovnání cen mezi dodavateli + graf vývoje ceny. |
| Dodavatelé | Kolik u koho odebíráme — podklad pro vyjednávání množstevních slev. |
| Kalkulace | Poskládáte materiál na zakázku a spočítá se nákladová cena podle vašich skutečných cen. |
Každý dodavatel píše stejný materiál jinak. Aplikace to řeší ve třech krocích:
Řádky jako doprava, palety nebo zaokrouhlení se poznají samy a do cen se nezapočítávají.
Potřebujete Node.js 20 nebo novější.
npm install
cp .env.example .env
Do .env doplňte klíč z https://console.anthropic.com/settings/keys:
ANTHROPIC_API_KEY=sk-ant-...
Pak spusťte:
npm run dev
Aplikace poběží na http://localhost:3000. Databáze se vytvoří sama jako soubor
data/ceny.db.
Pokud si chcete aplikaci osahat dřív, než nahrajete první skutečnou fakturu:
npm run db:seed
Vloží tři smyšlené dodavatele a osm měsíců nákupů. Skript odmítne běžet, pokud
už v databázi nějaké faktury jsou. Až budete chtít začít načisto, smažte soubor
data/ceny.db a spusťte aplikaci znovu.
Repozitář je připravený tak, aby stejný kód běžel lokálně i na serveru — liší se jen dvě proměnné prostředí.
ANTHROPIC_API_KEY=sk-ant-...
DATABASE_URL=libsql://vase-databaze.turso.io
DATABASE_AUTH_TOKEN=...
Schéma databáze se založí samo při prvním spuštění.
Funguje i klasické npm run build && npm start s DATABASE_URL=file:./data/ceny.db.
V tom případě zálohujte adresář data/ — je v něm celá databáze včetně
originálních PDF faktur.
Vytěžení jednoho dokladu je jeden dotaz na Claude API — platí se jen za přijaté doklady, ne za prohlížení cen. Orientačně za jeden doklad o dvou stranách:
ANTHROPIC_MODEL | Cena za doklad |
|---|---|
claude-opus-5 (výchozí) | ~2,20 Kč |
claude-sonnet-5 | ~0,90 Kč |
claude-haiku-4-5 | ~0,45 Kč |
Druhá proměnná ANTHROPIC_EFFORT (low / medium / high, výchozí medium)
řídí, jak důkladně model doklad pročítá — vyšší hodnota znamená přesnější čtení
za delší zpracování a vyšší cenu.
Lokálně se obojí mění v .env. Na Vercelu v Settings → Environment Variables
a je potřeba pak dát Redeploy, jinak se změna neprojeví.
src/
app/ stránky (Next.js App Router)
components/ sdílené komponenty UI
db/ připojení k databázi, schéma, ukázková data
lib/
extract.ts čtení PDF faktur přes Claude API
matching.ts párování položek faktur na materiály v katalogu
normalize.ts normalizace názvů, rozměrů a podobnost textů
repo.ts dotazy nad databází (ceny, statistiky)
actions.ts serverové akce (nahrání, potvrzení faktury, kalkulace)
Do cen patří všechno nakoupené zboží, ne jen stavební materiál — nářadí, řezné kotouče, ochranné pomůcky, chemie i provozní materiál. Jejich cena se u dodavatelů liší stejně jako u řeziva. Mimo ceny zůstávají jen řádky, které nejsou zboží: doprava, manipulace, obaly, poplatky a zaokrouhlení.
Ceny jsou vždy bez DPH a po slevě. Když faktura uvádí jen cenu před slevou, dopočítá se z celkové částky za řádek.
Různé měrné jednotky. Dodavatelé často prodávají v jiné jednotce, než ve které tvoří cenu — „30 bal" a zároveň „630 m" s cenou za metr. Aplikace vždy ukládá tu jednotku, ke které se vztahuje jednotková cena, protože jen ta je srovnatelná.
Když stejný materiál účtuje jeden dodavatel za m² a druhý za balení, ceny se nikde nemíchají: jednotka je součástí identity ceny, každá má na kartě materiálu vlastní tabulku a označení „nejlevnější" platí vždy jen uvnitř jedné jednotky. Souhrny nahoře a v hledání počítají s tou jednotkou, ve které máte nejvíc dokladů, a na existenci ostatních upozorní.
Přepočet mezi jednotkami aplikace vědomě nedělá a dělat nebude. Obsah
balení bývá na dokladech jen v poznámce za názvem ((role/7,5m2)), takže by
se musel odhadovat — a špatný přepočet je horší než žádný, protože vypadá
věrohodně. Ceny se ukazují tak, jak je dodavatel naúčtoval; přepočet zůstává
na člověku, který zná zboží.
Kontrola se vyplatí. Model čte i špatně naskenovaná PDF, ale u prvních faktur od nového dodavatele si projděte řádky pozorně. Co jednou potvrdíte, se používá i příště.