Files
huike-back/docs/ts_phase_a_inventory.md
weli 44c320d8fa chore add core rust project files and diesel migrations
Track required workspace crates, scripts, and historical diesel migrations so the repository contains the complete runnable backend baseline.

Made-with: Cursor
2026-04-23 17:20:01 +08:00

3.8 KiB
Raw Permalink Blame History

阶段 A 契约清单(task_server / proc / task_commons → Rust

本文档与 htyts_modelshtyts crate 一并落地,供后续阶段 B/C 实现与现网对齐时对照。

PostgreSQLDbTask

Java 实体:仓库根目录下 task_commons/.../DbTask.java

  • 表名(已核对): 正式机 alchemy-studio.cn 上任务库为 htytask_alchemyhtytask_huiwingsmoicen 等环境库名可能为 htytask_moicen,以该机 \l 为准)。public 下表名为 dbtask(非 db_task),与 htyts/src/schema.rs 一致。
  • 核对命令(需本机可 ssh weli@alchemy-studio.cnsudo -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) PKtask_type / task_status / created_by / updated_by varchar(255)hty_id / meta 可空;meta varchar(65535)duration double precisioncreated_at / updated_at timestamp(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

  • Javatask_commons BaseRedisService.TS_REDIS_PREFIX = "TS_";任务 payload 为 TS_{task_id} 的字符串值(JSON)。
  • Rusthtyts_models::task_payload_redis_key / TS_REDIS_PREFIX
  • Sudoer 缓存(与 AuthCore HW_T_ 不同): Java task_serverCheckAuthFilter 使用 TS_SUDO_T_{token_id}HtyToken JSON(见 RedisTokenCacheService)。Rust htytscreate_task / update_task 已按该语义校验(可选走 HTYUC_URL + /api/v1/uc/verify_jwt_token,环境变量 AUTH_CHECKING / TOKEN_VERIFY / EXP_DAYS 与 Java 对应)。
  • htycommons::redis_utilHW_T_ 等前缀不要混用到任务 payloadsudoer 校验路径以 task_server 为准。

HTTP 契约(后续阶段实现)

  • Task service 前缀:/api/v1/ts(见 Java TaskApp + 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/aicompare, watermark, compress, get_task_result

与 AuthCore 的复用(proc 侧)

以下类型在 Java 中来自 task_commonsRust 侧 优先使用 AuthCore 已有定义

  • ReqHtyResourceReqRefResource 等:在 htycommons::models(见 htyuc_modelsReqHtyResource 的引用与 HtyResource::to_req)。
  • 实现 proc 前请在 AuthCoregrep 上述类型名,避免在 htyts_models 重复定义。

JSON 字段名

  • ReqTasksWithPage 使用 totalPageJava bean)。
  • AudioFileAndAiScorePayload 使用 aiScorePayload / audioPayload(已在 htyts_models 标注 serde(rename = ...))。
  • 其它 payload 与 CommonTaskResult 若与现网抓包不一致,以 实际响应 为准并补 serde 别名。