mirror of
https://github.com/samuelncui/yatm.git
synced 2026-11-08 12:26:33 +00:00
Unify file queries and Scan execution, retain indexed Identical results, improve Job and Preview workflows, and verify release packaging.
92 lines
2.8 KiB
Protocol Buffer
92 lines
2.8 KiB
Protocol Buffer
syntax = "proto3";
|
|
package yatm.v1;
|
|
option go_package = "github.com/samuelncui/yatm/entity;entity";
|
|
|
|
// Every Settings group uses the same read and replacement path. Values remain typed so adding a
|
|
// group extends this contract without exposing storage keys or unvalidated JSON.
|
|
service SettingsService {
|
|
rpc Get(GetSettingsRequest) returns (GetSettingsResponse) {}
|
|
rpc Update(UpdateSettingsRequest) returns (UpdateSettingsResponse) {}
|
|
}
|
|
|
|
enum SettingsGroup {
|
|
SETTINGS_GROUP_UNSPECIFIED = 0;
|
|
SETTINGS_GROUP_LIBRARY = 1;
|
|
SETTINGS_GROUP_PREVIEW = 2;
|
|
SETTINGS_GROUP_JOB = 3;
|
|
}
|
|
|
|
// Library preferences: what the Library shows and how it confirms removal.
|
|
message LibrarySettings {
|
|
bool include_unbacked_files = 1;
|
|
bool confirm_remove = 2;
|
|
}
|
|
// Executor preferences: how an attempt drives the pipeline its runner owns.
|
|
message JobSettings {
|
|
JobExecutionSettings execution = 1;
|
|
}
|
|
// Job pipeline batching, buffering and delivery cadence. Every limit is an ACP option: the read
|
|
// batch is the manifest page, and the read buffer, the result queue, the result batch and the
|
|
// flush interval are the engine's, so the result writer of an attempt only persists the batches
|
|
// ACP hands over.
|
|
message JobExecutionSettings {
|
|
int32 read_batch = 1;
|
|
int32 read_buffer_max = 2;
|
|
int32 write_buffer_max = 3;
|
|
int32 write_batch_size = 4;
|
|
int32 flush_interval_ms = 5;
|
|
}
|
|
// Generation preferences; storage paths remain deployment resources.
|
|
message PreviewSettings {
|
|
repeated PreviewGeneratorSettings generators = 1;
|
|
bool enabled = 2;
|
|
string command = 3;
|
|
int32 concurrency = 4;
|
|
int32 timeout_seconds = 5;
|
|
int64 max_input_pixels = 6;
|
|
}
|
|
// The generator routes and output choices frozen when a Job is created. Runtime limits and
|
|
// enablement remain live Settings and are intentionally absent.
|
|
message PreviewJobSettings {
|
|
repeated PreviewGeneratorSettings generators = 1;
|
|
}
|
|
message PreviewExtension {
|
|
string name = 1;
|
|
bool enabled = 2;
|
|
}
|
|
message PreviewGeneratorSettings {
|
|
bool enabled = 1;
|
|
repeated PreviewExtension extensions = 2;
|
|
oneof options {
|
|
ImagePreviewSettings image = 3;
|
|
VideoPreviewSettings video = 4;
|
|
}
|
|
}
|
|
message ImagePreviewSettings {
|
|
int32 max_width = 1;
|
|
int32 max_height = 2;
|
|
string format = 3;
|
|
int32 quality = 4;
|
|
}
|
|
message VideoPreviewSettings {
|
|
int32 poster_width = 1;
|
|
int32 poster_height = 2;
|
|
int32 timeline_width = 3;
|
|
int32 timeline_height = 4;
|
|
int32 timeline_interval_seconds = 5;
|
|
int32 timeline_max_frames = 6;
|
|
string format = 7;
|
|
int32 quality = 8;
|
|
}
|
|
message SettingsValue {
|
|
oneof value {
|
|
LibrarySettings library = 1;
|
|
PreviewSettings preview = 2;
|
|
JobSettings job = 3;
|
|
}
|
|
}
|
|
message GetSettingsRequest { SettingsGroup group = 1; }
|
|
message GetSettingsResponse { SettingsValue value = 1; }
|
|
message UpdateSettingsRequest { SettingsValue value = 1; }
|
|
message UpdateSettingsResponse { SettingsValue value = 1; }
|