본문으로 건너뛰기
Tickmark 디자인 시스템 시안

디자인 시스템 시안

감사인이 전표, 룰 적중, AI 제안, 결론, 감사 로그를 오래 보는 화면이다. 밀도 우선, 추적 가능성, AI와 사람의 구분, 상태 명료성을 원칙으로 한다. 기준 문서는 디자인 시스템 (md)이고, 이 시안과 어긋나면 md가 우선이다. 위의 테마 버튼으로 라이트/다크를 바꾼다. 모든 회사, 사람, 금액, 전표는 합성 데이터다.

1. 색

daisyUI 토큰 이름을 그대로 쓴다. 각 견본의 왼쪽이 라이트, 오른쪽이 다크다. 다크는 표면이 밝을수록 위(elevation)다.

1.1 역할별 토큰

Light#F3F5F8
Dark#0E131A
페이지 배경base-200
Light#FFFFFF
Dark#161D27
표면 (카드, 테이블, 입력)base-100
Light#DDE2E9
Dark#2B3544
구분선, 행 hover, 비활성base-300
본문 Aa#18202B
본문 Aa#E5E9EF
본문 텍스트base-content
보조 Aa#556070
보조 Aa#9AA6B6
보조 텍스트 (추가)muted / text-muted
입력 경계#7C8796
입력 경계#6F7B8D
입력 경계 (UI 3:1, 추가)line-strong / border-line-strong
Aa#1F5AA6 / #FFFFFF
Aa#7AA7F2 / #0B1426
Primary (링크, 주 버튼, 포커스), Infoprimary + primary-content
Aa#6B3FC0 / #FFFFFF
Aa#B79CF5 / #1B0E3A
AI 표식accent + accent-content
Aa#B42318 / #FFFFFF
Aa#F28B82 / #2B0907
Errorerror + error-content
Aa#8A5000 / #FFFFFF
Aa#EDB257 / #2A1A00
Warningwarning + warning-content
Aa#116D40 / #FFFFFF
Aa#5CC38A / #06210F
Successsuccess + success-content
Aa#475467 / #FFFFFF
Aa#A9B4C3 / #0E131A
Neutral, Secondaryneutral + neutral-content

1.2 도메인 의미 매핑 (라이트와 다크 동시 비교)

위험도는 soft, 작성자 판단은 outline, 검토 상태는 solid로 모양이 다르다. 위험도 낮음은 녹색이 아니다(녹색은 사람의 결론과 시스템 작업 완료에만 쓴다). 점수는 색을 쓰지 않는다.

Light

위험도 (AI)
높음 중간 낮음
트리아지 상태
-AI 미요청 분석 중 AI 실패
작성자 판단
이상 없음 추가 확인 필요 예외 미판단
검토 상태
-검토 전 검토 대기 승인 반려
AI 산출물
AI 제안
점수 (색 없음)
10경미 25중 55상 80최상
테스트 실행
실행 중 완료 일부 실패
룰 실행
대기 실행 중 완료 미실행 실패
GL 적재
대기 적재 중 완료 실패

1.3 대비 검증 (WCAG 2.x, 디자인 문서 3.3)

색 쌍별 대비
쌍LightDark기준
본문 on base-100 / base-20016.40 / 15.0213.91 / 15.304.5
muted on base-100 / base-200 / base-3006.38 / 5.84 / 4.906.86 / 7.55 / 5.024.5
primary 텍스트 on base-100 / base-2006.84 / 6.266.97 / 7.674.5
primary-content on primary6.847.564.5
error on base-100 / soft6.57 / 5.827.09 / 6.344.5
warning on base-100 / soft6.51 / 5.768.96 / 7.844.5
success on base-100 / soft6.39 / 5.687.77 / 6.914.5
neutral on base-100 / soft7.69 / 6.748.07 / 7.164.5
accent on base-100 / soft6.78 / 6.027.33 / 6.524.5
*-content on solid (error, warning, success, neutral, accent)6.57, 6.51, 6.39, 7.69, 6.787.68, 8.91, 7.81, 8.88, 7.764.5
본문 / muted on AI 박스 틴트14.55 / 5.6612.37 / 6.104.5
line-strong vs base-100 / base-2003.64 / 3.343.95 / 4.343.0
포커스 링(primary) vs base-100 / base-2006.84 / 6.266.97 / 7.673.0

soft 배경은 역할색 8%를 base-100과 oklab 혼합한 근사값으로 계산했다. 이 시안은 같은 혼합(color-mix(in oklab, ...))으로 그리므로 실제 렌더 색을 여기서 확인할 수 있다. base-300 구분선(1.30 / 1.37)은 의도적으로 3:1 미만이며 정보를 전달하지 않는다.

2. 타이포그래피

시스템 폰트만 쓴다(외부 폰트 링크 없음). 금액, 날짜, 건수는 tabular-nums, ID와 코드는 mono + slashed-zero로 자르지 않는다.

sans: system-ui, -apple-system, "Segoe UI", "Apple SD Gothic Neo", "Malgun Gothic", "Noto Sans KR", sans-serif

누리정밀 주식회사 FY2025 분개 테스트

작성자 판단과 검토자 승인은 화면에서 분리된다. 0123456789

mono: ui-monospace, "SF Mono", Menlo, "Cascadia Mono", Consolas, monospace

JE-000123 L2

4110 approval_control_gap 3f9a0c7e claude-opus-5-5 0O 1l

2.1 크기와 굵기

페이지 제목
text-xl 20/28 semibold
JE-000123 전표 검토
섹션 제목
text-base 16/24 semibold
룰 적중
본문, 폼, 셀
text-sm 14/20
결산일 3일 이내에 수기로 입력된 전표입니다.
긴 문단 (AI 근거)
text-sm leading-6 14/24
결산일 이틀 전에 수기로 입력된 선급금 지급 전표이며, 입력자와 승인자가 같은 사용자로 기록되어 있습니다. 세 신호가 겹쳐 있어 추가 절차가 필요해 보입니다.
테이블 헤더
text-xs 12/16 semibold muted
금액(원)
메타, 캡션, 배지
text-xs 12/16, 배지 medium
2026-10-19 10:43 KST, triage-v1AI 제안
요약 수치 (KPI)
text-2xl tabular-nums 24/32 semibold
8,341건

2.2 표기 규칙 (디자인 문서 6장)

금액, 날짜, ID 표기 예
대상규칙예
금액 (표)원 단위, 천 단위 쉼표, 통화 기호 없음, 열 머리에 (원), 우측 정렬40,000,000
금액 (문장)숫자 뒤에 "원"수행중요성 225,000,000원
금액 (KPI)억/만 축약 허용, 전체 값은 title2억 2,500만원
음수hyphen-minus. 괄호와 빨간색 없음-1,250,000
0 (차변/대변)- + sr-only "0"-0
소수부가 0이 아닌 금액숨기지 않고 2자리 (데이터 오류 노출)12,000.50
건수, 비율, 진행률쉼표 + 단위, 비율 소수 1자리, 진행률 정수8,341건, 62.5%, 62%
날짜YYYY-MM-DD, 요일 없음2025-12-31
일시 (시스템 시각)KST(UTC+9 고정). 로그와 상세는 초까지, title에 UTC 원문
GL entered_at시간대 없는 KST 값 그대로 (변환 없음)2025-12-30 17:42:10
전표번호, 행mono, 선행 0 보존, 행은 muted L2JE-000123 L2
계정코드 mono + 이름 sans4110 제품매출
회계연도, 기간FY2025, 13은 결산조정FY2025, 13(결산조정)
해시, 모델 ID해시 앞 8자 + title, 모델 ID 전체3f9a0c7e claude-opus-5-5
사용자표시 이름 우선, ID는 title과 상세에서 mono김작성

3. 간격, 반경, 깊이

4px 기준. 그림자 대신 1px 경계가 기본이고, 모달은 쓰지 않는다. 다크 모드는 그림자 대신 표면 밝기 차로 위계를 만든다.

간격

4 기준
6 배지 아이콘-텍스트
8 컨트롤 간격
12 밀집 카드 패딩
16 카드 패딩
24 섹션 간격
32 페이지 좌우 (lg)

테이블 셀 12 x 6 (행 약 33px), 컨트롤 높이 32, btn-sm 25.6

반경

6px
box (카드, 표)
4px
field (입력, 버튼)
4px
selector (배지)
원
avatar

깊이

0: 경계만
카드, 테이블, AI 박스
1: shadow-sm
sticky 헤더, sign-off bar
2: shadow-md
드롭다운, flash

포커스

링크

4.0 프리미티브 (daisyUI)

daisyUI는 프리미티브에만 쓰고, 도메인 컴포넌트는 그 위에 Tailwind 유틸리티로 조합한다. 아이콘은 Heroicons(hero-*) 16px, 배지 안에서는 12px(-micro)이다.

