회기 무발화 0턴 분리, 자기예측 락 불변식 및 TDD 회귀 검증 완료
Some checks failed
API contract / OpenAPI type drift (push) Failing after 3m27s
Some checks failed
API contract / OpenAPI type drift (push) Failing after 3m27s
This commit is contained in:
parent
a479db7a5a
commit
a0311c5957
100 changed files with 4884 additions and 11210 deletions
|
|
@ -302,6 +302,46 @@ function DecisionSelector({
|
|||
);
|
||||
}
|
||||
|
||||
function ApprovalSubmitControls({
|
||||
approving,
|
||||
canSubmit,
|
||||
intent,
|
||||
approvalDecision,
|
||||
approvalAllowed,
|
||||
requirementId,
|
||||
requirementCopy,
|
||||
}: {
|
||||
approving: boolean;
|
||||
canSubmit: boolean;
|
||||
intent: DecisionIntent | null;
|
||||
approvalDecision: ApprovalDecision;
|
||||
approvalAllowed: boolean;
|
||||
requirementId: string;
|
||||
requirementCopy: string;
|
||||
}) {
|
||||
const variant = submitVariant(intent, approvalDecision);
|
||||
const label = submitLabel(intent, approvalDecision);
|
||||
const requirementClassName = `cic-approval-requirement ${
|
||||
canSubmit ? "is-ready" : intent === "approve" && !approvalAllowed ? "is-blocked" : ""
|
||||
}`;
|
||||
return (
|
||||
<>
|
||||
<Button
|
||||
size="sm"
|
||||
variant={variant}
|
||||
type="submit"
|
||||
disabled={!canSubmit || approving}
|
||||
aria-describedby={requirementId}
|
||||
>
|
||||
{approving ? "결정 기록 중…" : label}
|
||||
</Button>
|
||||
<p id={requirementId} className={requirementClassName}>
|
||||
{requirementCopy}
|
||||
</p>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
function ContentQualificationCard({
|
||||
item,
|
||||
view,
|
||||
|
|
@ -485,21 +525,15 @@ function ContentQualificationCard({
|
|||
maxLength={180}
|
||||
/>
|
||||
</label>
|
||||
<Button
|
||||
size="sm"
|
||||
variant={submitVariant(intent, approvalDecision)}
|
||||
type="submit"
|
||||
disabled={!canSubmit || approving}
|
||||
aria-describedby={requirementId}
|
||||
>
|
||||
{approving ? "결정 기록 중…" : submitLabel(intent, approvalDecision)}
|
||||
</Button>
|
||||
<p
|
||||
id={requirementId}
|
||||
className={`cic-approval-requirement ${canSubmit ? "is-ready" : intent === "approve" && !approvalAllowed ? "is-blocked" : ""}`}
|
||||
>
|
||||
{requirementCopy}
|
||||
</p>
|
||||
<ApprovalSubmitControls
|
||||
approving={approving}
|
||||
canSubmit={canSubmit}
|
||||
intent={intent}
|
||||
approvalDecision={approvalDecision}
|
||||
approvalAllowed={approvalAllowed}
|
||||
requirementId={requirementId}
|
||||
requirementCopy={requirementCopy}
|
||||
/>
|
||||
</form>
|
||||
)}
|
||||
</article>
|
||||
|
|
@ -708,21 +742,15 @@ function GateCard({
|
|||
maxLength={180}
|
||||
/>
|
||||
</label>
|
||||
<Button
|
||||
size="sm"
|
||||
variant={submitVariant(intent, approvalDecision)}
|
||||
type="submit"
|
||||
disabled={!canSubmit || approving}
|
||||
aria-describedby={requirementId}
|
||||
>
|
||||
{approving ? "결정 기록 중…" : submitLabel(intent, approvalDecision)}
|
||||
</Button>
|
||||
<p
|
||||
id={requirementId}
|
||||
className={`cic-approval-requirement ${canSubmit ? "is-ready" : intent === "approve" && !approvalAllowed ? "is-blocked" : ""}`}
|
||||
>
|
||||
{requirementCopy}
|
||||
</p>
|
||||
<ApprovalSubmitControls
|
||||
approving={approving}
|
||||
canSubmit={canSubmit}
|
||||
intent={intent}
|
||||
approvalDecision={approvalDecision}
|
||||
approvalAllowed={approvalAllowed}
|
||||
requirementId={requirementId}
|
||||
requirementCopy={requirementCopy}
|
||||
/>
|
||||
</form>
|
||||
)}
|
||||
</article>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue