docs: add async search docs#91
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #91 +/- ##
=======================================
Coverage 71.87% 71.87%
=======================================
Files 200 200
Lines 18076 18076
=======================================
+ Hits 12992 12993 +1
+ Misses 4365 4363 -2
- Partials 719 720 +1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
8d06e9f to
0748428
Compare
📝 WalkthroughWalkthroughAdds Async Search documentation: new English and Russian overview pages, and Async Search gRPC API sections (StartAsyncSearch, FetchAsyncSearchResult, GetAsyncSearchesList, CancelAsyncSearch, DeleteAsyncSearch) to public API docs; plus minor formatting fixes in examples and a quickstart docker-compose path tweak. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Assessment against linked issues
Assessment against linked issues: Out-of-scope changes
Possibly related PRs
Suggested labels
Suggested reviewers
✨ Finishing Touches🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 4
🧹 Nitpick comments (12)
docs/en/10-public-api.md (4)
742-750: Tighten grammar and wording for StartAsyncSearchMinor phrasing issues and pluralization (“documents ids”). Suggested copy edit:
-Start async search. - -Returns id that is later can be used to fetch a result, cancel and delete search. - -Similar to [`/ComplexSearch`](#complexsearch) but has additional fields `retention` and `with_docs`: -`retention` determines how long the data will be available. -And `with_docs` determines whether documents ids will be found and saved. -`with_total` will automatically be set to true when `with_docs` is true. +Start an async search. + +Returns an ID that can later be used to fetch results, cancel, or delete the search. + +Similar to [`/ComplexSearch`](#complexsearch), but with additional fields: `retention` and `with_docs`. +`retention` determines how long the data will be available. +`with_docs` determines whether document IDs that match the query are found and saved. +If `with_docs` is true, `with_total` is automatically set to true.
792-796: Clarify status values to match enum namesText lists human-readable statuses, while the example uses enum tokens. Recommend documenting the enum values explicitly for consistency.
-Partial response can be returned if search is not completed yet. `status` field indicates current search's status. -Available statuses are: `in progress`, `done`, `canceled`, `error`. +A partial response can be returned if the search is not yet complete. The `status` field indicates the current status. +Available statuses: `AsyncSearchStatusInProgress`, `AsyncSearchStatusDone`, `AsyncSearchStatusCanceled`, `AsyncSearchStatusError`.
905-913: Avoid using null in request example; prefer omissionThe text says an empty
{}returns all searches. Including"status": nullmay not reflect real API behavior (gRPC JSON null vs unset differ). Suggest omitting the field entirely.{ - "status": null, "size": 2, "offset": 0, "ids": ["c28c97d1-117a-45dc-a0cf-d080f22b2a10", "8e68d3d7-8e85-44a9-9b09-8de248a3b414"] }
917-957: Consistent casing in embedded request fieldsIn the list response, consider
withDocsinstead ofwith_docs(assuming protobuf JSON mapping). Align with the FetchAsyncSearchResult fix.- "with_docs": true + "withDocs": true- "with_docs": false + "withDocs": falsedocs/en/12-async-search.md (5)
5-8: Polish grammar and clarity in the introMinor wording fixes for readability and correctness.
-This ability is especially valuable when there is a need to execute some long-running queries which take longer time to complete. -Usually this queries are aggregations and histograms. -Async searches can be used to search documents too using `with_docs` field in the [`StartAsyncSearch`](10-public-api.md#startasyncsearch) request, though primary use case is aggregations. +This is especially valuable when executing long-running queries that take longer to complete. +Usually, these queries are aggregations and histograms. +Async searches can also search documents using the `with_docs` field in the [`StartAsyncSearch`](10-public-api.md#startasyncsearch) request, though the primary use case is aggregations.
9-15: Tighten retention wordingSlightly more direct phrasing.
-Async searches' data is persisted on disk for the specified `retention` time. -Minimum retention is 5 minutes and maximum is 30 days. -Retention is set by `retention` field in the [`StartAsyncSearch`](10-public-api.md#startasyncsearch) request. -The data is deleted after retention time passes. +Async search data is persisted on disk for the specified `retention` period. +Minimum retention is 5 minutes; maximum is 30 days. +Retention is set by the `retention` field in the [`StartAsyncSearch`](10-public-api.md#startasyncsearch) request. +Data is deleted after the retention period expires.
16-16: Hyphenate “read-only” and simplify-When data size exceeds the limits, read only mode is enabled: new async searches are rejected, existing not finished searches are suspended until some disk space is freed by deleting older searches by retention. +When data size exceeds the limits, read-only mode is enabled: new async searches are rejected, and unfinished searches are suspended until disk space is freed by deleting older searches per retention.
22-26: Clarify configuration bulletsSmall grammar tweaks.
-* `data_dir` [string] - specifies directory that contains data for asynchronous searches. By default will be subdirectory in `config.storage.data_dir`. +* `data_dir` [string] — directory that contains async search data. By default, it is a subdirectory of `config.storage.data_dir`. -* `concurrency` [int] - specifies the number of concurrent async search executions. -* `max_total_size` [bytes] - specifies maximum total size of async searches' data per one store. -* `max_size_per_request` [bytes] - specifies maximum total size of a single async search's data per one store. +* `concurrency` [int] — number of concurrent async search executions. +* `max_total_size` [bytes] — maximum total size of async search data per store. +* `max_size_per_request` [bytes] — maximum total size of a single async search’s data per store.
27-28: Minor phrasing-Configuration parameters are part of `async_search` object in the config file. +These parameters are part of the `async_search` object in the config file.docs/ru/10-public-api.md (3)
792-796: Уточнить значения статусов под enumТекст перечисляет человекочитаемые статусы, а в примере — enum. Лучше документировать enum-значения явно.
-Может быть возвращен результат частичного выполнения, если поиск еще не завершен. Поле `status` показывает текущий статус поиска. -Возможные статусы: `in progress`, `done`, `canceled`, `error`. +Может быть возвращён частичный результат, если поиск ещё не завершён. Поле `status` показывает текущий статус. +Возможные статусы: `AsyncSearchStatusInProgress`, `AsyncSearchStatusDone`, `AsyncSearchStatusCanceled`, `AsyncSearchStatusError`.
903-913: Не используйте null в примере запросаТекст утверждает, что пустой
{}вернёт все поиски.status: nullможет не соответствовать реальному поведению gRPC JSON. Лучше опустить поле.{ - "status": null, "size": 2, "offset": 0, "ids": ["c28c97d1-117a-45dc-a0cf-d080f22b2a10", "8e68d3d7-8e85-44a9-9b09-8de248a3b414"] }
917-957: Единый стиль полей во вложенном requestАналогично разделу выше:
withDocsвместоwith_docs(если следуем JSON‑mapping protobuf).- "with_docs": true + "withDocs": true- "with_docs": false + "withDocs": false
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (4)
docs/en/10-public-api.md(5 hunks)docs/en/12-async-search.md(1 hunks)docs/ru/10-public-api.md(7 hunks)docs/ru/12-async-search.md(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- docs/ru/12-async-search.md
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-08-05T10:52:04.737Z
Learnt from: forshev
PR: ozontech/seq-db#3
File: api/seqproxyapi/v1/seq_proxy_api.proto:88-90
Timestamp: 2025-08-05T10:52:04.737Z
Learning: In the seq-db project, the FetchAsyncSearchResult RPC method in api/seqproxyapi/v1/seq_proxy_api.proto was intentionally changed from HTTP GET to POST during development. This breaking change is acceptable because the async search feature is under active development and not yet in production use.
Applied to files:
docs/ru/10-public-api.mddocs/en/10-public-api.md
🪛 LanguageTool
docs/ru/10-public-api.md
[grammar] ~746-~746: There might be a mistake here.
Context: ...lexsearch), но есть дополнительные поля: retention - определяет, как долго буду...
(QB_NEW_EN)
[grammar] ~747-~747: There might be a mistake here.
Context: ... как долго будут доступны данные поиска. И with_docs - определяет, будут ли най...
(QB_NEW_EN)
docs/en/10-public-api.md
[grammar] ~744-~744: There might be a mistake here.
Context: ...async search. Returns id that is later can be used to fetch a result, cancel and d...
(QB_NEW_EN)
[grammar] ~744-~744: There might be a mistake here.
Context: ...n be used to fetch a result, cancel and delete search. Similar to [/ComplexSearch](...
(QB_NEW_EN)
[grammar] ~748-~748: There might be a mistake here.
Context: ...r documents ids will be found and saved. with_total will automatically be set t...
(QB_NEW_EN)
[grammar] ~794-~794: There might be a mistake here.
Context: ...quest. Partial response can be returned if search is not completed yet. status f...
(QB_NEW_EN)
[grammar] ~794-~794: There might be a mistake here.
Context: ...ch is not completed yet. status field indicates current search's status. Available stat...
(QB_NEW_EN)
[grammar] ~794-~794: There might be a mistake here.
Context: ...field indicates current search's status. Available statuses are: in progress, `...
(QB_NEW_EN)
[grammar] ~900-~900: There might be a mistake here.
Context: ...c searches filtered out based on fields from request. Empty request {} returns all...
(QB_NEW_EN)
[style] ~901-~901: For conciseness, consider replacing this expression with an adverb.
Context: ...mpty request {} returns all available at the moment searches. Example request: ```bash gr...
(AT_THE_MOMENT)
docs/en/12-async-search.md
[grammar] ~5-~5: There might be a mistake here.
Context: ...execute some long-running queries which take longer time to complete. Usually this q...
(QB_NEW_EN)
[grammar] ~5-~5: There might be a mistake here.
Context: ...ries which take longer time to complete. Usually this queries are aggregations an...
(QB_NEW_EN)
[grammar] ~6-~6: There might be a mistake here.
Context: ...queries are aggregations and histograms. Async searches can be used to search doc...
(QB_NEW_EN)
[grammar] ~7-~7: There might be a mistake here.
Context: ...ublic-api.md#startasyncsearch) request, though primary use case is aggregations. Read...
(QB_NEW_EN)
[grammar] ~12-~12: There might be a mistake here.
Context: ...ion is 5 minutes and maximum is 30 days. Retention is set by retention field in...
(QB_NEW_EN)
[grammar] ~13-~13: There might be a mistake here.
Context: ...public-api.md#startasyncsearch) request. The data is deleted after retention time...
(QB_NEW_EN)
[grammar] ~14-~14: There might be a mistake here.
Context: ...yncsearch) request. The data is deleted after retention time passes. When data size ...
(QB_NEW_EN)
[grammar] ~22-~22: There might be a mistake here.
Context: ... asynchronous searches. By default will be subdirectory in `config.storage.data_di...
(QB_NEW_EN)
[grammar] ~27-~27: There might be a mistake here.
Context: ...async_search` object in the config file.
(QB_NEW_EN)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: test
🔇 Additional comments (11)
docs/en/10-public-api.md (6)
24-31: Formatting tweak looks goodDemoting the “Example …” headings reads cleaner and is consistent across the page.
45-72: Bulk example blocks read wellThe request/response examples are coherent and consistent with prior sections.
115-118: Good call specifying code block languageLabeling the error block as text improves rendering.
894-895: Good, explicit behavior noteClear constraint that docs/total are returned only when
with_docsis true.
981-981: Nice explicit success noteStating that an empty JSON object indicates success is helpful.
1004-1004: Consistent success noteSame here—clear and concise.
docs/ru/10-public-api.md (5)
24-31: Форматирование примеров стало лучшеУпрощённые заголовки “Example …” читаются ровнее.
45-72: Примеры bulk корректныЗапрос/ответ выглядят согласованно.
115-118: Отдельный язык для блока ошибки — 👍Указание text улучшает отображение.
981-981: Чётко указано про пустой ответ — окПолезное уточнение.
1004-1004: То же здесь — окЕдинообразно и понятно.
0748428 to
8d7ccd2
Compare
There was a problem hiding this comment.
Actionable comments posted: 9
♻️ Duplicate comments (4)
docs/ru/10-public-api.md (1)
918-957: Align nested request naming to camelCase in list exampleUse
withDocsfor consistency with protobuf JSON mapping and other fields already in camelCase here.- "with_docs": true + "withDocs": truedocs/en/10-public-api.md (3)
753-779: JSON payload is now valid (extra brace removed) — LGTMThe StartAsyncSearch example is balanced; grpcurl should parse it fine.
811-891: Normalize field casing and numeric types; verifydatashape
- Prefer lowerCamelCase in JSON: diskUsage/startedAt/expiresAt.
- Keep 64-bit ints as JSON strings for consistency (
"total": "12").- Prefer
withDocsoverwith_docsin embedded request.- Confirm whether
docs[].datashould be base64 (as in other APIs) vs an object.Suggested changes:
- "with_docs": true + "withDocs": true @@ - "total": 12, + "total": "12", @@ - "disk_usage": "537", - "started_at": "2025-08-08T11:53:52.542336Z", - "expires_at": "2025-08-08T12:53:52.542336Z" + "diskUsage": "537", + "startedAt": "2025-08-08T11:53:52.542336Z", + "expiresAt": "2025-08-08T12:53:52.542336Z"Optional if base64 is required:
- "data": { - "message": "some error", - "level": 3 - }, + "data": "BASE64_DOC",Verification script (proto scan):
#!/bin/bash rg -n -C2 --type proto 'rpc (StartAsyncSearch|FetchAsyncSearchResult|GetAsyncSearchesList|CancelAsyncSearch|DeleteAsyncSearch)' rg -n -C2 --type proto '\b(search_id|with_docs|disk_usage|started_at|expires_at|total|docCount|data)\b' rg -n -C1 --type proto 'json_name'
919-957: Use withDocs (camelCase) in nested requestAlign with JSON mapping and keep casing consistent within the same example.
- "with_docs": true + "withDocs": true
🧹 Nitpick comments (4)
docs/ru/10-public-api.md (1)
746-750: RU: Improve punctuation around field descriptionsUse em-dashes and avoid starting a new sentence with “И” for tighter style.
-Запрос похож на [`/ComplexSearch`](#complexsearch), но есть дополнительные поля: -`retention` - определяет, как долго будут доступны данные поиска. -И `with_docs` - определяет, будут ли найдены и сохранены идентификаторы документов, удовлетворяющих поисковому запросу. -`with_total` будет автоматически установлен, если в запросе указан `with_docs: true` +Запрос похож на [`/ComplexSearch`](#complexsearch), но есть дополнительные поля: +`retention` — определяет, как долго будут доступны данные поиска; +`with_docs` — определяет, будут ли найдены и сохранены идентификаторы документов, удовлетворяющих поисковому запросу. +`with_total` автоматически устанавливается, если в запросе указано `with_docs: true`.docs/en/10-public-api.md (1)
900-901: Tighten phrasingMinor style improvement.
-Empty request `{}` returns all available at the moment searches. +Empty request `{}` returns all currently available searches.docs/en/12-async-search.md (2)
5-8: Grammar touch-ups for clarityTighten phrasing; plural agreement; article usage.
-This ability is especially valuable when executing long-running queries that take longer to complete. -Usually this queries are aggregations and histograms. -Async searches can also be used to search documents using `with_docs` field in the [`StartAsyncSearch`](10-public-api.md#startasyncsearch) request, though primary use case is aggregations. +This is especially valuable for long-running queries. +Usually these queries are aggregations and histograms. +Async searches can also search documents using the `with_docs` field in the [`StartAsyncSearch`](10-public-api.md#startasyncsearch) request, though the primary use case is aggregations.
11-15: Clarify retention sentenceMinor readability improvements.
-Async search data is persisted on disk for the specified `retention` time. -Minimum retention is 5 minutes and maximum is 30 days. -Retention is set by the `retention` field in the [`StartAsyncSearch`](10-public-api.md#startasyncsearch) request. +Async search data is persisted on disk for the specified `retention` period. +The minimum retention is 5 minutes, and the maximum is 30 days. +Retention is set by the `retention` field in the [`StartAsyncSearch`](10-public-api.md#startasyncsearch) request.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (4)
docs/en/10-public-api.md(5 hunks)docs/en/12-async-search.md(1 hunks)docs/ru/10-public-api.md(7 hunks)docs/ru/12-async-search.md(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- docs/ru/12-async-search.md
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-08-05T10:52:04.737Z
Learnt from: forshev
PR: ozontech/seq-db#3
File: api/seqproxyapi/v1/seq_proxy_api.proto:88-90
Timestamp: 2025-08-05T10:52:04.737Z
Learning: In the seq-db project, the FetchAsyncSearchResult RPC method in api/seqproxyapi/v1/seq_proxy_api.proto was intentionally changed from HTTP GET to POST during development. This breaking change is acceptable because the async search feature is under active development and not yet in production use.
Applied to files:
docs/ru/10-public-api.mddocs/en/10-public-api.md
🪛 LanguageTool
docs/ru/10-public-api.md
[grammar] ~746-~746: There might be a mistake here.
Context: ...lexsearch), но есть дополнительные поля: retention - определяет, как долго буду...
(QB_NEW_EN)
[grammar] ~747-~747: There might be a mistake here.
Context: ... как долго будут доступны данные поиска. И with_docs - определяет, будут ли най...
(QB_NEW_EN)
[grammar] ~795-~795: Ensure spelling is correct
Context: ...статусы: AsyncSearchStatusInProgress, AsyncSearchStatusDone, AsyncSearchStatusCanceled, `AsyncSea...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
docs/en/10-public-api.md
[grammar] ~793-~793: There might be a mistake here.
Context: ...syncSearch`](#startasyncsearch) request. A partial response can be returned if th...
(QB_NEW_EN)
[grammar] ~900-~900: There might be a mistake here.
Context: ...c searches filtered out based on fields from request. Empty request {} returns all...
(QB_NEW_EN)
[style] ~901-~901: For conciseness, consider replacing this expression with an adverb.
Context: ...mpty request {} returns all available at the moment searches. Example request: ```bash gr...
(AT_THE_MOMENT)
docs/en/12-async-search.md
[grammar] ~6-~6: There might be a mistake here.
Context: ...queries are aggregations and histograms. Async searches can also be used to searc...
(QB_NEW_EN)
[grammar] ~7-~7: There might be a mistake here.
Context: ...ublic-api.md#startasyncsearch) request, though primary use case is aggregations. Read...
(QB_NEW_EN)
[grammar] ~12-~12: There might be a mistake here.
Context: ...ion is 5 minutes and maximum is 30 days. Retention is set by the retention fiel...
(QB_NEW_EN)
[grammar] ~27-~27: There might be a mistake here.
Context: ...async_search` object in the config file.
(QB_NEW_EN)
🔇 Additional comments (5)
docs/ru/10-public-api.md (2)
753-779: JSON payload is now valid (extra brace removed) — LGTMThe StartAsyncSearch example JSON is properly balanced and should parse with grpcurl.
906-913: Confirm enum nullability in request
"status": nullmay not be valid for enum fields in protobuf JSON mapping. Typically, omit the field to mean “no filter”.Proposed change:
{ - "status": null, "size": 2, "offset": 0, "ids": ["c28c97d1-117a-45dc-a0cf-d080f22b2a10", "8e68d3d7-8e85-44a9-9b09-8de248a3b414"] }If you intend tri-state logic, consider using google.protobuf.* wrappers or a oneof; otherwise, drop the field from the example.
docs/en/10-public-api.md (2)
789-791: Section heading and description read clearly — LGTMDescriptions for StartAsyncSearch/FetchAsyncSearchResult are concise and accurate.
903-913: Confirm enum nullability in request
"status": nullmay not be valid for enum fields in protobuf JSON. Omitting the field is safer.{ - "status": null, "size": 2, "offset": 0, "ids": ["c28c97d1-117a-45dc-a0cf-d080f22b2a10", "8e68d3d7-8e85-44a9-9b09-8de248a3b414"] }docs/en/12-async-search.md (1)
20-27: Config bullets read well — LGTMParameters are clear and scoped correctly under
async_search.
8d7ccd2 to
918b363
Compare
918b363 to
bba87ea
Compare
bba87ea to
2a9e1b0
Compare
There was a problem hiding this comment.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
docs/ru/01-quickstart.md (1)
189-195: Fix broken config path in seq-ui commandYou mount /seq-ui/config.yaml but pass --config config.yaml (relative). Unless the container’s working_dir is /seq-ui, seq-ui won’t find the file. Use an absolute path.
- command: --config config.yaml + command: --config /seq-ui/config.yaml
♻️ Duplicate comments (14)
docs/en/10-public-api.md (7)
753-779: Use withDocs (camelCase) in StartAsyncSearch requestProtobuf JSON mapping emits lowerCamelCase. Align the example.
], - "with_docs": true + "withDocs": true }' localhost:9004 seqproxyapi.v1.SeqProxyApi/StartAsyncSearch
783-787: Use searchId (camelCase) in StartAsyncSearch responseKeep naming consistent with other examples and proto JSON mapping.
{ - "search_id": "c28c97d1-117a-45dc-a0cf-d080f22b2a10" + "searchId": "c28c97d1-117a-45dc-a0cf-d080f22b2a10" }
800-807: Use searchId in FetchAsyncSearchResult requestSnake_case will not map; grpcurl payload should be lowerCamelCase.
{ - "search_id": "c28c97d1-117a-45dc-a0cf-d080f22b2a10", + "searchId": "c28c97d1-117a-45dc-a0cf-d080f22b2a10", "size": 2, "offset": 0, "order": 0 }
839-839: Quote 64-bit ints; use camelCase metadata fieldsProto3 JSON uses strings for int64/uint64; also standardize field casing.
- "total": 12, + "total": "12", @@ - "progress": 1, - "disk_usage": "537", - "started_at": "2025-08-08T11:53:52.542336Z", - "expires_at": "2025-08-08T12:53:52.542336Z" + "progress": 1, + "diskUsage": "537", + "startedAt": "2025-08-08T11:53:52.542336Z", + "expiresAt": "2025-08-08T12:53:52.542336Z"Also applies to: 887-891
931-932: Use withDocs in embedded request objectsKeep casing consistent across the page.
- "with_docs": true + "withDocs": true @@ - "with_docs": false + "withDocs": falseAlso applies to: 949-950
969-973: Use searchId in CancelAsyncSearch requestConsistency with mapping and other examples.
{ - "search_id": "c28c97d1-117a-45dc-a0cf-d080f22b2a10" + "searchId": "c28c97d1-117a-45dc-a0cf-d080f22b2a10" }
991-995: Use searchId in DeleteAsyncSearch requestSame rationale as above.
{ - "search_id": "c28c97d1-117a-45dc-a0cf-d080f22b2a10" + "searchId": "c28c97d1-117a-45dc-a0cf-d080f22b2a10" }docs/ru/10-public-api.md (7)
777-779: Используйте withDocs (camelCase) в StartAsyncSearchJSON для protobuf — lowerCamelCase. Приведите пример к этому формату.
- "with_docs": true + "withDocs": true
783-787: Используйте searchId (camelCase) в ответе StartAsyncSearchСогласуйте с остальными примерами.
{ - "search_id": "c28c97d1-117a-45dc-a0cf-d080f22b2a10" + "searchId": "c28c97d1-117a-45dc-a0cf-d080f22b2a10" }
800-807: Используйте searchId в запросе FetchAsyncSearchResultgrpcurl должен слать lowerCamelCase.
{ - "search_id": "c28c97d1-117a-45dc-a0cf-d080f22b2a10", + "searchId": "c28c97d1-117a-45dc-a0cf-d080f22b2a10", "size": 2, "offset": 0, "order": 0 }
839-839: Кавычки для int64 и camelCase для метаданныхПриведите total к строке и переименуйте поля.
- "total": 12, + "total": "12", @@ - "progress": 1, - "disk_usage": "537", - "started_at": "2025-08-08T11:53:52.542336Z", - "expires_at": "2025-08-08T12:53:52.542336Z" + "progress": 1, + "diskUsage": "537", + "startedAt": "2025-08-08T11:53:52.542336Z", + "expiresAt": "2025-08-08T12:53:52.542336Z"Also applies to: 887-891
931-932: Используйте withDocs в вложенных requestДержим единый стиль.
- "with_docs": true + "withDocs": true @@ - "with_docs": false + "withDocs": falseAlso applies to: 949-950
969-973: Используйте searchId в CancelAsyncSearchСогласованность с JSON mapping.
{ - "search_id": "c28c97d1-117a-45dc-a0cf-d080f22b2a10" + "searchId": "c28c97d1-117a-45dc-a0cf-d080f22b2a10" }
992-995: Используйте searchId в DeleteAsyncSearchТа же правка.
{ - "search_id": "c28c97d1-117a-45dc-a0cf-d080f22b2a10" + "searchId": "c28c97d1-117a-45dc-a0cf-d080f22b2a10" }
🧹 Nitpick comments (1)
docs/en/12-async-search.md (1)
10-12: Tighten language and fix minor grammarShort grammar cleanups; no semantic changes.
-Usually this queries are aggregations and histograms. +Usually these queries are aggregations and histograms. -Async searches can also be used to search documents using `with_docs` field in the [`StartAsyncSearch`](10-public-api.md#startasyncsearch) request, though primary use case is aggregations. +Async searches can also be used to search for documents using the `with_docs` field in the [`StartAsyncSearch`](10-public-api.md#startasyncsearch) request, though the primary use case is aggregations. -Minimum retention is 5 minutes and maximum is 30 days. +The minimum retention is 5 minutes and the maximum is 30 days. -Retention is set by the `retention` field in the [`StartAsyncSearch`](10-public-api.md#startasyncsearch) request. +Retention is configured via the `retention` field in the [`StartAsyncSearch`](10-public-api.md#startasyncsearch) request. -Configuration parameters are: +Configuration parameters: -Configuration parameters are part of `async_search` object in the config file. +These parameters are part of the `async_search` object in the config file.Also applies to: 15-19, 24-31
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (6)
docs/en/01-quickstart.md(1 hunks)docs/en/10-public-api.md(5 hunks)docs/en/12-async-search.md(1 hunks)docs/ru/01-quickstart.md(1 hunks)docs/ru/10-public-api.md(7 hunks)docs/ru/12-async-search.md(1 hunks)
✅ Files skipped from review due to trivial changes (1)
- docs/en/01-quickstart.md
🚧 Files skipped from review as they are similar to previous changes (1)
- docs/ru/12-async-search.md
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-08-05T10:52:04.737Z
Learnt from: forshev
PR: ozontech/seq-db#3
File: api/seqproxyapi/v1/seq_proxy_api.proto:88-90
Timestamp: 2025-08-05T10:52:04.737Z
Learning: In the seq-db project, the FetchAsyncSearchResult RPC method in api/seqproxyapi/v1/seq_proxy_api.proto was intentionally changed from HTTP GET to POST during development. This breaking change is acceptable because the async search feature is under active development and not yet in production use.
Applied to files:
docs/ru/10-public-api.mddocs/en/10-public-api.md
🪛 LanguageTool
docs/ru/10-public-api.md
[grammar] ~746-~746: There might be a mistake here.
Context: ...lexsearch), но есть дополнительные поля: retention - определяет, как долго буду...
(QB_NEW_EN)
[grammar] ~747-~747: There might be a mistake here.
Context: ... как долго будут доступны данные поиска. И with_docs - определяет, будут ли най...
(QB_NEW_EN)
[grammar] ~748-~748: There might be a mistake here.
Context: ...тов, удовлетворяющих поисковому запросу. with_total будет автоматически установ...
(QB_NEW_EN)
docs/en/10-public-api.md
[grammar] ~793-~793: There might be a mistake here.
Context: ...syncSearch`](#startasyncsearch) request. A partial response can be returned if th...
(QB_NEW_EN)
[grammar] ~900-~900: There might be a mistake here.
Context: ...c searches filtered out based on fields from request. Empty request {} returns all...
(QB_NEW_EN)
[style] ~901-~901: For conciseness, consider replacing this expression with an adverb.
Context: ...mpty request {} returns all available at the moment searches. Example request: ```bash gr...
(AT_THE_MOMENT)
docs/en/12-async-search.md
[grammar] ~10-~10: There might be a mistake here.
Context: ...queries are aggregations and histograms. Async searches can also be used to searc...
(QB_NEW_EN)
[grammar] ~11-~11: There might be a mistake here.
Context: ...ublic-api.md#startasyncsearch) request, though primary use case is aggregations. Read...
(QB_NEW_EN)
[grammar] ~16-~16: There might be a mistake here.
Context: ...ion is 5 minutes and maximum is 30 days. Retention is set by the retention fiel...
(QB_NEW_EN)
[grammar] ~31-~31: There might be a mistake here.
Context: ...async_search` object in the config file.
(QB_NEW_EN)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: test
Add async search documentation
Fixes #79
Summary by CodeRabbit