btn높이 32, btn-sm 25.6. 한 화면에 primary는 하나. 색 변형은 core button/1에 class로 넘긴다
btn-primary: 주 행동
btn-soft: 보조 행동
btn: 기본
btn-success: 승인 전용
btn-outline btn-error: 반려 전용
btn-ghost
btn-sm: 표 안
비활성: 이유를 옆에 쓰고 aria-describedby로 잇는다
phx-submit-loading
input, select, textarea, radio경계 line-strong(3:1 이상). 라벨은 항상 위에 두고 placeholder로 대신하지 않는다
기본
포커스
금액은 원 단위 정수여야 합니다검증 오류
비활성
select
date
22 / 2000
라디오radio-sm radio-primary
CSV 파일을 끌어 놓거나 선택.csv 1개, 20MB, 100,000행까지
live_file_input 영역
tabs, jointabs-border는 화면의 1차 구분, join은 보조 필터(aria-pressed)
alert화면 안 고정 안내. 역할색 8% 틴트 + 역할색 경계, 본문은 base-content
1회 최대 100건까지 요청합니다. 요청하면 감사 로그에 요청자가 남습니다.
적재가 끝났습니다. 차변 합계와 대변 합계가 같습니다.
경고 1건이 있습니다. 적재는 완료되었고 테스트를 실행할 수 있습니다.
skeleton, loading, tooltip애니메이션은 150ms 이하이거나 반복 표시용이며 prefers-reduced-motion에서 멈춘다
skeleton
분석 중loading-dots (AI)
실행 중회전 아이콘 (시스템 작업)
휴일tooltip: 짧은 이름의 전체 이름

4.1 표시 컴포넌트

TickmarkWeb.AuditComponents. 모든 상태를 아이콘과 텍스트로 함께 전달하고, 색만으로 구분하지 않는다.

money/1value, zero :dash | :number. tabular-nums, 부모 셀 text-right
40,000,000양수
-1,250,000음수 (hyphen-minus)
00, zero: :number
-00, zero: :dash (차변/대변)
-없음nil
12,000.50소수부가 0이 아님 (오류 노출)
entry_ref/1number, line, navigate. 전표번호는 자르지 않는다
JE-000123링크
JE-000123 L2행 참조
JE-000123비링크
score_meter/1score 0-100 (룰 가중치 합, 상한 100). 채움 칸 = ceil(score / 20). 색 역할 없음
10경미0-24 경미
25중25-49 중 (검토 큐 시작)
50상50-74 상
55상55 = 20 + 10 + 25
80최상75-100 최상
100최상상한
risk_badge/1level + triage_status. soft. 낮음은 녹색이 아니다
높음중간낮음
succeeded, size :sm (표)
높음size :md (S5 헤더)
-AI 미요청none
분석 중queued
AI 실패failed
conclusion_badge/1outcome (작성자의 최신 결론). outline
이상 없음no_exception
추가 확인 필요needs_follow_up
예외exception
미판단nil
review_badge/1findings.status. solid
-검토 전open
검토 대기concluded
승인approved
반려rejected
ai_marker/1model, prompt_version. AI가 만든 것에는 항상 붙는다
AI 제안기본, hover/focus 시 모델과 프롬프트 버전
test_progress/1status, rules, done, total. 룰은 최대 4개 동시 실행(Oban rules: 4). 요약 텍스트만 aria-live
실행 중 2 / 8 룰25%
25%
  • 완료주말/공휴일 전기46건
  • 완료업무시간 외 입력42건
  • 실행 중라운드 금액집계 중
  • 실행 중기말 수기 전표집계 중
  • 실행 중승인 통제 이탈집계 중
  • 실행 중증빙일 괴리집계 중
  • 대기희귀 계정 조합대기
  • 대기중복 전표 의심대기
실행 중: 완료 2, 실행 4, 대기 2
완료 8 / 8 룰, 적중 전표 265건100%
100%
  • 완료주말/공휴일 전기46건
  • 완료업무시간 외 입력42건
  • 완료라운드 금액68건
  • 완료기말 수기 전표45건
  • 완료승인 통제 이탈40건
  • 완료증빙일 괴리29건
  • 완료희귀 계정 조합16건
  • 완료중복 전표 의심15건
완료: 룰별 적중 수가 남는다(한 전표가 여러 룰에 걸리므로 합계 301은 적중 전표 265보다 크다)
일부 실패 8 / 8 룰 종료, 실패 1, 미실행 1100%
100%
  • 완료주말/공휴일 전기21건
  • 완료업무시간 외 입력30건
  • 완료라운드 금액44건
  • 완료기말 수기 전표19건
  • 완료승인 통제 이탈25건
  • 완료증빙일 괴리12건
  • 미실행희귀 계정 조합미실행
  • 실패중복 전표 의심실행 실패, 로그 확인
completed_with_errors: 실패 룰의 오류 원문은 보이지 않는다. 미실행(skipped)은 실패가 아니며 사유를 title로 둔다
presence_avatars/1users, current_user_id, max (4). neutral 원 + 이니셜, 이름은 tooltip
(렌더하지 않음)0명
지금 보는 사람: 김작성(나), 박검토본인 포함 2명 (본인은 base-300)
지금 보는 사람: 김작성(나), 박검토, 이작성초과 +N (max 2로 줄인 예)
filter_tabs/1tabs, active, patch_base. 건수 badge-sm, <.link patch> + aria-current
stat_row/1items %{label, value, hint}. 값 있음, 로딩, 실행 없음
전표8,341건
라인19,804건
검토 큐52건점수 25 이상
경미 적중213건점수 25 미만
승인4/ 52
전표
라인
검토 큐-테스트를 실행하면 채워집니다
위: 값 있음. 아래: 로딩(skeleton)과 실행 없음(-)

