From 3e470f67aca003b16e46847dcb3b493821039f50 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 25 Oct 2026 12:45:58 +0000 Subject: [PATCH] fix(objects): legal_owner's help text names the custodian lawyer The column was described as "the lawyer who accepted the review", which is false on every backfilled contract: those skip review, yet legal still owns their file, and F12/F13 copy legal_owner on their renewal and expiry notices. The maintainer ruled the column means the contract's custodian in legal (ruling B), so the description and both translation bundles now say that, with review acceptance demoted to how the column is usually first set. The text says "legal names its lawyer here" rather than "records assigns": F16 assigns no legal_owner and clm_records cannot write the column, so legal (or an admin) editing the record is the only path a backfilled contract has. Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_017nzWFRUo2U7evMkPdVniAn --- src/objects/contract.object.ts | 10 +++++++++- src/translations/en/objects.contract.ts | 2 +- src/translations/zh-CN/objects.contract.ts | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/objects/contract.object.ts b/src/objects/contract.object.ts index abdfac2..776fd9d 100644 --- a/src/objects/contract.object.ts +++ b/src/objects/contract.object.ts @@ -210,10 +210,18 @@ export const Contract = ObjectSchema.create({ readonly: false, description: 'The requester who owns the contract on the business side.', }), + // `legal_owner` is the contract's custodian in legal for its whole life, + // not only the lawyer of one review (#53, ruled B). F2 assigns it on + // submission for a type that needs legal review, and the state machine + // still refuses `submitted -> in_review` without it. F16's backfill does + // NOT assign one, and `clm_records` cannot write it (`editableOnly` locks + // every contract field but `status` and `archive_no`): on a backfilled + // contract it is set by legal (or an admin) editing the record -- hence + // "legal names" in the help text, not "records assigns". legal_owner: Field.user({ label: 'Legal Owner', group: 'parties', - description: 'The lawyer who accepted the review. Required before a submitted contract enters review.', + description: 'The lawyer in legal who owns this contract\'s file. Usually assigned when the contract enters legal review; a backfilled contract skips review, so legal names its lawyer here directly.', }), current_turn: Field.select({ label: 'Ball In Court', diff --git a/src/translations/en/objects.contract.ts b/src/translations/en/objects.contract.ts index f47e82a..8ddf23e 100644 --- a/src/translations/en/objects.contract.ts +++ b/src/translations/en/objects.contract.ts @@ -117,7 +117,7 @@ export const contract: Record = { }, legal_owner: { label: 'Legal Owner', - help: 'The lawyer who accepted the review. Required before a submitted contract enters review.', + help: 'The lawyer in legal who owns this contract\'s file. Usually assigned when the contract enters legal review; a backfilled contract skips review, so legal names its lawyer here directly.', }, current_turn: { label: 'Ball In Court', diff --git a/src/translations/zh-CN/objects.contract.ts b/src/translations/zh-CN/objects.contract.ts index e58eda9..c1ffa17 100644 --- a/src/translations/zh-CN/objects.contract.ts +++ b/src/translations/zh-CN/objects.contract.ts @@ -117,7 +117,7 @@ export const contract: Record = { }, legal_owner: { label: '法务经办人', - help: '受理这次审查的法务。合同进入审查前必须先有经办人。', + help: '在法务归口负责这份合同档案的律师。通常在合同进入法务审查时分配;补录的合同不经审查,由法务直接在这里指定。', }, current_turn: { label: '当前轮次',