Skip to content

docs: add async search docs#91

Merged
forshev merged 1 commit into
mainfrom
79-async-searches-docs
Sep 3, 2025
Merged

docs: add async search docs#91
forshev merged 1 commit into
mainfrom
79-async-searches-docs

Conversation

@forshev
Copy link
Copy Markdown
Collaborator

@forshev forshev commented Aug 20, 2025

Add async search documentation

Fixes #79

Summary by CodeRabbit

  • Documentation
    • Added Async Search docs (EN/RU): background async searches, retention/disk persistence, storage limits/read-only behavior, and configuration options (data_dir, concurrency, max_total_size, max_size_per_request); links to public API.
    • Expanded Public API docs with Async Search gRPC endpoints: StartAsyncSearch, FetchAsyncSearchResult, GetAsyncSearchesList, CancelAsyncSearch, DeleteAsyncSearch; includes examples, statuses, partial results, and with_docs/with_total behavior.
    • Improved formatting in Public API docs: standardized example headers and labeled error blocks.
    • Updated quickstart docker-compose: seq-ui container config path changed to /seq-ui/config.yaml.

@forshev forshev requested a review from ssnd August 20, 2025 16:24
@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented Aug 20, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 71.87%. Comparing base (14fc030) to head (2a9e1b0).
⚠️ Report is 159 commits behind head on main.

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.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@forshev forshev force-pushed the 79-async-searches-docs branch from 8d06e9f to 0748428 Compare August 20, 2025 16:27
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Aug 20, 2025

📝 Walkthrough

Walkthrough

Adds 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

Cohort / File(s) Summary of Changes
Public API docs: formatting + Async search gRPC API
docs/en/10-public-api.md, docs/ru/10-public-api.md
Minor example-heading and code-block language fixes; appended Async Search gRPC API section documenting StartAsyncSearch, FetchAsyncSearchResult, GetAsyncSearchesList, CancelAsyncSearch, DeleteAsyncSearch with grpcurl examples and semantics (retention, with_docs/with_total, statuses, lifecycle).
Async search overview docs (new)
docs/en/12-async-search.md, docs/ru/12-async-search.md
New pages describing Async Search purpose, disk retention (min 5m, max 30d), read-only behavior when storage limits reached, and async_search config keys: data_dir, concurrency, max_total_size, max_size_per_request. Links to Public API.
Quickstart: docker-compose volume path update
docs/en/01-quickstart.md, docs/ru/01-quickstart.md
Changed seq-ui container config file path from /seq-ui-server/config.yaml to /seq-ui/config.yaml in the docker-compose snippet.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Assessment against linked issues

Objective Addressed Explanation
Write async searches documentation (#79)

Assessment against linked issues: Out-of-scope changes

Code Change Explanation
Quickstart docker-compose container config path change (docs/en/01-quickstart.md, docs/ru/01-quickstart.md) This edits the seq-ui container config mount path in quickstart snippets; not related to the async-search documentation objective.

Possibly related PRs

Suggested labels

epic/async-search

Suggested reviewers

  • ssnd
  • dkharms
✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 79-async-searches-docs

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.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore or @coderabbit ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Nitpick comments (12)
docs/en/10-public-api.md (4)

742-750: Tighten grammar and wording for StartAsyncSearch

Minor 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 names

Text 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 omission

The text says an empty {} returns all searches. Including "status": null may 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 fields

In the list response, consider withDocs instead of with_docs (assuming protobuf JSON mapping). Align with the FetchAsyncSearchResult fix.

-    "with_docs": true
+    "withDocs": true
-    "with_docs": false
+    "withDocs": false
docs/en/12-async-search.md (5)

5-8: Polish grammar and clarity in the intro

Minor 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 wording

Slightly 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 bullets

Small 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.

📥 Commits

Reviewing files that changed from the base of the PR and between 8d06e9f and 0748428.

📒 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.md
  • docs/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 good

Demoting the “Example …” headings reads cleaner and is consistent across the page.


45-72: Bulk example blocks read well

The request/response examples are coherent and consistent with prior sections.


115-118: Good call specifying code block language

Labeling the error block as text improves rendering.


894-895: Good, explicit behavior note

Clear constraint that docs/total are returned only when with_docs is true.


981-981: Nice explicit success note

Stating that an empty JSON object indicates success is helpful.


1004-1004: Consistent success note

Same here—clear and concise.

docs/ru/10-public-api.md (5)

24-31: Форматирование примеров стало лучше

Упрощённые заголовки “Example …” читаются ровнее.


45-72: Примеры bulk корректны

Запрос/ответ выглядят согласованно.


115-118: Отдельный язык для блока ошибки — 👍

Указание text улучшает отображение.


981-981: Чётко указано про пустой ответ — ок

Полезное уточнение.


1004-1004: То же здесь — ок

Единообразно и понятно.

Comment thread docs/en/10-public-api.md
Comment thread docs/en/10-public-api.md
Comment thread docs/ru/10-public-api.md
@forshev forshev force-pushed the 79-async-searches-docs branch from 0748428 to 8d7ccd2 Compare August 20, 2025 16:54
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 9

♻️ Duplicate comments (4)
docs/ru/10-public-api.md (1)

918-957: Align nested request naming to camelCase in list example

Use withDocs for consistency with protobuf JSON mapping and other fields already in camelCase here.

-    "with_docs": true
+    "withDocs": true
docs/en/10-public-api.md (3)

753-779: JSON payload is now valid (extra brace removed) — LGTM

The StartAsyncSearch example is balanced; grpcurl should parse it fine.


811-891: Normalize field casing and numeric types; verify data shape

  • Prefer lowerCamelCase in JSON: diskUsage/startedAt/expiresAt.
  • Keep 64-bit ints as JSON strings for consistency ("total": "12").
  • Prefer withDocs over with_docs in embedded request.
  • Confirm whether docs[].data should 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 request

Align 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 descriptions

Use 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 phrasing

Minor 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 clarity

Tighten 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 sentence

Minor 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.

📥 Commits

Reviewing files that changed from the base of the PR and between 0748428 and 8d7ccd2.

📒 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.md
  • docs/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) — LGTM