4.2 복합 컴포넌트

S5(전표 검토)는 위에서 아래로 사실, 룰 근거, AI 제안(점선), 사람 판단(실선), 서명 순서다. AI 박스와 사람 박스는 경계 모양으로 구분한다.

data_table/1sticky 헤더, 숫자 열 우측 정렬, 선택 행 primary 10% + aria-current, zebra 없음. 100행 이상은 stream + 더 보기
검토 큐 일부
전표전기일금액(원)점수판단
JE-0001232025-12-3040,000,00055상미판단
JE-0044152025-12-3130,000,00055상예외
JE-0029612025-08-1425,000,00050상이상 없음
기본 + 선택 행(첫 줄). 행에 마우스를 올리면 base-200
불러오는 중
전표전기일금액(원)
로딩: skeleton 행
조건에 맞는 전표가 없습니다.
비어 있음: empty 슬롯
entry_lines/1lines (GL 계약 컬럼명), highlight_lines. 합계는 컴포넌트가 계산, 0은 "-"
JE-007702 전표 행
행계정적요차변(원)대변(원)
룰 대상 L15210 급여12월 급여 미지급 계상18,350,000-0
룰 대상 L22120 미지급금12월 급여 미지급 계상-018,350,000
차대 일치18,350,00018,350,000
일치 + 룰 대상 행 강조 (희귀 계정 조합 5210 / 2120: 좌측 warning 4px + 아이콘)
차대 불일치 예
행계정차변(원)대변(원)
L15210 급여18,350,000-0
L22120 미지급금-018,340,000
차이 10,00018,350,00018,340,000
불일치: 적재 검증(unbalanced_entry)을 통과한 데이터에서는 나오지 않는다
rule_hit_list/1hits %{rule_id, name, score, reason, details}. 0건이면 렌더하지 않음
  • +20
    기말 수기 전표period_end_manual

    결산일(2025-12-31) 3일 이내에 수기로 입력된 전표입니다.

    근거 값
    posting_date
    2025-12-30
    source
    manual
    period_end_window_days
    3
  • +10
    라운드 금액round_amount

    금액 40,000,000이 1,000,000 단위로 떨어지고 기준(10,000,000) 이상입니다.

    근거 값
    entry_amount
    40,000,000
    round_unit
    1,000,000
    round_min_amount
    10,000,000
  • +25
    승인 통제 이탈approval_control_gap

    승인자가 입력자와 같습니다 (acct03).

    근거 값
    entered_by
    acct03
    approved_by
    acct03
    entry_amount
    40,000,000
    approval_min_amount
    1,000,000

점수55 = 20 + 10 + 25

JE-000123. 두 번째 항목은 근거 값을 펼친 상태
ai_suggestion_card/1triage, triage_status, can_request. 점선 accent + 5% 틴트. 결론 라디오를 미리 고르지 않는다
AI 제안높음
2026-10-19 10:43

이 제안은 판단이 아닙니다. 결론은 작성자가 입력합니다.

근거

결산일 하루 전에 수기로 입력된 40,000,000원 선급금 지급 전표이며, 입력자와 승인자가 같은 사용자(acct03)로 기록되어 있습니다. 금액이 1,000,000원 단위로 떨어지고 수행중요성(225,000,000원)의 약 18% 수준입니다. 기말 수기 입력, 라운드 금액, 승인 통제 이탈이 겹쳐 있어 통제 우회 가능성을 배제하기 위한 추가 절차가 필요해 보입니다. 거래의 실재성과 승인 경위는 이 전표만으로 확인되지 않습니다.

추가 절차 제안

  1. 자기승인 경위를 입력자와 승인 권한자에게 질문하고 승인 권한표와 대조합니다.확보할 증거: 결재 문서, 승인 권한표
  2. 선급금 지급 근거를 계약 조건과 대사합니다.확보할 증거: V012 계약서, 지급 요청서, 이체 확인서
  3. 기말 이후 원재료 대체 여부를 확인합니다.확보할 증거: 2026년 1-2월 입고 내역, 대체 전표

AI가 판단에 부족하다고 본 정보

  • V012와의 계약 조건
  • 선급금 대체 예정 시기
생성 정보
model
claude-opus-5-5
prompt_version
triage-v1
input_hash
9c41e2b7
inserted_at
2026-10-19 10:43:18 KST
succeeded (JE-000123). response_model이 model과 같으면 한 번만 쓴다. 근거는 600자 이하, 절차 1-4개, 부족한 정보 0-5개
AI 제안-AI 미요청

