44c320d8fa
Track required workspace crates, scripts, and historical diesel migrations so the repository contains the complete runnable backend baseline. Made-with: Cursor
3.8 KiB
3.8 KiB
阶段 A 契约清单(task_server / proc / task_commons → Rust)
本文档与 htyts_models、htyts crate 一并落地,供后续阶段 B/C 实现与现网对齐时对照。
PostgreSQL:DbTask 表
Java 实体:仓库根目录下 task_commons/.../DbTask.java。
- 表名(已核对): 正式机
alchemy-studio.cn上任务库为htytask_alchemy、htytask_huiwings(moicen等环境库名可能为htytask_moicen,以该机\l为准)。public下表名为dbtask(非db_task),与htyts/src/schema.rs一致。 - 核对命令(需本机可
ssh weli@alchemy-studio.cn且sudo -u postgres免密):sudo -n -u postgres psql -d htytask_alchemy -c '\d+ public.dbtask'。直连psql -U postgres可能要求密码,可改用上述sudo。 - 已记录的列类型(
htytask_alchemy.public.dbtask):task_id varchar(255)PK;task_type/task_status/created_by/updated_byvarchar(255);hty_id/meta可空;meta varchar(65535);durationdouble precision;created_at/updated_attimestamp(6) without time zone。 - 列(与 Java 字段一致):
task_id(PK),hty_id,task_type,task_status,duration,created_by,created_at,updated_by,updated_at,meta。 - 枚举存字符串: 与 Java
Enum.name()一致,如PENDING,UPLOAD_PICTURE。Rust 侧解析见htyts_models::TaskStatus::from_str/TaskType::from_str。
参考 DDL(以现网为准):
-- VERIFY table name and types against production before use.
CREATE TABLE IF NOT EXISTS dbtask (
task_id TEXT PRIMARY KEY,
hty_id TEXT,
task_type TEXT NOT NULL,
task_status TEXT NOT NULL,
duration DOUBLE PRECISION,
created_by TEXT NOT NULL,
created_at TIMESTAMP NOT NULL,
updated_by TEXT NOT NULL,
updated_at TIMESTAMP NOT NULL,
meta TEXT
);
Redis
- Java:
task_commonsBaseRedisService.TS_REDIS_PREFIX="TS_";任务 payload 为TS_{task_id}的字符串值(JSON)。 - Rust:
htyts_models::task_payload_redis_key/TS_REDIS_PREFIX。 - Sudoer 缓存(与 AuthCore
HW_T_不同): Javatask_server的CheckAuthFilter使用TS_SUDO_T_{token_id}存HtyTokenJSON(见RedisTokenCacheService)。Rusthtyts的create_task/update_task已按该语义校验(可选走HTYUC_URL+/api/v1/uc/verify_jwt_token,环境变量AUTH_CHECKING/TOKEN_VERIFY/EXP_DAYS与 Java 对应)。 - 与
htycommons::redis_util中HW_、T_等前缀不要混用到任务 payload;sudoer 校验路径以task_server为准。
HTTP 契约(后续阶段实现)
- Task service 前缀:
/api/v1/ts(见 JavaTaskApp+TaskService)。 - Proc 控制面:
/api/v1/proc/start|stop|status。 - Ts 客户端(proc → ts):
TsProxy路径create_task,update_task,one_pending_task,one_zombie_task。 - AI 客户端:
AiProxy/api/v1/ai下compare,watermark,compress,get_task_result。
与 AuthCore 的复用(proc 侧)
以下类型在 Java 中来自 task_commons,Rust 侧 优先使用 AuthCore 已有定义:
ReqHtyResource、ReqRefResource等:在htycommons::models(见htyuc_models对ReqHtyResource的引用与HtyResource::to_req)。- 实现 proc 前请在
AuthCore中grep上述类型名,避免在htyts_models重复定义。
JSON 字段名
ReqTasksWithPage使用totalPage(Java bean)。AudioFileAndAiScorePayload使用aiScorePayload/audioPayload(已在htyts_models标注serde(rename = ...))。- 其它 payload 与
CommonTaskResult若与现网抓包不一致,以 实际响应 为准并补serde别名。