The StartAsyncSearch example JSON is properly balanced and should parse with grpcurl.


906-913: Confirm enum nullability in request

"status": null may 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 — LGTM

Descriptions for StartAsyncSearch/FetchAsyncSearchResult are concise and accurate.


903-913: Confirm enum nullability in request

"status": null may 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 — LGTM

Parameters are clear and scoped correctly under async_search.

Comment thread docs/en/10-public-api.md
Comment thread docs/en/10-public-api.md
Comment thread docs/en/10-public-api.md
Comment thread docs/en/10-public-api.md
Comment thread docs/ru/10-public-api.md
Comment thread docs/ru/10-public-api.md
Comment thread docs/ru/10-public-api.md
Comment thread docs/ru/10-public-api.md
Comment thread docs/ru/10-public-api.md
@eguguchkin eguguchkin requested a review from moflotas August 25, 2025 10:42
Copy link
Copy Markdown
Collaborator

@moflotas moflotas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@forshev forshev force-pushed the 79-async-searches-docs branch from 8d7ccd2 to 918b363 Compare September 3, 2025 11:42
@forshev forshev force-pushed the 79-async-searches-docs branch from 918b363 to bba87ea Compare September 3, 2025 12:49
@forshev forshev force-pushed the 79-async-searches-docs branch from bba87ea to 2a9e1b0 Compare September 3, 2025 12:51
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 command

You 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 request

Protobuf 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 response

Keep 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 request

Snake_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 fields

Proto3 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 objects

Keep casing consistent across the page.

-    "with_docs": true
+    "withDocs": true
@@
-    "with_docs": false
+    "withDocs": false

Also applies to: 949-950


969-973: Use searchId in CancelAsyncSearch request

Consistency with mapping and other examples.

 {
-  "search_id": "c28c97d1-117a-45dc-a0cf-d080f22b2a10"
+  "searchId": "c28c97d1-117a-45dc-a0cf-d080f22b2a10"
 }

991-995: Use searchId in DeleteAsyncSearch request

Same 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) в StartAsyncSearch

JSON для 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 в запросе FetchAsyncSearchResult

grpcurl должен слать 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": false

Also 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 grammar

Short 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.

📥 Commits

Reviewing files that changed from the base of the PR and between 8d7ccd2 and 2a9e1b0.

📒 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.md
  • docs/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

Comment thread docs/en/10-public-api.md
Comment thread docs/ru/10-public-api.md
@forshev forshev merged commit 2facbea into main Sep 3, 2025
9 checks passed
@forshev forshev deleted the 79-async-searches-docs branch September 3, 2025 13:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Documentation: async searches

4 participants