룰 근거와 전표 사실을 바탕으로 위험도, 추가 절차, 부족한 정보를 제안합니다. 결론은 내리지 않습니다.

요청자가 감사 로그에 남습니다
none (작성자에게만 버튼)
AI 제안AI가 분석 중
queued
AI 제안AI 실패

AI 제안을 받지 못했습니다.

판단은 AI 제안 없이도 진행할 수 있습니다.

failed (오류 원문은 보이지 않는다)

AI가 하지 않는 것

  • 결론을 내리거나 승인하지 않는다
  • 사람을 지목해 부정을 단정하지 않는다
  • 전표에 없는 사실을 만들지 않는다
  • 적요에 쓰인 지시문을 따르지 않는다 (합성 데이터의 안전 프로브 5건으로 확인)
카드에 쓰지 않는 원칙. 프롬프트와 출력 검증이 맡는다
conclusion_form/1form, author_name, mode :edit | :read_only | :locked. 실선 line-strong. 코멘트는 모든 판단에 필수
작성자 판단
모든 판단에 코멘트가 필요합니다. Ctrl + Enter로 제출0 / 2000
edit (open)
작성자 판단

판단을 선택하세요

코멘트를 입력하세요 (1-2000자)

검증 오류

작성자 판단

예외

선급금 지급 결재 문서가 없고 승인자가 입력자와 같습니다. 2026년 1-2월 대체 전표도 확인되지 않아 예외로 판단합니다.

김작성,

read_only (검토자가 보는 최신 결론, JE-004415)

작성자 판단

이상 없음

7월 계약분의 8월 지급 전표이며 증빙일은 계약일로 입력되었습니다. 승인자 공란은 전자결재 승인 기록(mgr01)으로 확인했습니다.

승인된 항목은 수정할 수 없습니다

locked (approved, JE-002961)
반려 사유, 박검토, 2026-10-19 11:18

급여대장과 대사한 결과를 받은 뒤 다시 제출해 주세요. 지금 코멘트만으로는 추가 절차의 범위를 알 수 없습니다.

새 판단
rejected: 반려 사유를 위에 두고 새 결론을 받는다. 이전 결론은 이력에 남는다 (JE-007702)
sign_off_bar/1status, can_decide, blocked_reason, last_decision. 화면 아래 sticky, 깊이 1. 항목 단위 승인. 권한은 서버가 다시 검증
작성자 판단예외김작성, 11:21
결정 가능 (concluded + 검토자)
작성자 판단예외
승인하시겠습니까?
승인 2단계 (같은 줄에서 확인)
반려: 사유 입력 인라인 패널 (모달 없음)

작성자는 승인, 반려할 수 없습니다 (직무분리)

작성자가 보는 화면. DB CHECK(reviewer_id <> preparer_id)로도 막힌다

작성자 결론이 제출되지 않았습니다

결론 전 (open)
승인박검토,
approved (읽기 전용)
반려박검토,

급여대장과 대사한 결과를 받은 뒤 다시 제출해 주세요.

rejected (사유 표시)
finding_history/1entries %{kind :conclusion | :decision, actor_name, outcome | decision, comment, inserted_at}. 시간순, append-only
  1. 이작성결론 제출추가 확인 필요

    12월 급여 미지급분 계상으로 보이나 급여대장을 받지 못했습니다. 인사팀에 요청했습니다.

  2. 박검토검토반려

    급여대장과 대사한 결과를 받은 뒤 다시 제출해 주세요. 지금 코멘트만으로는 추가 절차의 범위를 알 수 없습니다.

JE-007702. 다시 제출하면 아래에 새 줄이 붙고 위 줄은 그대로 남는다. 비어 있으면 "아직 결론이 없습니다"
audit_event_item/1event (audit_events 컬럼). 행위자 3종, payload 접힘, 방금 추가됨 1.5초 하이라이트. 수정/삭제 버튼 없음
  1. #80김작성결론 제출conclusion.submitted
    대상JE-004415예외
    payload
    conclusion_id
    5e0b9c7a-3d2f-4b61-9a8e-1c7f4d2b6e90
    outcome
    "exception"
  2. #78triage:claude-opus-5-5AI 제안 실패ai_triage.failed
    대상JE-005590
  3. #9testing.rule_worker테스트 완료test_run.completed
    대상테스트 실행 2026-10-19 10:02적중 265건, 검토 큐 52건
사람(primary 10%), AI(accent 10%), 시스템(base-300). 첫 줄은 방금 추가된 상태와 payload 펼침
flash깊이 2. 성공과 안내는 aria-live polite, 오류는 role alert. 저장 뒤 포커스는 버튼에 남긴다
결론을 제출했습니다. 검토 대기로 표시됩니다.
성공
오류 ({:error, :self_review})
빈 상태무엇이 없는지 한 문장 + 다음 행동 하나
감사 대상이 없습니다.
조건에 맞는 전표가 없습니다.
아직 결론이 없습니다.

