Skip to content

本地化项目管理

本地化项目管理模块主要负责本地化项目管理,包括项目创建与设置、任务管理、项目交付等。

订单转本地化项目

当订单价格被确认后,在LSP侧,通过点击"订单转本地化项目"按钮,将订单转换为本地化项目,并进行管理,此时会在项目表生成一个与订单管理的本地化项目,一个订单创建一个本地化项目。

本地化项目管理

项目管理的核心功能,目标是对本地化项目完成交付,围绕质量控制,成本控制,风险(进度)控制三个因素逐渐迭代该部分,本期开发主要围绕项目设置和任务管理。

项目管理

一个项目包含以下信息

  • 项目基本信息
    • 项目名称
    • 项目描述
    • 项目状态(准备中,生产中,已完成)
    • 语言对
    • 交付时间
  • 本地化步骤信息
    • 翻译(T)
    • 编辑(E)
    • 校对(P)
  • 项目语言资产
    • 术语库(TB)
    • 翻译记忆库(TM)
  • 项目预翻译参数 (本期不开发)
  • 项目QA参数和Style Guide
    • QA 参数提供QA引擎(本期不开发)
    • Style Guide 提供译员参考

任务管理

任务管理主要负责任务的创建,拆分,分配,验收等。 一条任务上主要有以下信息

  • 字数(工作量)
  • 期望交付时间
  • 任务状态(未分配,进行中,已提交,已确认)
  • 任务进度
  • 被分配人员
  • 是否拆分过

任务创建

任务的创建时机是第一次保存项目设置时,此时读取项目设置中的本地化步骤信息,生成任务,在没有任何任务分配人员的情况下,当本地化步骤信息发生变化时,会重新生成任务。

CAT 集成

当生成任务时,需要调用内容库的获取内容接口,通过订单中的Snapshot ID获取内容,然后将内容通过接口导入CAT,生成可以供译员使用的 CAT 任务。 导入流程如下

  1. 每一个目标语生成一个FileGuid,格式是 UUIDv4。
  2. 按照步骤生成一个Header Key格式为flow-202503-t 其中flow是平台名固定,202503是当前的年月,t代表步骤,可选值为t,e, p。
  3. 调用导入接口,导入粒度为每一个步骤调用一次导入任务,以下字段未必需的值
  • X-Source(HTTP Header中参数)使用第二部生成的值
  • fileGuid 使用第一步生成的值
  • mid 句段号 使用句段的在本次导入时在总列表中的索引+1,然后to_string(),也就是从1开始,一直递增
  • sid 句段ID 使用句段的ID(原始ID,来源内容库)
  • source 原文的语言编码,例如 en-US
  • sourceText 原文(纯文本) 从内容库中取到的原文
  • sourceSegments 原文(结构化对象)
  • isLock 是否锁定,默认值为 false
  • groupId 组ID,使用句段ID
  • target 目标语言编码,例如 zh-CN
  • targetText 译文(纯文本)
  • targetSegments 译文(结构化对象)

任务拆分

在任务被分配给译员之前,可以进行任务拆分,拆分后的任务不能再次拆分,拆分后的任务暂时不支持合并操作,任务拆分仅允许在第一个步骤中进行,拆分后会同步设置到所有步骤。

任务分配

在译员池中选择译员,进行任务分配,译员未开始任务之前,或者译员确认无法继续任务,可以进行任务重新分配。

任务验收

译员完成任务后,点击提交,任务进入已提交状态,PM对内容认可点击确认,任务进入已确认状态,任务完成,反之重新进入进行中状态。

项目交付

当所有任务的状态都是已确认时,PM可以确认项目完成,完成后项目进入已完成状态,关联的订单可以提交验收。

参考表结构

P.S. 表结构参考部位历史系统表设计,可能存在冗余,纰漏的情形,目的在于展示数据流转和数据大致的存储结构,勿直接用于生产。

1. 项目表 (projects)

sql
CREATE TABLE projects (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    order_id BIGINT NOT NULL COMMENT '关联订单ID',
    name VARCHAR(255) NOT NULL COMMENT '项目名称',
    description TEXT COMMENT '项目描述',
    status ENUM('preparing', 'in_progress', 'completed') NOT NULL DEFAULT 'preparing' COMMENT '项目状态:准备中,生产中,已完成',
    delivery_time DATETIME NOT NULL COMMENT '交付时间',
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    created_by BIGINT NOT NULL COMMENT '创建人ID',
    updated_by BIGINT NOT NULL COMMENT '更新人ID',
    INDEX idx_order_id (order_id),
    INDEX idx_status (status)
) COMMENT='本地化项目表';

