F5 — docs: единый контракт файлового клиента #39

Closed
opened 2026-09-16 17:21:06 +01:00 by eSlider · 1 comment
Owner

Epic: #34

F5 — docs: единый контракт файлового клиента

Цель

Зафиксировать контракт и правила выбора бэкенда, чтобы не переизобретали.

Артефакты

  • docs/unified-file-client.md (или раздел в README): модель Entry,
    FileStore/Searcher, бэкенды (REST/WebDAV/PG/ES), что read/write/где поиск,
    конфиг env (имена), как добавить бэкенд, ограничения (ES/PG доступ).
  • Обновить README/AGENTS.md (топология файлов, file_*.go).
  • Линк из skill office-assistant/oo-clients-projects на новый раздел.

Критерии

  • Документ описывает контракт и как им пользоваться из *Client/CLI.
  • README/AGENTS обновлены (без дублей).
  • Ссылки из соответствующих скиллов добавлены.
Epic: #34 ## F5 — docs: единый контракт файлового клиента ### Цель Зафиксировать контракт и правила выбора бэкенда, чтобы не переизобретали. ### Артефакты - `docs/unified-file-client.md` (или раздел в README): модель `Entry`, `FileStore`/`Searcher`, бэкенды (REST/WebDAV/PG/ES), что read/write/где поиск, конфиг env (имена), как добавить бэкенд, ограничения (ES/PG доступ). - Обновить README/AGENTS.md (топология файлов, `file_*.go`). - Линк из skill `office-assistant`/`oo-clients-projects` на новый раздел. ### Критерии - [ ] Документ описывает контракт и как им пользоваться из `*Client`/CLI. - [ ] README/AGENTS обновлены (без дублей). - [ ] Ссылки из соответствующих скиллов добавлены.
eSlider added the docs label 2026-09-16 17:21:15 +01:00
Author
Owner

F5 #39 — отчёт: единый контракт файлового клиента

PR #46: #46
Ветка docs/file-client#39 · коммит c59ad64 (base main). Не мержу и не закрываю.

Что задокументировано

Новый docs/unified-file-client.md (caveman-docs, reference):

  • Модель — Kind (File/Folder), Entry (поля + Updated/FilesCount),
    SearchQuery, SearchHit.
  • Интерфейсы — FileStore (9 методов), Searcher, TextIndex.
  • Бэкенды — таблица: REST (rest, read+write), WebDAV (dav),
    SQL (postgres/mysql, read-only, ErrReadOnly), OnlyOffice ES
    (elasticsearch), свой ES (es-text, PDF/сканы).
  • Фасад FileClient — c.Files(), Read/Write/Search, порядок
    readOrder (postgres→rest→dav), writeOrder (rest→dav), searchOrder;
    RegisterStore/RegisterSearcher. Fallback только на transient
    (429/502/503/504); Download и запись — без fallback.
  • CLI — oo search QUERY (--content, --folder, --limit,
    --backend oo|own, --json); oo index folder|files + флаги.
  • Env — только имена: ONLYOFFICE_ES_URL/_ES_INDEX/_ES_TEXT_INDEX/_TENANT,
    ONLYOFFICE_DSN/_PG_DRIVER/_PG_TENANT/_PG_HOST…/_SSLMODE,
    MINIO_*, OO_*.
  • Ограничения — ES-контент только Office; PDF + встроенные вложения
    только в своём oo_docs_text (pdfdetach), наполнение вручную; SQL read-only,
    InContent игнорируется; ES без auth → туннель.
  • Как добавить бэкенд — 6 шагов (файл/интерфейс/const/регистрация/порядок/
    тесты).

Обновления репо

  • README.md: секция Unified file client (ссылка на док); Search→
    «Search and index», исправлены env; таблица команд — search --backend oo|own
    и строка index.
  • AGENTS.md: топология file_core.go…file_facade.go (модель, REST/DAV,
    read-only SQL, ES, свой PDF-индекс, фасад), cmd/oo/search.go и index.go,
    ссылка на док.
  • Скиллы хоста (не в PR): office-assistant/SKILL.md — ссылка в Related и
    oo строка; oo-clients-projects.md — раздел Files/search. Канон
    inventar/docs/skills/ при необходимости синкну через skill-sync.

Проверка

  • go build ./..., go vet ./..., go test ./... — зелёные (только доки,
    код не тронут).
  • gitleaks: no leaks. Секретов/PII нет, env только именами.

Блокеры

Нет.

## F5 #39 — отчёт: единый контракт файлового клиента PR #46: https://git.produktor.io/eSlider/go-onlyoffice/pulls/46 Ветка `docs/file-client#39` · коммит `c59ad64` (base `main`). Не мержу и не закрываю. ### Что задокументировано Новый `docs/unified-file-client.md` (caveman-docs, reference): - **Модель** — `Kind` (`File`/`Folder`), `Entry` (поля + `Updated`/`FilesCount`), `SearchQuery`, `SearchHit`. - **Интерфейсы** — `FileStore` (9 методов), `Searcher`, `TextIndex`. - **Бэкенды** — таблица: REST (`rest`, read+write), WebDAV (`dav`), SQL (`postgres`/`mysql`, read-only, `ErrReadOnly`), OnlyOffice ES (`elasticsearch`), свой ES (`es-text`, PDF/сканы). - **Фасад `FileClient`** — `c.Files()`, `Read/Write/Search`, порядок `readOrder` (postgres→rest→dav), `writeOrder` (rest→dav), `searchOrder`; `RegisterStore`/`RegisterSearcher`. Fallback только на transient (429/502/503/504); `Download` и запись — без fallback. - **CLI** — `oo search QUERY` (`--content`, `--folder`, `--limit`, `--backend oo|own`, `--json`); `oo index folder|files` + флаги. - **Env** — только имена: `ONLYOFFICE_ES_URL/_ES_INDEX/_ES_TEXT_INDEX/_TENANT`, `ONLYOFFICE_DSN/_PG_DRIVER/_PG_TENANT/_PG_HOST…/_SSLMODE`, `MINIO_*`, `OO_*`. - **Ограничения** — ES-контент только Office; PDF + **встроенные вложения** только в своём `oo_docs_text` (pdfdetach), наполнение вручную; SQL read-only, `InContent` игнорируется; ES без auth → туннель. - **Как добавить бэкенд** — 6 шагов (файл/интерфейс/const/регистрация/порядок/ тесты). ### Обновления репо - `README.md`: секция **Unified file client** (ссылка на док); Search→ «Search and index», исправлены env; таблица команд — `search --backend oo|own` и строка `index`. - `AGENTS.md`: топология `file_core.go`…`file_facade.go` (модель, REST/DAV, read-only SQL, ES, свой PDF-индекс, фасад), `cmd/oo/search.go` и `index.go`, ссылка на док. - Скиллы хоста (не в PR): `office-assistant/SKILL.md` — ссылка в Related и `oo` строка; `oo-clients-projects.md` — раздел Files/search. Канон `inventar/docs/skills/` при необходимости синкну через `skill-sync`. ### Проверка - `go build ./...`, `go vet ./...`, `go test ./...` — зелёные (только доки, код не тронут). - gitleaks: `no leaks`. Секретов/PII нет, env только именами. ### Блокеры Нет.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: eSlider/go-onlyoffice#39