5. 화면 시안

데스크톱 1024px 기준이다. 좁은 화면에서는 시안 틀 안에서만 가로로 스크롤한다. 값은 도메인 문서 7장의 합성 데이터(누리정밀 주식회사, FY2025)이고, 시각은 KST로 보인다. 시안 안의 링크는 이 문서의 해당 화면으로 이동한다.

S1 감사 대상 목록

S1/engagements/newEngagementLive.Index :new, 김작성으로 로그인
Tickmark
kim.writer@example.com

감사 대상

새 감사 대상

새 감사 대상

만든 사람은 이 감사 대상의 작성자 멤버가 됩니다. 검토자는 상세 화면에서 추가합니다.

취소
내가 속한 감사 대상
회사명회계연도결산일수행중요성(원)최근 테스트검토 큐(건)내 역할
누리정밀 주식회사FY20252025-12-31225,000,000완료52작성자
한빛소재 주식회사FY20252025-12-31410,000,000실행 중-없음검토자
다온식품 주식회사FY20242024-12-3196,000,000일부 실패31작성자

S1은 감사 대상이 정해지기 전이라 상단 바에 감사 대상 이름, 감사 로그, presence가 없다. "새 감사 대상"은 모달이 아니라 목록 위 인라인 패널이다. 한 화면의 primary는 "만들기" 하나다.

S2 감사 대상 상세

S2/engagements/:idEngagementLive.Show, 김작성(작성자, 생성자)
Tickmark
지금 보는 사람: 김작성(나), 박검토 kim.writer@example.com

감사 대상누리정밀 주식회사 FY2025

누리정밀 주식회사 FY2025

결산일 2025-12-31수행중요성 225,000,000원

GL 불러오기
전표8,341건
라인19,804건
검토 큐52건점수 25 이상
경미 적중213건점수 25 미만
승인4/ 52

멤버

멤버
이름이메일역할
김작성 (나)kim.writer@example.com작성자
이작성lee.writer@example.com작성자
박검토park.reviewer@example.com검토자
한 사용자는 한 역할만 가진다. 추가 폼은 감사 대상을 만든 사람에게만 보인다

GL 적재

GL 적재 목록
출처상태전표라인차변 합계(원)대변 합계(원)오류경고해시적재 시각행동
합성 GL, 시드 20251231완료8,34119,804386,214,905,000386,214,905,000003f9a0c7e2026-10-19 09:55
gl_2025_draft.csv실패-없음-없음-없음-없음41b71d02e52026-10-19 09:48

테스트 실행

테스트 실행 목록
시작 시각상태룰적중 전표검토 큐행동
2026-10-19 10:02완료8 / 826552열기

"테스트 실행"은 작성자에게만, 같은 적재에 실행 중인 테스트가 없을 때만 보인다. 실행 중이면 버튼 대신 "실행 중인 테스트가 있습니다"가 그 자리에 보인다({:error, :run_in_progress}). 실패한 적재의 행을 누르면 S3의 오류 표로 간다.

S3 GL 적재

S3 (a)/engagements/:id/imports/newImportLive, CSV 업로드가 검증에서 실패한 상태
Tickmark
지금 보는 사람: 김작성(나) kim.writer@example.com

감사 대상누리정밀 주식회사 FY2025GL 불러오기

GL 불러오기

CSV 파일을 끌어 놓거나 선택.csv 1개, 20MB, 100,000행까지. 컬럼은 MVP 문서 5장의 GL 계약을 따른다
파일을 선택하면 업로드할 수 있습니다
gl_2025_draft.csv실패
2026-10-19 09:48, 해시 b71d02e5
적재 오류
행컬럼코드내용
214debitboth_sides한 행에는 차변과 대변 중 하나만 있어야 합니다
1,032entered_atinvalid_date날짜 또는 일시 형식이 잘못되었습니다
3,377entry_numberunbalanced_entry전표의 차변 합계와 대변 합계가 다릅니다
5,881entry_numbernon_contiguous_entry같은 전표의 행이 이어져 있지 않습니다
경고 1건
적재 경고
행컬럼코드내용
7,410posting_dateperiod_mismatch전기일의 월과 회계기간이 다릅니다
S3 (b)/engagements/:id/imports/new합성 GL 생성이 끝난 상태
Tickmark
지금 보는 사람: 김작성(나) kim.writer@example.com

감사 대상누리정밀 주식회사 FY2025GL 불러오기

GL 불러오기

같은 시드면 같은 GL이 나옵니다. 룰 테스트의 기대 건수는 시드 20251231 기준입니다.

