* feat(docs): mirror every docs/ page in all 65 locales Extends the documentation mirrors from the 22-page core set (#13940) to every Markdown page under docs/: 152 sources x 65 locales = 9,880 mirrors (6,208 new), language bars rewritten for the full locale list, state adopted so the blocking drift gate now covers all 152 pages. run-translation.mjs: an oversized block made only of table rows or list items (PROVIDER_REFERENCE.md 244-row table, FREE_TIERS.md 71-item list) is cut at item boundaries and rejoined without a blank line — the single 16-40 KB request outlived the backend socket for verbose scripts. 48 older mirrors whose tables had lost rows were retranslated with --force. * docs(i18n): refresh mirrors for the sources the base changed since the branch cut Section-level retranslation of the 29 docs (and README.md) whose source or mirrors moved on release/v3.8.51 during the run, then state adoption; the drift gate is green again on the merged tree.
20 KiB
Search Tools Studio (Български)
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Функционалност: Search Tools Studio — унифицирано работно пространство с уеб инструменти за
/dashboard/search-tools. Планове:18-search-tools-studio-redesign.plan.md+_orchestration/master-plan-group-C.mdСъстояние: Пуснато във v3.8.6
Общ преглед
Search Tools Studio преобразува /dashboard/search-tools от базова среда за експерименти с търсене в
Studio с три раздела, обединяващо уеб търсене, извличане на уеб съдържание и паралелно сравнение на доставчици.
┌ Инструменти за търсене ────────────────────────────────────────────────┐
│ [🔍 Търсене] [📄 Извличане] [⚖ Сравнение] 142ms · $0.001 </> │
│ ⓘ [Ръководство за модалностите] │
├──────────────────────────────────────────┬─────────────────────────────┤
│ {съдържание на активния раздел} │ ─ Конфигурация │
│ │ Доставчик [авто ∨] │
│ │ 🟢 Serper $0.001 │
│ │ 🟢 Tavily $0.008 │
│ │ 🔥 Firecrawl (извличане) │
│ │ Тип [уеб | новини] │
│ │ Цяла страница [ ] │
│ │ Формат [md|text|html] │
│ │ Модел за преранжиране [∨] │
└──────────────────────────────────────────┴─────────────────────────────┘
Раздели
Раздел „Търсене“
Развива съществуващите SearchForm + ResultsPanel + RerankPanel в самостоятелен раздел:
- Заявка → резултати (заглавие, URL, откъс, оценка за релевантност).
- Метаданни за доставчика в панела „Конфигурация“ (цена, квота, състояние).
- Секция за преранжиране: избор на модел за преранжиране, преподреждане на резултатите и показване на
positionDelta. - Празно състояние с призив за действие, когато няма конфигурирани доставчици за търсене.
- История на търсенията чрез
SearchHistory.tsx. - Извиква
POST /v1/search(съществуваща крайна точка, без промени).
Раздел „Извличане“
Нов раздел за извличане на съдържание от URL чрез POST /v1/web/fetch (създаден в план 05):
- Входни данни: URL + превключвател за цяла страница + селектор за формат (markdown / текст / HTML).
- Изпращане → извличане → визуализиране на
ScrapeResult.tsx. ScrapeResultвизуализира предварителен преглед на markdown + превключвател за необработен изглед.- Ограничение: ако тялото на отговора е над 256 KB, потребителският интерфейс показва
(съкратено, преглед на необработеното съдържание)и го отваря в модален прозорец на Monaco (D21). - Панел с метаданни: доставчик (firecrawl/jina-reader/tavily-search/tinyfish/nimble-search/anysearch-search), латентност, цена, размер на отговора, брой връзки.
- Използва hook-а
useScrapeFetch.ts.
Раздел „Сравнение“
Изпълнява една и съща заявка/URL паралелно чрез до 4 доставчика (D22):
- Паралелни колони за всеки доставчик.
- Метрики: латентност, цена, брой резултати, размер на отговора.
- Изчисляване на припокриването на URL адресите при търсене (брой споделени URL адреси спрямо първоначалния резултат).
- Извиква
POST /v1/search(търсене) илиPOST /v1/web/fetch(извличане) за всеки доставчик.
Панел за конфигурация (споделен)
SearchToolsConfigPane.tsx — винаги видим, с възможност за свиване.
| Поле | Бележки |
|---|---|
| Доставчик | Падащо меню със значка за състояние (конфигуриран / липсващ / ограничен) |
| Тип | web или news (само за търсене) |
| Цяла страница | Превключвател за извличане — цялата страница или първото видимо съдържание |
| Формат | markdown, text или html (само за извличане) |
| Модел за преранжиране | Незадължителен модел за преранжиране след търсене |
| История | Сгъваема секция с история на търсенията |
SearchConceptCard
SearchConceptCard.tsx — винаги видим, сгъваем акордеон. Обяснява:
| Концепция | Кратко описание |
|---|---|
| Търсене | Извлича списък с уеб резултати (заглавие, URL, откъс, оценка за релевантност) |
| Извличане | Извлича пълното съдържание на URL (markdown, текст или HTML) |
| Сравнение | Изпълнява една и съща заявка паралелно при N доставчика |
| Пренареждане | Пренарежда резултатите чрез LLM, за да подобри релевантността спрямо заявката |
| Автоматично (най-евтино) | Автоматично избира най-евтиния наличен доставчик |
Каталог на доставчиците
ProviderCatalog.tsx предоставя пълния списък с доставчици от GET /api/search/providers
(разширен във F4, за да включва доставчици за извличане):
| kind | "search" (20 доставчика) или "fetch" (firecrawl, jina-reader, tavily-search, tinyfish, nimble-search, anysearch-search) |
Статусът се определя в момента на заявката, като се проверява дали съществуват идентификационни данни и дали всички ключове в момента са в период на изчакване.
Експортиране на код
ExportCodeModal (импортиран от Playground Studio) + codeExport.ts генерират
curl / Python / TypeScript фрагменти както за извиквания към /v1/search, така и към /v1/web/fetch.
Заместващата стойност за API ключа винаги е $OMNIROUTE_API_KEY (D11, споделена с Playground Studio).
Промени в бекенда
За тази функционалност беше необходима само една промяна в бекенда:
Разширен GET /api/search/providers
src/app/api/search/providers/route.ts беше разширен, за да:
- Включва всичките 6 доставчика за извличане (
firecrawl,jina-reader,tavily-search,tinyfish,nimble-search,anysearch-search) в масива. - Добавя
kind: "search" | "fetch"към всеки елемент. - Добавя
status: "configured" | "missing" | "rate_limited", определен от текущото състояние на идентификационните данни. - Запазва обратната съвместимост — съществуващите полета (
id,nameи т.н.) остават непроменени.
Ключови файлове
| Път | Предназначение |
|---|---|
src/app/(dashboard)/dashboard/search-tools/SearchToolsClient.tsx |
Обвивка на студиото, управление на разделите |
src/app/(dashboard)/dashboard/search-tools/components/SearchToolsTopBar.tsx |
Раздели + метрики + бутон за експортиране |
src/app/(dashboard)/dashboard/search-tools/components/SearchToolsConfigPane.tsx |
Споделен панел за конфигурация |
src/app/(dashboard)/dashboard/search-tools/components/SearchConceptCard.tsx |
Обяснителни карти (винаги видими) |
src/app/(dashboard)/dashboard/search-tools/components/ProviderCatalog.tsx |
Списък с доставчици и метаданни |
src/app/(dashboard)/dashboard/search-tools/components/ScrapeResult.tsx |
Преглед на markdown + превключвател към необработен изглед |
src/app/(dashboard)/dashboard/search-tools/components/tabs/SearchTab.tsx |
Раздел за търсене + пренареждане |
src/app/(dashboard)/dashboard/search-tools/components/tabs/ScrapeTab.tsx |
Раздел за извличане |
src/app/(dashboard)/dashboard/search-tools/components/tabs/CompareTab.tsx |
Раздел за сравнение между множество доставчици |
src/app/(dashboard)/dashboard/search-tools/hooks/useScrapeFetch.ts |
Hook за извличане |
src/app/api/search/providers/route.ts |
Разширен с kind + status + доставчици за извличане |
open-sse/config/searchRegistry.ts |
Единен източник на достоверни метаданни за доставчиците |
Отстраняване на неизправности
| Симптом | Причина | Решение |
|---|---|---|
| Разделът за извличане показва „крайната точка не е налична“ | /v1/web/fetch не е свързана |
Проверете дали план 05 е обединен; проверете дали src/app/api/v1/web/fetch/route.ts съществува |
| Каталогът с доставчици показва всички като „липсващи“ | Идентификационните данни не са конфигурирани | Добавете идентификационни данни в /dashboard/providers |
| Извлеченото съдържание е съкратено | Отговорът надвишава ограничението от 256 KB | Очаквано поведение (D21). Използвайте бутона „преглед на необработеното съдържание“ за цялото съдържание |
| Разделът за сравнение показва само 2 доставчика | Ограничението на честотата е активно | Два или повече доставчика може да са в период на изчакване — проверете състоянието им в панела за конфигурация |
| „Размер“ се показва като необработен ключ в таблицата | Липсва i18n ключ | Проверете дали search.size съществува във файла на локала; изградете i18n наново |
Препратки
- Главен план:
_tasks/features-v3.8.6/refactorpages/_orchestration/master-plan-group-C.md - План на функционалността:
_tasks/features-v3.8.6/refactorpages/18-search-tools-studio-redesign.plan.md - Регистър на доставчиците за търсене:
open-sse/config/searchRegistry.ts - Playground Studio (споделени
ExportCodeModal+codeExport.ts):docs/frameworks/PLAYGROUND_STUDIO.md - Бекенд за извличане от уеб:
src/app/api/v1/web/fetch/route.ts