feat: finish the upload, playback, and test gaps from the docs
ci / api / api (push) Successful in 40s
ci / db / db (push) Successful in 1m3s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Failing after 1m48s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 46s
ci / ts / ts (packages + web) (push) Failing after 4m57s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 5m7s
ci / api / api (push) Successful in 40s
ci / db / db (push) Successful in 1m3s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Failing after 1m48s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 46s
ci / ts / ts (packages + web) (push) Failing after 4m57s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 5m7s
Quality upgrades, batch covers, staging preview, and resume after reload are in the queue. Loudness and crossfade work on web and Android, and the documented checks now have suites. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
2b76060ea3
commit
066ba24834
61 files changed
+2818
-463
No files matched your search
+10
-2
@@ -136,6 +136,7 @@ CREATE TABLE upload_batches ( -- одна «пачка» загруз
|
||||
id uuid PRIMARY KEY,
|
||||
author_id uuid NOT NULL REFERENCES users(id),
|
||||
comment text, -- комментарий автора для админа
|
||||
cover_path text, -- обложка пачки (JPEG/PNG/WebP), вшивается при импорте
|
||||
created_at timestamptz NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
@@ -160,6 +161,7 @@ CREATE TABLE upload_files (
|
||||
duplicate_of_track_id uuid REFERENCES tracks(id),
|
||||
duplicate_level text, -- sha256 | metadata | fingerprint
|
||||
possible_duplicate boolean NOT NULL DEFAULT false,
|
||||
quality_upgrade boolean NOT NULL DEFAULT false, -- тот же трек, но лучше по качеству
|
||||
target_source_id uuid REFERENCES library_sources(id),
|
||||
target_rel_path text,
|
||||
status_reason text, -- код причины: uploads.duplicate, uploads.invalid_audio, текст отклонения
|
||||
@@ -173,12 +175,18 @@ CREATE INDEX ON upload_files (status);
|
||||
CREATE INDEX ON upload_files (author_id, created_at DESC);
|
||||
CREATE INDEX ON upload_files (sha256);
|
||||
|
||||
-- Счётчик квоты (одна строка). Обновляется в той же транзакции, что и смена статуса;
|
||||
-- ночная задача сверяет его с SUM(size_bytes) по «занимающим» статусам.
|
||||
-- Счётчик квоты (одна строка). Обновляется в той же транзакции, что и смена статуса.
|
||||
-- При старте api и каждые 10 минут сверяется с SUM(size_bytes) по «занимающим» статусам.
|
||||
CREATE TABLE upload_quota (
|
||||
id boolean PRIMARY KEY DEFAULT true CHECK (id),
|
||||
used_bytes bigint NOT NULL DEFAULT 0
|
||||
);
|
||||
|
||||
-- Когда автор последний раз открыл «Мои предложения» (бейдж новых решений).
|
||||
CREATE TABLE upload_visits (
|
||||
user_id uuid PRIMARY KEY REFERENCES users(id) ON DELETE CASCADE,
|
||||
seen_at timestamptz NOT NULL DEFAULT now()
|
||||
);
|
||||
```
|
||||
|
||||
## Каталог
|
||||
|
||||
Reference in new issue
Block a user