합성 GL, 시드 20251231완료
2026-10-19 09:55, 해시 3f9a0c7e
전표8,341건
라인19,804건
차변 합계 = 대변 합계386,214,905,000원
경고0건
룰 8개를 실행하고 S4로 이동합니다

상태는 같은 화면에서 대기, 적재 중, 완료/실패로 바뀐다(import_updated). 오류는 최대 100건까지 보이고 넘으면 "그 밖에 N건"이 붙는다. 오류 내용은 코드별 고정 문구다.

S4 테스트 실행

S4/engagements/:id/runs/:run_idTestRunLive, 검토 큐 탭, 김작성(작성자)
Tickmark
지금 보는 사람: 김작성(나), 이작성, 박검토 kim.writer@example.com

감사 대상누리정밀 주식회사 FY2025테스트 실행

테스트 실행 2026-10-19 10:02

완료 8 / 8 룰, 적중 전표 265건10:02:04 - 10:02:19
100%
  • 완료주말/공휴일 전기46건
  • 완료업무시간 외 입력42건
  • 완료라운드 금액68건
  • 완료기말 수기 전표45건
  • 완료승인 통제 이탈40건
  • 완료증빙일 괴리29건
  • 완료희귀 계정 조합16건
  • 완료중복 전표 의심15건
AI 트리아지검토 큐 52건: 완료 50, 분석 중 1, 실패 1, 미요청 0
모든 항목을 요청했습니다. 실패 항목은 전표 화면에서 다시 요청합니다

1회 최대 100건까지 요청합니다. 요청하면 감사 로그에 요청자가 남습니다. 결과가 오는 대로 표의 AI 열이 바뀝니다.

검토 큐, 점수 내림차순
전표전기일금액(원)점수적중 룰AI판단검토
JE-0001232025-12-3040,000,00055상기말 수기, 라운드, 승인 이탈높음미판단-검토 전
JE-0044152025-12-3130,000,00055상기말 수기, 라운드, 승인 이탈높음예외검토 대기
JE-0029612025-08-1425,000,00050상증빙일, 라운드, 승인 이탈중간이상 없음승인
JE-0077022025-12-2918,350,00050상희귀 조합, 기말 수기, 시간 외높음추가 확인 필요반려
JE-0018462025-03-1112,840,00025중승인 이탈낮음미판단-검토 전
JE-0033072025-06-174,730,00025중승인 이탈분석 중미판단-검토 전
JE-0055902025-09-221,260,00025중승인 이탈AI 실패미판단-검토 전
JE-0061182025-10-042,480,00025중휴일, 시간 외낮음이상 없음승인

기본 정렬은 점수 내림차순, 같으면 전표번호. 적중 룰은 짧은 이름이고 전체 이름은 S5와 툴팁에 있다. 경미 적중 탭에는 AI 열과 트리아지 바가 없다(트리아지 대상이 아니다).

S5 전표 검토

S5/engagements/:id/findings/:finding_idFindingLive.Show, JE-000123, 작성자(김작성)가 보는 화면

감사 대상누리정밀 주식회사 FY2025테스트 실행 2026-10-19 10:02JE-000123

JE-000123

55상높음미판단-검토 전
이 전표를 보는 사람: 김작성(나), 박검토

전표 사실

전기일
2025-12-30
증빙일
2025-12-24
입력 일시 (KST)
2025-12-30 17:42:10
회계기간
12
입력자
acct03
승인자
acct03입력자와 같음
구분
수기기말 수기 전표 근거
거래처
V012
적요
선급금 지급

전표 행

JE-000123 전표 행
행계정적요차변(원)대변(원)
L11310 선급금선급금 지급40,000,000-0
L21020 보통예금선급금 지급-040,000,000
차대 일치40,000,00040,000,000

룰 적중

  • +20
    기말 수기 전표period_end_manual

    결산일(2025-12-31) 3일 이내에 수기로 입력된 전표입니다.

    근거 값
    posting_date
    2025-12-30
    source
    manual
    period_end_window_days
    3
  • +10
    라운드 금액round_amount

    금액 40,000,000이 1,000,000 단위로 떨어지고 기준(10,000,000) 이상입니다.

    근거 값
    entry_amount
    40,000,000
    round_unit
    1,000,000
    round_min_amount
    10,000,000
  • +25
    승인 통제 이탈approval_control_gap

    승인자가 입력자와 같습니다 (acct03).

    근거 값
    entered_by
    acct03
    approved_by
    acct03
    entry_amount
    40,000,000
    approval_min_amount
    1,000,000

점수55 = 20 + 10 + 25

AI 제안높음
2026-10-19 10:43

이 제안은 판단이 아닙니다. 결론은 작성자가 입력합니다.

근거

