Зафиксировать контракт и правила выбора бэкенда, чтобы не переизобретали.
Артефакты
docs/unified-file-client.md (или раздел в README): модель Entry, FileStore/Searcher, бэкенды (REST/WebDAV/PG/ES), что read/write/где поиск,
конфиг env (имена), как добавить бэкенд, ограничения (ES/PG доступ).
Линк из 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
Бэкенды — таблица: 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.
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 только именами.
### Блокеры
Нет.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Epic: #34
F5 — docs: единый контракт файлового клиента
Цель
Зафиксировать контракт и правила выбора бэкенда, чтобы не переизобретали.
Артефакты
docs/unified-file-client.md(или раздел в README): модельEntry,FileStore/Searcher, бэкенды (REST/WebDAV/PG/ES), что read/write/где поиск,конфиг env (имена), как добавить бэкенд, ограничения (ES/PG доступ).
file_*.go).office-assistant/oo-clients-projectsна новый раздел.Критерии
*Client/CLI.F5 #39 — отчёт: единый контракт файлового клиента
PR #46: #46
Ветка
docs/file-client#39· коммитc59ad64(basemain). Не мержу и не закрываю.Что задокументировано
Новый
docs/unified-file-client.md(caveman-docs, reference):Kind(File/Folder),Entry(поля +Updated/FilesCount),SearchQuery,SearchHit.FileStore(9 методов),Searcher,TextIndex.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.oo search QUERY(--content,--folder,--limit,--backend oo|own,--json);oo index folder|files+ флаги.ONLYOFFICE_ES_URL/_ES_INDEX/_ES_TEXT_INDEX/_TENANT,ONLYOFFICE_DSN/_PG_DRIVER/_PG_TENANT/_PG_HOST…/_SSLMODE,MINIO_*,OO_*.только в своём
oo_docs_text(pdfdetach), наполнение вручную; SQL read-only,InContentигнорируется; ES без auth → туннель.тесты).
Обновления репо
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,ссылка на док.
office-assistant/SKILL.md— ссылка в Related иooстрока;oo-clients-projects.md— раздел Files/search. Канонinventar/docs/skills/при необходимости синкну черезskill-sync.Проверка
go build ./...,go vet ./...,go test ./...— зелёные (только доки,код не тронут).
no leaks. Секретов/PII нет, env только именами.Блокеры
Нет.