회기 무발화 0턴 분리, 자기예측 락 불변식 및 TDD 회귀 검증 완료
Some checks failed
API contract / OpenAPI type drift (push) Failing after 3m27s

This commit is contained in:
Yun Chan 2026-09-08 23:28:06 +09:00
parent a479db7a5a
commit a0311c5957
100 changed files with 4884 additions and 11210 deletions

View file

@ -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>