2. 项目语言对表 (project_language_pairs)

sql
CREATE TABLE project_language_pairs (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    project_id BIGINT NOT NULL COMMENT '项目ID',
    source_language VARCHAR(10) NOT NULL COMMENT '源语言代码',
    target_language VARCHAR(10) NOT NULL COMMENT '目标语言代码',
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_project_id (project_id),
    UNIQUE KEY uk_project_lang_pair (project_id, source_language, target_language)
) COMMENT='项目语言对表';

3. 本地化步骤表 (localization_steps)

sql
CREATE TABLE localization_steps (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    project_id BIGINT NOT NULL COMMENT '项目ID',
    step_type ENUM('translation', 'editing', 'proofreading') NOT NULL COMMENT '步骤类型:翻译(T),编辑(E),校对(P)',
    is_enabled TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否启用',
    sequence INT NOT NULL COMMENT '步骤顺序',
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    INDEX idx_project_id (project_id)
) COMMENT='本地化步骤表';

4. 项目语言资产表 (project_language_assets)

sql
CREATE TABLE project_language_assets (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    project_id BIGINT NOT NULL COMMENT '项目ID',
    asset_type ENUM('terminology', 'translation_memory') NOT NULL COMMENT '资产类型:术语库(TB),翻译记忆库(TM)',
    asset_id BIGINT NOT NULL COMMENT '资产ID',
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    INDEX idx_project_id (project_id),
    UNIQUE KEY uk_project_asset (project_id, asset_type, asset_id)
) COMMENT='项目语言资产表';

5. 项目风格指南表 (project_style_guides)

sql
CREATE TABLE project_style_guides (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    project_id BIGINT NOT NULL COMMENT '项目ID',
    guide_content TEXT COMMENT '风格指南内容',
    file_url VARCHAR(255) COMMENT '风格指南文件URL',
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    INDEX idx_project_id (project_id)
) COMMENT='项目风格指南表';

6. 任务表 (tasks)

sql
CREATE TABLE tasks (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    project_id BIGINT NOT NULL COMMENT '项目ID',
    step_id BIGINT NOT NULL COMMENT '关联的本地化步骤ID',
    parent_task_id BIGINT COMMENT '父任务ID,用于任务拆分',
    source_language VARCHAR(10) NOT NULL COMMENT '源语言代码',
    target_language VARCHAR(10) NOT NULL COMMENT '目标语言代码',
    word_count INT NOT NULL COMMENT '字数(工作量)',
    expected_delivery_time DATETIME NOT NULL COMMENT '期望交付时间',
    status ENUM('unassigned', 'in_progress', 'submitted', 'confirmed') NOT NULL DEFAULT 'unassigned' COMMENT '任务状态:未分配,进行中,已提交,已确认',
    progress DECIMAL(5,2) DEFAULT 0 COMMENT '任务进度,百分比',
    assignee_id BIGINT COMMENT '被分配人员ID',
    is_split TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否拆分过',
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    created_by BIGINT NOT NULL COMMENT '创建人ID',
    updated_by BIGINT NOT NULL COMMENT '更新人ID',
    INDEX idx_project_id (project_id),
    INDEX idx_step_id (step_id),
    INDEX idx_parent_task_id (parent_task_id),
    INDEX idx_assignee_id (assignee_id),
    INDEX idx_status (status)
) COMMENT='任务表';

7. 任务分配历史表 (task_assignment_history)

sql
CREATE TABLE task_assignment_history (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    task_id BIGINT NOT NULL COMMENT '任务ID',
    assignee_id BIGINT NOT NULL COMMENT '被分配人员ID',
    assigned_by BIGINT NOT NULL COMMENT '分配人ID',
    assigned_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '分配时间',
    status ENUM('assigned', 'unassigned') NOT NULL COMMENT '分配状态:已分配,已取消',
    reason VARCHAR(255) COMMENT '取消分配原因',
    INDEX idx_task_id (task_id),
    INDEX idx_assignee_id (assignee_id)
) COMMENT='任务分配历史表';

8. 项目QA参数表 (project_qa_parameters)(预留,本期不开发)

sql
CREATE TABLE project_qa_parameters (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    project_id BIGINT NOT NULL COMMENT '项目ID',
    parameter_key VARCHAR(50) NOT NULL COMMENT '参数键',
    parameter_value TEXT COMMENT '参数值',
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    INDEX idx_project_id (project_id),
    UNIQUE KEY uk_project_param (project_id, parameter_key)
) COMMENT='项目QA参数表';