feat(server): auto index all workspaces to indexer (#12205)

close CLOUD-207

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Introduced automated periodic indexing of workspaces with a new job type and a scheduled cron job running every 30 seconds.
  - Added a unique sequential identifier (`sid`) and an "indexed" flag to workspaces to track indexing status.
- **Improvements**
  - Enhanced workspace indexing to handle missing workspaces and snapshots distinctly and selectively index documents.
  - Added ability to query workspaces after a given identifier with result limits.
- **Bug Fixes**
  - Improved error handling and logging during workspace indexing operations.
- **Tests**
  - Expanded test coverage for workspace indexing and auto-indexing, including scheduling and edge cases.
- **Chores**
  - Updated data models and schema to support new workspace fields and indexing features.
  - Enhanced mock data utilities to allow custom timestamps.
  - Improved type safety and flexibility in document snapshot retrieval.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
fengmk2
2025-05-19 04:39:38 +00:00
parent 34686f3d85
commit a34c3ea200
8 changed files with 211 additions and 13 deletions
@@ -161,7 +161,12 @@ export class JobExecutor implements OnModuleDestroy {
async handleJobReturn(job: Job, result: JOB_SIGNAL) {
if (result === JOB_SIGNAL.Repeat || result === JOB_SIGNAL.Retry) {
try {
await this.getQueue(job.name).add(job.name, job.data, job.opts);
await this.getQueue(namespace(job.name as JobName)).add(
job.name,
job.data,
job.opts
);
this.logger.debug(`Added job [${job.name}] to queue, signal=${result}`);
} catch (e) {
this.logger.error(`Failed to add job [${job.name}]`, e);
}