결산일 하루 전에 수기로 입력된 40,000,000원 선급금 지급 전표이며, 입력자와 승인자가 같은 사용자(acct03)로 기록되어 있습니다. 금액이 1,000,000원 단위로 떨어지고 수행중요성(225,000,000원)의 약 18% 수준입니다. 기말 수기 입력, 라운드 금액, 승인 통제 이탈이 겹쳐 있어 통제 우회 가능성을 배제하기 위한 추가 절차가 필요해 보입니다. 거래의 실재성과 승인 경위는 이 전표만으로 확인되지 않습니다.

추가 절차 제안

  1. 자기승인 경위를 입력자와 승인 권한자에게 질문하고 승인 권한표와 대조합니다.확보할 증거: 결재 문서, 승인 권한표
  2. 선급금 지급 근거를 계약 조건과 대사합니다.확보할 증거: V012 계약서, 지급 요청서, 이체 확인서
  3. 기말 이후 원재료 대체 여부를 확인합니다.확보할 증거: 2026년 1-2월 입고 내역, 대체 전표

AI가 판단에 부족하다고 본 정보

  • V012와의 계약 조건
  • 선급금 대체 예정 시기
생성 정보
model
claude-opus-5-5
prompt_version
triage-v1
input_hash
9c41e2b7
inserted_at
2026-10-19 10:43:18 KST
작성자 판단
AI 제안을 본 상태로 제출하면 그 제안이 결론에 연결됩니다. Ctrl + Enter로 제출0 / 2000

이력

아직 결론이 없습니다.

작성자는 승인, 반려할 수 없습니다 (직무분리)

위에서 아래로 사실, 룰 근거, AI 제안(점선), 사람 판단(실선), 서명 순서다. AI는 결론 라디오를 미리 고르지 않는다. presence는 이 화면에서 상단 바 대신 헤더에 있고, 같은 전표를 보는 사람만 보인다(view "finding:#{id}"). 왼쪽 큐는 S4의 탭과 필터를 이어받는다. 검토자(박검토)가 결론 제출 뒤 같은 화면을 보면 판단은 read_only, 서명 바는 4.2의 "결정 가능" 상태가 된다.

S6 감사 로그

S6/engagements/:id/auditAuditLive, 읽기 전용
Tickmark
지금 보는 사람: 김작성(나) kim.writer@example.com

감사 대상누리정밀 주식회사 FY2025감사 로그

감사 로그

읽기 전용. 기록은 수정하거나 삭제할 수 없습니다.

  1. #80김작성결론 제출conclusion.submitted
    대상JE-004415예외
    payload
    conclusion_id
    5e0b9c7a-3d2f-4b61-9a8e-1c7f4d2b6e90
    outcome
    "exception"
  2. #79김작성AI 제안 요청ai_triage.requested
    대상JE-003307다시 요청
  3. #78triage:claude-opus-5-5AI 제안 실패ai_triage.failed
    대상JE-005590
  4. #77김작성AI 제안 요청ai_triage.requested
    대상JE-005590다시 요청
  5. #76박검토반려review.rejected
    대상JE-007702급여대장과 대사한 결과를 받은 뒤 다시 제출해 주세요.
  6. #75이작성결론 제출conclusion.submitted
    대상JE-000958이상 없음
    payload
    conclusion_id
    a2c4e6f8-1b3d-4f5a-8c7e-9d0b2a4c6e81
    outcome
    "no_exception"
  7. #74박검토승인review.approved
    대상JE-003871
  8. #73이작성결론 제출conclusion.submitted
    대상JE-006640추가 확인 필요
    payload
    conclusion_id
    7f1e3d5c-9b2a-4c8e-a6f4-0d2b4e6a8c13
    outcome
    "needs_follow_up"
  9. #72김작성결론 제출conclusion.submitted
    대상JE-003871예외
    payload
    conclusion_id
    c8a0e2b4-6d1f-4a3c-9e5b-7f2d4a6c8e05
    outcome
    "exception"
  10. #71박검토승인review.approved
    대상JE-005033
  11. #70박검토승인review.approved
    대상JE-001207
  12. #69박검토승인review.approved
    대상JE-002961

새 이벤트는 목록에 바로 끼우지 않고 "새 이벤트 N건" 버튼으로 알린다. 읽던 위치가 밀리지 않게 하기 위해서다. 보이지 않는 앞부분은 #1 engagement.created(09:41:03)부터 #2-3 멤버 추가, #4-7 GL 적재 2회(실패 1, 완료 1), #8-9 테스트 실행 시작과 완료, #10 검토 큐 52건 일괄 AI 요청(10:40:22), #11-62 AI 결과 52건(완료 50, 실패 2), #63-67 결론 제출 5건, #68 JE-006118 승인(11:04:09)이다. 일시는 KST로 보이고 datetime 속성과 툴팁은 UTC다.