feat: storage writes via storage-agent, accepts_uploads and write_template (M5.5)
ci / api / api (push) Successful in 33s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 43s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m11s
ci / ts / ts (packages + web) (push) Successful in 1m10s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 51s
ci / api / api (push) Successful in 33s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 43s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m11s
ci / ts / ts (packages + web) (push) Successful in 1m10s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 51s
- storage-agent: POST /internal/files copies a staged file into a source
(temp file, fsync, SHA-256 check, hard link so nothing is overwritten,
" (2)" suffix on conflict, owner PIPU_FILE_UID/GID) and
POST /internal/files/test. NFS sources that accept uploads are mounted
rw in an agent-only /library-rw and bind-mounted read-only for others;
local sources are written through /library-host-rw.
- meta: write templates ({track:02}, {disc:1-}, [optional]) with name
sanitising and length limits, suggestion from the source's regexes
and a reversibility check against 50 catalogue tracks.
- API and admin UI: accepts_uploads / write_template on sources,
write-template suggest and check endpoints, write test result.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
9b50038bb4
commit
f66be2ba0a
27 files changed
+2422
-213
No files matched your search
@@ -66,9 +66,16 @@ type API struct {
|
||||
|
||||
// StorageAgent — конфигурация внутреннего сервиса storage-agent.
|
||||
type StorageAgent struct {
|
||||
HTTPAddr string `env:"HTTP_ADDR" envDefault:":8090"`
|
||||
InternalToken string `env:"INTERNAL_TOKEN,required,notEmpty"`
|
||||
LibraryRoot string `env:"LIBRARY_ROOT" envDefault:"/library"`
|
||||
HTTPAddr string `env:"HTTP_ADDR" envDefault:":8090"`
|
||||
InternalToken string `env:"INTERNAL_TOKEN,required,notEmpty"`
|
||||
LibraryRoot string `env:"LIBRARY_ROOT" envDefault:"/library"`
|
||||
// Запись импортированных загрузок: rw-точки NFS (только внутри агента), LIBRARY_HOST на запись, staging.
|
||||
LibraryRWRoot string `env:"LIBRARY_RW_ROOT" envDefault:"/library-rw"`
|
||||
HostRWRoot string `env:"LIBRARY_HOST_RW_ROOT" envDefault:"/library-host-rw"`
|
||||
UploadsRoot string `env:"UPLOADS_ROOT" envDefault:"/uploads"`
|
||||
// Владелец новых файлов на файловом сервере; -1 — оставить как есть.
|
||||
FileUID int `env:"PIPU_FILE_UID" envDefault:"-1"`
|
||||
FileGID int `env:"PIPU_FILE_GID" envDefault:"-1"`
|
||||
LogLevel string `env:"LOG_LEVEL" envDefault:"info"`
|
||||
ShutdownTimeout time.Duration `env:"SHUTDOWN_TIMEOUT" envDefault:"15s"`
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user