세카
경력근거: 추출한 값마다 단위, 조건, 원문 위치를 함께 남겨 이후 검색과 검증에서 근거로 쓸 수 있게 합니다.
※ 실제 산출물이 아닌 AI 예측 시안입니다.
세카 공고는 주요 업무로 'Requirements, Datasheet, Drawing, Schematic, BOM에서 텍스트, 표, 도형, 기호를 추출해 구조화' 하고 '추출한 값마다 단위, 조건, 원문 위치를 함께 남겨 이후 검색과 검증에서 근거로 쓸 수 있게' 한다고 적습니다. 이 CLI 는 그 두 줄이 만든 값 위에서 바로 돌아가는 첫 번째 검증입니다. 요구사항 표와 데이터시트 표를 같은 조건 이름과 기준 단위로 맞춰야 판정이 서고, 파서가 단위·조건·쪽수를 버리면 판정이 근거를 잃습니다. '수치·범위 조건을 어디에 쓸지 직접 정합니다' 라는 줄은 범위 덮기와 단위 환산 규칙으로, '문서 유형별 실패 사례로 평가셋' 은 파서가 놓친 마이너스 기호와 온도 특성 코드 사례로 받습니다. 이 포트폴리오는 데이터시트 파싱 결과를 요구 범위와 견주는 판정 규칙과 평가 도구를 보여줍니다. 회로 설계와 부품 선정의 전문성은 주장하지 않습니다.
주요 업무에 '추출한 값마다 단위, 조건, 원문 위치를 함께 남겨 이후 검색과 검증에서 근거로 쓸 수 있게 합니다' 가 있습니다. 데이터시트 정격 값마다 unit·condition·source_page·source_text 를 두고, 판정이 그 쪽수를 검토 목록에 그대로 싣는 구조가 이 줄을 받습니다.
'의미 검색, 속성 필터, 수치·범위 조건을 어디에 쓸지 직접 정합니다' 와 '요구사항, 부품, 설계 블록 사이의 관계' 가 함께 적혀 있습니다. 설계 블록으로 요구와 부품을 잇고 단위 환산 뒤 범위 덮기로 판정하는 1주차가 그 수치 조건을 쓰는 자리이고, 3주차 그래프 질의가 관계 쪽을 받습니다.
'문서 유형별 실패 사례로 평가셋을 만들고, 모델이나 파이프라인을 바꿀 때마다 전후를 비교합니다' 와 우대 사항 'OCR과 VLM 출력의 오류 패턴을 분석하고' 가 있습니다. 2주차에 pdfplumber 와 클로드 비전 두 파서를 데이터시트 30종 정답과 맞대고, 마이너스 기호·온도 특성 코드 같은 놓친 사례를 평가셋으로 모읍니다.
고객사에 파견돼 일하는 세카 엔지니어(FDE)가 고객 제조사 설계 조직 안에서 자기 터미널로 돌려, 보드에 들어가는 부품 목록(BOM)의 부품마다 데이터시트 정격이 설계 블록 요구를 덮는지 판정하는 Python CLI 입니다. KiCad 에서 내보낸 부품 목록, 데이터시트 PDF 에서 뽑은 정격 값, 요구사항 문서에서 뽑은 설계 블록별 요구 범위 세 파일을 받아, 부품이 놓인 블록의 요구를 하나씩 정격과 견줍니다. 단위 환산표로 °C·℃·mA 같은 표기를 기준 단위로 옮기고, 같은 조건이 두 줄이면 좁은 쪽을 씁니다. 결과는 다섯 판정 중 하나로 터미널에 찍히고, 걸린 부품은 데이터시트 쪽수와 요구 번호를 붙인 검토 목록으로 남아 고객사 회로 설계 담당에게 갑니다.
고객 제조사 설계 조직에 들어가 요구사항·데이터시트·BOM 파싱 파이프라인을 붙이는 세카 FDE AI 엔지니어 — 파싱 결과를 자기 터미널에서 돌려, 고객사 회로 설계 담당에게 넘길 부품 검토 목록을 원문 위치와 함께 뽑는다
회로 설계 담당은 부품을 고를 때 데이터시트 첫 쪽의 대표 사양을 보고, 요구사항 문서의 블록별 온도·전압 요구와는 BOM 검토 회의에서 사람이 기억으로 견줍니다. 데이터시트 정격 값마다 단위·조건·쪽수가 남아 있으면, 요구 범위를 덮지 못하는 부품과 값이 비어 사람이 다시 봐야 하는 부품을 BOM 검토 전에 원문 위치를 붙여 뽑을 수 있습니다.
FDE 가 BOM CSV, 데이터시트 정격 JSONL, 요구사항 JSONL 을 넣어 seca-bom check 를 치면 BOM 줄마다 다섯 판정과 요구별 견줌 결과를 찍고, 걸린 부품을 쪽수·요구 번호를 붙인 마크다운 검토 목록으로 남기는 Python CLI 입니다. 데이터시트 정격 값은 지원자가 공개 데이터시트 PDF 에서 손으로 뽑은 JSONL 을 받는다고 두고 시작하며, PDF 를 직접 읽는 일은 2주차로 미룹니다.
pdfplumber 표 추출과 클로드 비전 모델 추출 두 가지 파서가 데이터시트 PDF 30종에서 같은 JSONL 을 내게 하고, 손으로 뽑은 정답과 맞대어 값이 맞은 줄 수를 파서별로 셉니다. 마이너스 기호, 온도 특성 코드만 있는 표, 주문 코드 접미별 온도 등급처럼 놓친 사례를 문서 유형별 평가셋으로 모으고, 파싱 단계를 Docker 이미지로 묶어 AWS EKS 에서 Kubernetes Job 으로 돌립니다.
설계 블록·요구·부품·데이터시트 쪽을 노드로, 판정을 간선으로 둔 그래프를 만들어 'REQ-MOT-03 에 걸린 부품'·'105℃ 를 못 덮는 MCU 블록 부품' 같은 질문을 속성 필터와 수치 범위 조건으로 답합니다. 보드 리비전 두 장의 판정을 견줘 새로 걸린 부품만 검토 목록에 올립니다.
FDE 가 `seca-bom check --bom inverter-ctrl_bom.csv --params parsed/datasheet_params.jsonl --req parsed/requirements.jsonl` 를 치면 Q7 SI2302CDS-T1-GE3 이 V_DS 20V / 요구 30V(REQ-MOT-03)로, U1 STM32F103C8T6 이 동작 온도 -40~85°C / 요구 -40~105℃ 로 정격 범위가 요구에 못 미침에 찍히고, 걸린 부품마다 데이터시트 쪽수와 검토 메모가 붙은 목록이 마크다운으로 남습니다. FDE 는 그 목록을 고객사 회로 설계 담당에게 보냅니다.
하한이 null 인 GRM32ER71H106KA12L 동작 온도, 동작 온도 줄이 없는 GRM21BR71C104KA01L, 접미 6·7 두 줄이 중복으로 들어온 STM32F103C8T6, 'V AC' 로 남은 B4B-XH-A 정격 전압, 요구가 mA 인 REQ-CON-02, 정격 상한이 요구와 꼭 같은 TPS54331DR 을 pytest 고정 입력으로 묶어, 비교 부등호나 환산 순서를 바꾼 커밋은 TPS54331DR 이 요구사항 충족에서 벗어나는 순간 실패하게 합니다.
2주차에는 작성자가 손으로 판정을 단 BOM 줄 60개와 CLI 판정이 일치하는 수를 세고, 데이터시트 30종에서 pdfplumber 와 클로드 비전 두 파서가 맞힌 정격 값 줄 수를 나란히 내어 어느 문서 유형에서 어느 파서가 값을 놓쳤는지 보여줍니다.
진짜 성능 검증은 여기서 멈춥니다. 위 수치는 공개 데이터시트와 작성자가 지은 요구 범위로 잰 자가채점이라, 이 CLI 의 판정이 고객 제조사의 BOM 검토 결론과 맞는지는 세카 고객사의 실제 요구사항 문서와 회로 설계 담당의 검토 기록이 있어야 잴 수 있습니다. 첫 고객 보드가 들어오면 사람이 한 BOM 검토 결과와 CLI 판정을 같은 BOM 으로 견줘 어긋난 부품부터 봅니다.
요구 범위 10줄은 제가 공개 보드의 사용 환경을 가정해 지은 것이라, 고객사 요구사항 문서는 블록 이름·조건 이름·단위가 다를 수 있습니다. 실제 문서를 받으면 판정보다 먼저 KiCad 시트 이름과 요구 문서 블록 이름, 데이터시트 조건 이름과 요구 조건 이름의 대응표 초안을 들고 회로 설계 담당과 맞춥니다.
판정 규칙과 정답을 한 사람이 만들면 데이터시트 값이 늘 깔끔하게 뽑힌 것으로 두기 쉬워, 실제 PDF 에서 값이 빠지는 자리를 먼저 정하고 나머지를 채웠습니다. 하한이 null 인 GRM32ER71H106KA12L, 동작 온도 줄이 없는 GRM21BR71C104KA01L, 같은 부품 번호로 두 줄 들어온 STM32F103C8T6, 'V AC' 로 남은 B4B-XH-A 가 그 자리입니다.
요구가 설계 블록 단위로 걸리므로 인덕터처럼 정격 전압이 원래 없는 부품도 데이터시트에 그 조건이 없음으로 나옵니다. 실제 보드에서 이런 줄이 많으면 부품 종류별로 요구를 빼는 표가 필요하고, 그 표는 고객사 회로 설계 담당이 정할 일입니다.
데이터시트 정격은 접합 온도와 주위 온도처럼 조건이 다른 값이 같은 조건 이름으로 들어올 수 있습니다. 이 CLI 는 condition 원문을 검토 목록에 그대로 싣고, 어느 조건을 요구와 견줄지는 판정이 아니라 사람이 정합니다.
TPS54331DR 의 rated_voltage 28V 는 입력 전압 권장 동작 범위의 상한이고, 절대 최대 정격은 데이터시트에 따로 있습니다. 같은 조건 이름에 둘이 섞이면 같은 값을 덮은 것으로 보는 경계 판정의 뜻이 바뀌므로, 2주차 조건 이름 대응에서 abs_max_voltage 를 rated_voltage 와 갈라 둡니다. 어느 정격을 요구와 견줄지는 회로 설계의 판단이라 고객사 회로 설계 담당이 정하고, 이 편은 그 판단을 대신한다고 주장하지 않습니다.
① 인라인 샘플 · ② seed.json 다운로드 · ③ 증강 프롬프트. 세 층 모두 동일한 schema 에서 파생.
고객사 회로 설계 담당이 KiCad 에서 내보낸 inverter-ctrl rev.C 보드의 BOM 입니다. 참조 번호, 제조사 부품 번호, 계층 시트 이름(설계 블록), 수량을 둡니다. 실제 BOM 은 64줄이고 여기 실은 줄은 판정 설명에 쓰는 10줄입니다. 지원자는 GitHub 에 공개된 KiCad 모터 컨트롤러 프로젝트(VESC 처럼 계층 시트가 나뉜 보드)에서 MPN 과 시트 이름을 넣어 같은 모양의 BOM 을 직접 내보냅니다. J2 PJ-002A 는 데이터시트 PDF 를 받아 두지 않은 부품입니다.
| ref_des | part_no | manufacturer | description | design_block | qty |
|---|---|---|---|---|---|
| U3 | TPS54331DR | Texas Instruments | 24V→5V 3A 강압 컨버터 | PWR | 1 |
| C3, C4 | GRM32ER71H106KA12L | Murata | 10µF 50V X7R 1210 입력 커패시터 | PWR | 2 |
| C12 | GRM21BR71C104KA01L | Murata | 0.1µF 16V X7R 0805 부트스트랩 커패시터 | PWR | 1 |
| Q1, Q2, Q3, Q4, Q5, Q6 | CSD18540Q5B | Texas Instruments | 60V N채널 MOSFET 3상 브리지 | MOT | 6 |
| Q7 | SI2302CDS-T1-GE3 | Vishay | N채널 MOSFET 제동 저항 스위치 | MOT | 1 |
아래 JSON Schema 를 그대로 만족하는 BOM 줄을 한 보드 몫으로 60줄 만들어 주세요. 설계 블록은 PWR·MOT·MCU·COM·CON 다섯 개에 고루 나누고, part_no 는 실제로 데이터시트를 받을 수 있는 제조사 부품 번호를 씁니다. 같은 부품을 여러 자리에 쓰면 ref_des 를 'R1, R2, R5' 처럼 묶고 qty 를 맞춥니다. 쉬운 데이터만 만들지 말고 다음을 섞으세요: 데이터시트를 받아 두지 않은 부품 3줄 안팎, manufacturer 나 description 이 비어 있는 줄 몇 개, 블록 요구 온도보다 동작 온도가 좁은 범용 부품(주문 코드 접미가 온도 등급을 가르는 MCU 등). 판정 결과는 넣지 마세요. 형식 깨뜨리기 시도로 qty 를 '2개'·'' 로 적은 줄 3건을 따로 만듭니다.
{"type":"object","properties":{"ref_des":{"type":"string","description":"KiCad 참조 번호입니다. 같은 부품을 여러 자리에 쓰면 'C3, C4' 처럼 쉼표로 묶어 한 줄에 씁니다"},"part_no":{"type":"string","description":"제조사 부품 번호(MPN)입니다. KiCad 심볼의 MPN 필드를 그대로 내보낸 값입니다"},"manufacturer":{"type":["string","null"]},"description":{"type":["string","null"],"description":"Value 필드와 부품 설명입니다"},"design_block":{"type":"string","enum":["PWR","MOT","MCU","COM","CON"],"description":"그 부품이 놓인 KiCad 계층 시트 이름입니다. 요구사항 문서의 설계 블록 이름과 같습니다"},"qty":{"type":"integer","minimum":1}},"required":["ref_des","part_no","manufacturer","description","design_block","qty"]}{"type":"object","properties":{"ref_des":{"type":"string","description":"KiCad 참조 번호입니다. 같은 부품을 여러 자리에 쓰면 'C3, C4' 처럼 쉼표로 묶어 한 줄에 씁니다"},"part_no":{"type":"string","description":"제조사 부품 번호(MPN)입니다. KiCad 심볼의 MPN 필드를 그대로 내보낸 값입니다"},"manufacturer":{"type":["string","null"]},"description":{"type":["string","null"],"description":"Value 필드와 부품 설명입니다"},"design_block":{"type":"string","enum":["PWR","MOT","MCU","COM","CON"],"description":"그 부품이 놓인 KiCad 계층 시트 이름입니다. 요구사항 문서의 설계 블록 이름과 같습니다"},"qty":{"type":"integer","minimum":1}},"required":["ref_des","part_no","manufacturer","description","design_block","qty"]}부품 데이터시트 PDF 에서 뽑은 정격 값입니다. 값마다 단위, 조건, 쪽수, 원문 문구를 남깁니다. 1주차에는 지원자가 TI·ST·Vishay·NXP·Murata·JST 가 공개한 데이터시트 PDF 를 열어 손으로 뽑은 JSONL 을 쓰고, 2주차에 파서가 같은 모양으로 냅니다. GRM32ER71H106KA12L 동작 온도는 원문의 마이너스 기호를 읽지 못해 하한이 null 이고, GRM21BR71C104KA01L 은 동작 온도 행이 없으며, STM32F103C8T6 동작 온도는 주문 코드 접미 6·7 두 버전이 같은 부품 번호로 중복해 들어왔고, B4B-XH-A 정격 전압은 원문 '250V AC, DC' 에서 단위가 'V AC' 로 남았습니다. 수치는 형식을 보이려 작성자가 적은 예시라, 지원자는 PDF 원문에서 다시 뽑아 씁니다.
| part_no | param | min | max | unit | condition | source_page | source_text |
|---|---|---|---|---|---|---|---|
| TPS54331DR | operating_temp | -40 | 150 | °C | 동작 접합 온도 T_J | 4 | Operating junction temperature, TJ -4… |
| TPS54331DR | rated_voltage | 3.5 | 28 | V | 입력 전압 VIN 권장 동작 범위 | 4 | Input voltage range, VIN 3.5 28 V |
| GRM32ER71H106KA12L | operating_temp | — | 125 | °C | 동작 온도 범위 | 1 | Operating Temperature Range to 125°C |
| GRM32ER71H106KA12L | rated_voltage | — | 50 | V | 정격 전압(직류) | 1 | Rated Voltage 50Vdc |
| GRM21BR71C104KA01L | capacitance | 0.09 | 0.11 | µF | 1kHz 1Vrms, 허용차 ±10% | 1 | Capacitance 0.1uF ±10% |
아래 JSON Schema 를 그대로 만족하는 데이터시트 정격 값을 BOM 부품 50종 몫으로 만들어 주세요. 부품마다 operating_temp 와 rated_voltage 를 기본으로 두고, 커넥터에는 rated_current 를 더합니다. source_page 와 source_text 는 실제 데이터시트 표 문구처럼 씁니다. 쉬운 데이터만 만들지 말고 다음을 섞으세요: 마이너스 기호를 못 읽어 min 이 null 인 줄, 온도 특성 코드(X7R)만 있고 operating_temp 줄이 없는 커패시터, 주문 코드 접미별 온도 등급이 같은 part_no 로 두 줄 들어온 MCU, 단위가 '°C'·'℃'·'degC' 로 섞인 줄, 'V AC'·'Vrms' 처럼 환산표에 없는 단위로 남은 줄. 판정 결과는 넣지 마세요.
{"type":"object","properties":{"part_no":{"type":"string","description":"데이터시트가 다루는 부품 번호입니다. BOM 의 part_no 와 글자 그대로 견줍니다"},"param":{"type":"string","enum":["operating_temp","rated_voltage","rated_current","capacitance"],"description":"파서가 정한 조건 이름입니다. operating_temp 는 동작 온도, rated_voltage 는 데이터시트의 정격 전압 표기(권장 동작 범위 또는 정격 전압 상한), rated_current 는 정격 전류입니다"},"min":{"type":["number","null"],"description":"정격 하한입니다. 원문에 하한이 없거나 읽지 못했으면 null 입니다"},"max":{"type":["number","null"],"description":"정격 상한입니다. 원문에 상한이 없거나 읽지 못했으면 null 입니다"},"unit":{"type":"string","description":"원문에 적힌 단위 그대로입니다(°C·℃·V·V AC·A·mA·µF 등)"},"condition":{"type":["string","null"],"description":"그 값이 성립하는 조건입니다(접합 온도·주위 온도·주문 코드 접미 등)"},"source_page":{"type":"integer","minimum":1,"description":"값을 뽑은 데이터시트 PDF 쪽수입니다"},"source_text":{"type":"string","description":"값을 뽑은 원문 문구입니다"}},"required":["part_no","param","min","max","unit","condition","source_page","source_text"]}{"type":"object","properties":{"part_no":{"type":"string","description":"데이터시트가 다루는 부품 번호입니다. BOM 의 part_no 와 글자 그대로 견줍니다"},"param":{"type":"string","enum":["operating_temp","rated_voltage","rated_current","capacitance"],"description":"파서가 정한 조건 이름입니다. operating_temp 는 동작 온도, rated_voltage 는 데이터시트의 정격 전압 표기(권장 동작 범위 또는 정격 전압 상한), rated_current 는 정격 전류입니다"},"min":{"type":["number","null"],"description":"정격 하한입니다. 원문에 하한이 없거나 읽지 못했으면 null 입니다"},"max":{"type":["number","null"],"description":"정격 상한입니다. 원문에 상한이 없거나 읽지 못했으면 null 입니다"},"unit":{"type":"string","description":"원문에 적힌 단위 그대로입니다(°C·℃·V·V AC·A·mA·µF 등)"},"condition":{"type":["string","null"],"description":"그 값이 성립하는 조건입니다(접합 온도·주위 온도·주문 코드 접미 등)"},"source_page":{"type":"integer","minimum":1,"description":"값을 뽑은 데이터시트 PDF 쪽수입니다"},"source_text":{"type":"string","description":"값을 뽑은 원문 문구입니다"}},"required":["part_no","param","min","max","unit","condition","source_page","source_text"]}고객사 요구사항 문서에서 설계 블록마다 부품 정격이 덮어야 하는 범위를 뽑은 표입니다. 요구 번호, 블록, 조건 이름, 하한·상한, 단위, 원문 문장, 문서 위치를 둡니다. 한쪽만 요구하는 조건(견뎌야 하는 최고 전압)은 하한이 null 입니다. 지원자는 공개된 보드의 사용 환경을 가정해 이 표를 직접 씁니다. 이 CLI 는 요구 범위를 새로 정하지 않습니다.
| req_id | design_block | param | min | max | unit | req_text | spec_ref |
|---|---|---|---|---|---|---|---|
| REQ-PWR-07 | PWR | operating_temp | -40 | 105 | ℃ | 전원부 부품은 주위 온도 -40~105℃ 에서 동작해야 한다. | SRS-INV-C 4.1 |
| REQ-PWR-08 | PWR | rated_voltage | — | 28 | V | 전원부 부품은 24V 입력 서지 28V 를 견뎌야 한다. | SRS-INV-C 4.2 |
| REQ-MOT-02 | MOT | operating_temp | -40 | 105 | ℃ | 모터 구동부 부품은 주위 온도 -40~105℃ 에서 동작해야 한다. | SRS-INV-C 5.1 |
| REQ-MOT-03 | MOT | rated_voltage | — | 30 | V | 모터 구동부 부품은 24V 모터 버스에 역기전력 여유를 더한 30V … | SRS-INV-C 5.2 |
| REQ-MCU-01 | MCU | operating_temp | -40 | 105 | ℃ | 제어부 부품은 주위 온도 -40~105℃ 에서 동작해야 한다. | SRS-INV-C 6.1 |
아래 JSON Schema 를 그대로 만족하는 설계 블록 요구를 다른 보드 두 장 몫으로 20줄 만들어 주세요. 블록마다 operating_temp 와 rated_voltage 를 두고, 커넥터 블록에는 rated_current 를 더합니다. 가전 실내 보드는 -20~85℃, 전장 보드는 -40~105℃ 또는 -40~125℃ 처럼 사용 환경에 맞춥니다. 쉬운 데이터만 만들지 말고 다음을 섞으세요: 요구 단위를 mA·mV 로 적은 줄, 하한 없이 상한만 둔 줄, 요구 상한이 흔한 부품 정격과 정확히 같은 값인 줄. 판정 결과는 넣지 마세요.
{"type":"object","properties":{"req_id":{"type":"string","description":"요구사항 문서의 요구 번호입니다"},"design_block":{"type":"string","enum":["PWR","MOT","MCU","COM","CON"],"description":"이 요구가 걸리는 설계 블록입니다. 그 블록의 BOM 부품 전부에 걸립니다"},"param":{"type":"string","enum":["operating_temp","rated_voltage","rated_current"]},"min":{"type":["number","null"],"description":"부품 정격이 덮어야 하는 요구 하한입니다. 하한 요구가 없으면 null 입니다"},"max":{"type":["number","null"],"description":"부품 정격이 덮어야 하는 요구 상한입니다. 상한 요구가 없으면 null 입니다"},"unit":{"type":"string"},"req_text":{"type":"string","description":"요구사항 문서의 원문 문장입니다"},"spec_ref":{"type":"string","description":"요구사항 문서 안의 위치입니다"}},"required":["req_id","design_block","param","min","max","unit","req_text","spec_ref"]}{"type":"object","properties":{"req_id":{"type":"string","description":"요구사항 문서의 요구 번호입니다"},"design_block":{"type":"string","enum":["PWR","MOT","MCU","COM","CON"],"description":"이 요구가 걸리는 설계 블록입니다. 그 블록의 BOM 부품 전부에 걸립니다"},"param":{"type":"string","enum":["operating_temp","rated_voltage","rated_current"]},"min":{"type":["number","null"],"description":"부품 정격이 덮어야 하는 요구 하한입니다. 하한 요구가 없으면 null 입니다"},"max":{"type":["number","null"],"description":"부품 정격이 덮어야 하는 요구 상한입니다. 상한 요구가 없으면 null 입니다"},"unit":{"type":"string"},"req_text":{"type":"string","description":"요구사항 문서의 원문 문장입니다"},"spec_ref":{"type":"string","description":"요구사항 문서 안의 위치입니다"}},"required":["req_id","design_block","param","min","max","unit","req_text","spec_ref"]}데이터시트와 요구사항 문서의 단위를 기준 단위(℃·V·A·W·Ω)로 옮기는 단위 환산표입니다. 기준 단위 값은 원래 값 × factor + offset 입니다. 이 표에 없는 단위('V AC'·'%' 등)는 환산하지 않고 그대로 걸어 사람이 보게 합니다. SI 접두어와 온도 표기 별칭이라 지원자가 공개 규격만 보고 씁니다.
| unit_from | unit_to | factor | offset |
|---|---|---|---|
| °C | ℃ | 1 | 0 |
| degC | ℃ | 1 | 0 |
| K | ℃ | 1 | -273.15 |
| mV | V | 0.001 | 0 |
| kV | V | 1,000 | 0 |
아래 JSON Schema 를 그대로 만족하는 단위 환산 줄을 10줄 더 만들어 주세요. nV·MV·kW·MΩ·mΩ·°F 처럼 데이터시트에 실제로 나오는 표기를 고르고, factor 와 offset 은 정확한 값으로 씁니다. 교류·직류 구분(V AC·V DC)이나 퍼센트처럼 기준 단위로 옮길 수 없는 표기는 넣지 마세요.
{"type":"object","properties":{"unit_from":{"type":"string","description":"원문에 나오는 단위 표기입니다"},"unit_to":{"type":"string","enum":["℃","V","A","W","Ω"],"description":"견줄 때 쓰는 기준 단위입니다"},"factor":{"type":"number","description":"기준 단위 값 = 원래 값 × factor + offset 입니다"},"offset":{"type":"number"}},"required":["unit_from","unit_to","factor","offset"]}{"type":"object","properties":{"unit_from":{"type":"string","description":"원문에 나오는 단위 표기입니다"},"unit_to":{"type":"string","enum":["℃","V","A","W","Ω"],"description":"견줄 때 쓰는 기준 단위입니다"},"factor":{"type":"number","description":"기준 단위 값 = 원래 값 × factor + offset 입니다"},"offset":{"type":"number"}},"required":["unit_from","unit_to","factor","offset"]}| Python | BOM CSV·JSONL 읽기, 단위 환산, 같은 조건 여러 줄의 좁은 쪽 고르기, 요구 범위 덮기 판정, CLI 와 마크다운 검토 목록을 맡습니다. |
| OCR | 2주차에 스캔본 데이터시트 쪽을 글자로 바꾸고, 마이너스 기호(U+2212)와 하이픈이 섞여 값이 빠지는 사례를 평가셋에 넣습니다. |
| VLM | 2주차에 클로드 비전 모델이 데이터시트 표 쪽 이미지를 읽어 param·min·max·unit·condition·source_page 를 JSONL 로 냅니다. 판정은 하지 않습니다. |
| Layout 분석 | pdfplumber 로 표 셀 경계와 머리글을 잡아 'Operating junction temperature' 줄의 최소·최대 칸을 갈라 읽습니다. |
| Ontology·Knowledge Graph | 3주차에 설계 블록·요구·부품·데이터시트 쪽 네 종류 노드와 '블록에 놓임'·'요구가 걸림'·'정격 근거' 간선으로 판정을 그래프에 적재합니다. |
| Retrieval·Graph RAG | 3주차에 그래프 위에서 속성 필터와 수치 범위 조건으로 걸린 부품을 찾고, 의미 검색은 조건 이름이 다른 원문 문구를 찾는 데만 씁니다. |
| Docker | 2주차에 파싱 단계와 CLI 를 이미지로 묶어 고객사 노트북과 클라우드에서 같은 결과가 나오게 합니다. |
| Kubernetes·AWS/EKS | 2주차부터 데이터시트 PDF 묶음 파싱을 AWS EKS 의 Kubernetes Job 으로 돌리고 결과 JSONL 을 S3 에 남깁니다. |
✗ fail → 경계 줄이 걸리면 비교 부등호와 환산 순서부터 고치고, STM32 가 충족으로 나오거나 C12 가 조건 없음으로 나오면 같은 조건 여러 줄을 고르는 규칙과 판정 차례를 다시 씁니다.
✓ pass → 2주차 PDF 추출 두 가지와 평가 러너, EKS Job 으로 넘어갑니다.
✗ fail → 비전 추출로 바꾼 뒤 판정이 바뀐 부품은 그 쪽 이미지를 평가셋 실패 사례로 옮기고 후처리 규칙을 더한 뒤, 그래프 적재는 미룹니다.
✓ pass → 3주차 판정 그래프와 리비전 견줌으로 넘어갑니다.
BOM 부품별 요구사항 충족 판정입니다. BOM 한 줄마다 한 줄을 내고, 그 부품이 놓인 설계 블록의 요구마다 데이터시트 정격을 기준 단위로 옮겨 견준 checks 와 쪽수를 싣습니다. 터미널 출력과 회로 설계 담당에게 보내는 마크다운 검토 목록이 같은 줄을 읽습니다.
{"type":"object","properties":{"board":{"type":"string"},"ref_des":{"type":"string"},"part_no":{"type":"string"},"design_block":{"type":"string"},"qty":{"type":"integer","minimum":1},"verdict":{"type":"string","enum":["요구사항 충족","정격 범위가 요구에 못 미침","데이터시트에 그 조건이 없음","데이터시트가 없는 부품","단위를 환산할 수 없음"],"description":"걸린 판정이 여럿이면 데이터시트가 없는 부품, 정격 범위가 요구에 못 미침, 단위를 환산할 수 없음, 데이터시트에 그 조건이 없음 순으로 앞선 하나입니다"},"also_found":{"type":"array","items":{"type":"string","enum":["정격 범위가 요구에 못 미침","데이터시트에 그 조건이 없음","데이터시트가 없는 부품","단위를 환산할 수 없음"]}},"checks":{"type":"array","items":{"type":"object","properties":{"req_id":{"type":"string"},"param":{"type":"string"},"req_min":{"type":["number","null"]},"req_max":{"type":["number","null"]},"req_unit":{"type":"string"},"rated_min":{"type":["number","null"],"description":"같은 part_no·param 의 datasheet_params 행을 기준 단위로 옮긴 뒤 min 가운데 가장 큰 값입니다. 행이 없거나 모두 null 이면 null 입니다"},"rated_max":{"type":["number","null"],"description":"같은 행들의 max 가운데 가장 작은 값입니다. 행이 여럿이면 좁은 쪽을 씁니다"},"rated_unit":{"type":["string","null"],"description":"datasheet_params.unit 원문입니다"},"base_unit":{"type":["string","null"],"description":"견줄 때 쓴 기준 단위입니다. 환산하지 못했으면 null 입니다"},"req_min_base":{"type":["number","null"],"description":"req_min × factor + offset 입니다(unit_conversions 의 req_unit 행, 기준 단위면 그대로)"},"req_max_base":{"type":["number","null"],"description":"req_max × factor + offset 입니다"},"rated_min_base":{"type":["number","null"],"description":"rated_min × factor + offset 입니다(unit_conversions 의 rated_unit 행)"},"rated_max_base":{"type":["number","null"],"description":"rated_max × factor + offset 입니다"},"rows_used":{"type":"integer","minimum":0,"description":"견주는 데 쓴 datasheet_params 행 수입니다"},"source_pages":{"type":"array","items":{"type":"integer"}},"result":{"type":"string","enum":["요구 범위를 덮음","정격이 못 미침","조건 없음","환산 불가"]}},"required":["req_id","param","req_min","req_max","req_unit","rated_min","rated_max","rated_unit","base_unit","req_min_base","req_max_base","rated_min_base","rated_max_base","rows_used","source_pages","result"]},"description":"그 부품의 design_block 에 걸린 requirement_params 마다 한 줄입니다. 데이터시트가 없는 부품이면 빈 배열입니다"},"evidence":{"type":"array","items":{"type":"object","properties":{"table":{"type":"string","enum":["bom_lines","datasheet_params","requirement_params","unit_conversions"]},"field":{"type":"string"},"agg":{"type":["string","null"],"enum":["count","sum","avg","min","max",null]},"value":{}},"required":["table","field","value"]}},"summary":{"type":"string"},"review_note":{"type":["string","null"],"description":"클로드가 checks 를 받아 쓴, 고객사 회로 설계 담당에게 넘길 검토 메모입니다. 요구사항 충족이면 null 입니다"}},"required":["board","ref_des","part_no","design_block","qty","verdict","also_found","checks","evidence","summary","review_note"]}[
{
"board": "inverter-ctrl rev.C",
"ref_des": "U3",
"part_no": "TPS54331DR",
"design_block": "PWR",
"qty": 1,
"verdict": "요구사항 충족",
"also_found": [],
"checks": [
{
"req_id": "REQ-PWR-07",
"param": "operating_temp",
"req_min": -40,
"req_max": 105,
"req_unit": "℃",
"rated_min": -40,
"rated_max": 150,
"rated_unit": "°C",
"base_unit": "℃",
"req_min_base": -40,
"req_max_base": 105,
"rated_min_base": -40,
"rated_max_base": 150,
"rows_used": 1,
"source_pages": [
4
],
"result": "요구 범위를 덮음"
},
{
"req_id": "REQ-PWR-08",
"param": "rated_voltage",
"req_min": null,
"req_max": 28,
"req_unit": "V",
"rated_min": 3.5,
"rated_max": 28,
"rated_unit": "V",
"base_unit": "V",
"req_min_base": null,
"req_max_base": 28,
"rated_min_base": 3.5,
"rated_max_base": 28,
"rows_used": 1,
"source_pages": [
4
],
"result": "요구 범위를 덮음"
}
],
"evidence": [
{
"table": "requirement_params",
"field": "max",
"agg": null,
"value": 28
},
{
"table": "datasheet_params",
"field": "max",
"agg": null,
"value": 28
},
{
"table": "datasheet_params",
"field": "part_no",
"agg": null,
"value": "TPS54331DR"
}
],
"summary": "입력 전압 상한 28V 가 요구 28V 와 같아 덮은 것으로 봅니다. 동작 접합 온도 -40~150°C 도 요구 -40~105℃ 를 덮습니다.",
"review_note": null
},
{
"board": "inverter-ctrl rev.C",
"ref_des": "Q7",
"part_no": "SI2302CDS-T1-GE3",
"design_block": "MOT",
"qty": 1,
"verdict": "정격 범위가 요구에 못 미침",
"also_found": [],
"checks": [
{
"req_id": "REQ-MOT-02",
"param": "operating_temp",
"req_min": -40,
"req_max": 105,
"req_unit": "℃",
"rated_min": -55,
"rated_max": 150,
"rated_unit": "°C",
"base_unit": "℃",
"req_min_base": -40,
"req_max_base": 105,
"rated_min_base": -55,
"rated_max_base": 150,
"rows_used": 1,
"source_pages": [
1
],
"result": "요구 범위를 덮음"
},
{
"req_id": "REQ-MOT-03",
"param": "rated_voltage",
"req_min": null,
"req_max": 30,
"req_unit": "V",
"rated_min": null,
"rated_max": 20,
"rated_unit": "V",
"base_unit": "V",
"req_min_base": null,
"req_max_base": 30,
"rated_min_base": null,
"rated_max_base": 20,
"rows_used": 1,
"source_pages": [
1
],
"result": "정격이 못 미침"
}
],
"evidence": [
{
"table": "datasheet_params",
"field": "max",
"agg": null,
"value": 20
},
{
"table": "requirement_params",
"field": "max",
"agg": null,
"value": 30
},
{
"table": "requirement_params",
"field": "req_id",
"agg": null,
"value": "REQ-MOT-03"
}
],
"summary": "데이터시트 p.1 표 1 의 드레인-소스 전압 최대 20V 가 모터 구동부 요구 30V 에 못 미칩니다.",
"review_note": "Q7 제동 저항 스위치 SI2302CDS 는 V_DS 최대 20V 라 REQ-MOT-03 의 30V 를 견디지 못합니다. 같은 자리에 V_DS 30V 이상인 MOSFET 을 쓸지 회로 설계 담당이 정해 주세요."
},
{
"board": "inverter-ctrl rev.C",
"ref_des": "U1",
"part_no": "STM32F103C8T6",
"design_block": "MCU",
"qty": 1,
"verdict": "정격 범위가 요구에 못 미침",
"also_found": [],
"checks": [
{
"req_id": "REQ-MCU-01",
"param": "operating_temp",
"req_min": -40,
"req_max": 105,
"req_unit": "℃",
"rated_min": -40,
"rated_max": 85,
"rated_unit": "°C",
"base_unit": "℃",
"req_min_base": -40,
"req_max_base": 105,
"rated_min_base": -40,
"rated_max_base": 85,
"rows_used": 2,
"source_pages": [
41
],
"result": "정격이 못 미침"
},
{
"req_id": "REQ-MCU-02",
"param": "rated_voltage",
"req_min": null,
"req_max": 3.6,
"req_unit": "V",
"rated_min": 2,
"rated_max": 3.6,
"rated_unit": "V",
"base_unit": "V",
"req_min_base": null,
"req_max_base": 3.6,
"rated_min_base": 2,
"rated_max_base": 3.6,
"rows_used": 1,
"source_pages": [
41
],
"result": "요구 범위를 덮음"
}
],
"evidence": [
{
"table": "datasheet_params",
"field": "max",
"agg": null,
"value": 85
},
{
"table": "datasheet_params",
"field": "condition",
"agg": null,
"value": "주위 온도 T_A, 주문 코드 접미 6"
},
{
"table": "datasheet_params",
"field": "param",
"agg": "count",
"value": 2
},
{
"table": "requirement_params",
"field": "max",
"agg": null,
"value": 105
}
],
"summary": "같은 부품 번호에 동작 온도가 두 줄(접미 6: -40~85°C, 접미 7: -40~105°C) 들어와 좁은 쪽 -40~85°C 로 견줬고, 요구 -40~105℃ 에 못 미칩니다.",
"review_note": "U1 부품 번호 끝자리 6 은 주위 온도 85°C 까지인 버전입니다. 요구 105℃ 를 맞추려면 끝자리 7 버전으로 주문해야 하는지 BOM 의 MPN 부터 회로 설계 담당과 맞춰 주세요(데이터시트 p.41)."
},
{
"board": "inverter-ctrl rev.C",
"ref_des": "C3, C4",
"part_no": "GRM32ER71H106KA12L",
"design_block": "PWR",
"qty": 2,
"verdict": "데이터시트에 그 조건이 없음",
"also_found": [],
"checks": [
{
"req_id": "REQ-PWR-07",
"param": "operating_temp",
"req_min": -40,
"req_max": 105,
"req_unit": "℃",
"rated_min": null,
"rated_max": 125,
"rated_unit": "°C",
"base_unit": "℃",
"req_min_base": -40,
"req_max_base": 105,
"rated_min_base": null,
"rated_max_base": 125,
"rows_used": 1,
"source_pages": [
1
],
"result": "조건 없음"
},
{
"req_id": "REQ-PWR-08",
"param": "rated_voltage",
"req_min": null,
"req_max": 28,
"req_unit": "V",
"rated_min": null,
"rated_max": 50,
"rated_unit": "V",
"base_unit": "V",
"req_min_base": null,
"req_max_base": 28,
"rated_min_base": null,
"rated_max_base": 50,
"rows_used": 1,
"source_pages": [
1
],
"result": "요구 범위를 덮음"
}
],
"evidence": [
{
"table": "datasheet_params",
"field": "min",
"agg": null,
"value": null
},
{
"table": "datasheet_params",
"field": "max",
"agg": null,
"value": 125
},
{
"table": "requirement_params",
"field": "min",
"agg": null,
"value": -40
},
{
"table": "datasheet_params",
"field": "part_no",
"agg": null,
"value": "GRM32ER71H106KA12L"
}
],
"summary": "동작 온도 줄은 있지만 하한이 비어 있어 요구 하한 -40℃ 를 덮는지 정하지 않았습니다. 정격 전압 50V 는 요구 28V 를 덮습니다.",
"review_note": "C3·C4 데이터시트 p.1 의 동작 온도 하한이 원문에서 읽히지 않았습니다. PDF 를 열어 하한 값을 확인한 뒤 다시 돌리겠습니다."
},
{
"board": "inverter-ctrl rev.C",
"ref_des": "C12",
"part_no": "GRM21BR71C104KA01L",
"design_block": "PWR",
"qty": 1,
"verdict": "정격 범위가 요구에 못 미침",
"also_found": [
"데이터시트에 그 조건이 없음"
],
"checks": [
{
"req_id": "REQ-PWR-07",
"param": "operating_temp",
"req_min": -40,
"req_max": 105,
"req_unit": "℃",
"rated_min": null,
"rated_max": null,
"rated_unit": null,
"base_unit": null,
"req_min_base": -40,
"req_max_base": 105,
"rated_min_base": null,
"rated_max_base": null,
"rows_used": 0,
"source_pages": [],
"result": "조건 없음"
},
{
"req_id": "REQ-PWR-08",
"param": "rated_voltage",
"req_min": null,
"req_max": 28,
"req_unit": "V",
"rated_min": null,
"rated_max": 16,
"rated_unit": "V",
"base_unit": "V",
"req_min_base": null,
"req_max_base": 28,
"rated_min_base": null,
"rated_max_base": 16,
"rows_used": 1,
"source_pages": [
1
],
"result": "정격이 못 미침"
}
],
"evidence": [
{
"table": "datasheet_params",
"field": "max",
"agg": null,
"value": 16
},
{
"table": "requirement_params",
"field": "max",
"agg": null,
"value": 28
},
{
"table": "datasheet_params",
"field": "param",
"agg": "count",
"value": 2
},
{
"table": "datasheet_params",
"field": "part_no",
"agg": null,
"value": "GRM21BR71C104KA01L"
}
],
"summary": "정격 전압 16V 가 전원부 요구 28V 에 못 미치고, 동작 온도는 뽑힌 줄이 없어 견주지 않았습니다. 두 결과가 함께 걸려 판정 차례대로 정격 범위가 요구에 못 미침을 앞에 두고, 데이터시트에 그 조건이 없음은 also_found 에 남겼습니다.",
"review_note": "C12 부트스트랩 커패시터는 16V 품번이라 24V 입력 서지 28V(REQ-PWR-08)를 견디지 못합니다. 같은 0805 크기의 50V 품번으로 바꿀지 정해 주시고, 동작 온도는 데이터시트에 온도 특성 코드 X7R 만 보여 원문 표에서 함께 확인해 주세요."
},
{
"board": "inverter-ctrl rev.C",
"ref_des": "J1",
"part_no": "B4B-XH-A",
"design_block": "CON",
"qty": 1,
"verdict": "단위를 환산할 수 없음",
"also_found": [],
"checks": [
{
"req_id": "REQ-CON-01",
"param": "operating_temp",
"req_min": -20,
"req_max": 85,
"req_unit": "℃",
"rated_min": -25,
"rated_max": 85,
"rated_unit": "℃",
"base_unit": "℃",
"req_min_base": -20,
"req_max_base": 85,
"rated_min_base": -25,
"rated_max_base": 85,
"rows_used": 1,
"source_pages": [
1
],
"result": "요구 범위를 덮음"
},
{
"req_id": "REQ-CON-02",
"param": "rated_current",
"req_min": null,
"req_max": 1500,
"req_unit": "mA",
"rated_min": null,
"rated_max": 3,
"rated_unit": "A",
"base_unit": "A",
"req_min_base": null,
"req_max_base": 1.5,
"rated_min_base": null,
"rated_max_base": 3,
"rows_used": 1,
"source_pages": [
1
],
"result": "요구 범위를 덮음"
},
{
"req_id": "REQ-CON-03",
"param": "rated_voltage",
"req_min": null,
"req_max": 28,
"req_unit": "V",
"rated_min": null,
"rated_max": 250,
"rated_unit": "V AC",
"base_unit": null,
"req_min_base": null,
"req_max_base": null,
"rated_min_base": null,
"rated_max_base": null,
"rows_used": 1,
"source_pages": [
1
],
"result": "환산 불가"
}
],
"evidence": [
{
"table": "datasheet_params",
"field": "unit",
"agg": null,
"value": "V AC"
},
{
"table": "requirement_params",
"field": "unit",
"agg": null,
"value": "V"
},
{
"table": "datasheet_params",
"field": "source_text",
"agg": null,
"value": "Voltage rating: 250V AC, DC"
}
],
"summary": "정격 전압 단위가 'V AC' 로 남아 환산표로 요구 단위 'V' 에 옮기지 못했습니다. 동작 온도 상한 85℃ 는 요구와 같아 덮은 것으로 보고, 정격 전류 3A 도 요구 1500mA 를 덮습니다.",
"review_note": "J1 정격 전압은 원문에 '250V AC, DC' 로 적혀 있어 직류에도 같은 정격으로 읽힙니다. 직류 28V 요구에 그대로 써도 되는지 회로 설계 담당이 확인해 주세요."
},
{
"board": "inverter-ctrl rev.C",
"ref_des": "J2",
"part_no": "PJ-002A",
"design_block": "CON",
"qty": 1,
"verdict": "데이터시트가 없는 부품",
"also_found": [],
"checks": [],
"evidence": [
{
"table": "bom_lines",
"field": "part_no",
"agg": null,
"value": "PJ-002A"
},
{
"table": "datasheet_params",
"field": "part_no",
"agg": "count",
"value": 0
}
],
"summary": "BOM 에 있는 PJ-002A 의 데이터시트 값이 한 줄도 없어 CON 블록 요구 셋(REQ-CON-01~03)을 견주지 않았습니다.",
"review_note": "J2 DC 전원 잭 PJ-002A 는 데이터시트 PDF 가 파싱 대상에 없습니다. CUI Devices 데이터시트를 받아 넣은 뒤 다시 돌리겠습니다."
},
{
"board": "inverter-ctrl rev.C",
"ref_des": "J3",
"part_no": "B2B-PH-K-S",
"design_block": "CON",
"qty": 1,
"verdict": "요구사항 충족",
"also_found": [],
"checks": [
{
"req_id": "REQ-CON-01",
"param": "operating_temp",
"req_min": -20,
"req_max": 85,
"req_unit": "℃",
"rated_min": -25,
"rated_max": 85,
"rated_unit": "℃",
"base_unit": "℃",
"req_min_base": -20,
"req_max_base": 85,
"rated_min_base": -25,
"rated_max_base": 85,
"rows_used": 1,
"source_pages": [
1
],
"result": "요구 범위를 덮음"
},
{
"req_id": "REQ-CON-02",
"param": "rated_current",
"req_min": null,
"req_max": 1500,
"req_unit": "mA",
"rated_min": null,
"rated_max": 2,
"rated_unit": "A",
"base_unit": "A",
"req_min_base": null,
"req_max_base": 1.5,
"rated_min_base": null,
"rated_max_base": 2,
"rows_used": 1,
"source_pages": [
1
],
"result": "요구 범위를 덮음"
},
{
"req_id": "REQ-CON-03",
"param": "rated_voltage",
"req_min": null,
"req_max": 28,
"req_unit": "V",
"rated_min": null,
"rated_max": 100,
"rated_unit": "V",
"base_unit": "V",
"req_min_base": null,
"req_max_base": 28,
"rated_min_base": null,
"rated_max_base": 100,
"rows_used": 1,
"source_pages": [
1
],
"result": "요구 범위를 덮음"
}
],
"evidence": [
{
"table": "requirement_params",
"field": "max",
"agg": null,
"value": 1500
},
{
"table": "unit_conversions",
"field": "factor",
"agg": null,
"value": 0.001
},
{
"table": "datasheet_params",
"field": "max",
"agg": null,
"value": 2
},
{
"table": "datasheet_params",
"field": "part_no",
"agg": null,
"value": "B2B-PH-K-S"
}
],
"summary": "요구 1500mA 를 1.5A 로 옮겨 정격 전류 2A 와 견줬고, 동작 온도와 정격 전압도 요구를 덮습니다.",
"review_note": null
}
][자동 검증 · 코드가 판정합니다] 1. verdict 가 요구사항 충족·정격 범위가 요구에 못 미침·데이터시트에 그 조건이 없음·데이터시트가 없는 부품·단위를 환산할 수 없음 다섯 값 중 하나인지, checks[].result 가 요구 범위를 덮음·정격이 못 미침·조건 없음·환산 불가 중 하나인지 확인합니다. 2. 필수 필드 board·ref_des·part_no·design_block·qty·verdict·also_found·checks·evidence·summary·review_note 가 모두 존재하는지 확인합니다. 3. bom_lines.part_no 가 datasheet_params.part_no 에 한 줄도 없으면 verdict 는 데이터시트가 없는 부품이고 checks 는 빈 배열입니다. PJ-002A 가 이 경우입니다. 4. checks 의 줄 수가 그 부품의 design_block 과 같은 requirement_params 줄 수와 같은지 봅니다. CON 블록 부품은 3줄입니다. 5. 기준 단위 값을 다시 계산합니다. 값 × factor + offset 이고, 단위가 unit_conversions.unit_to 에 있는 기준 단위면 그대로 씁니다. REQ-CON-02 의 1500mA 는 1500 × 0.001 = 1.5A 이고, °C 는 factor 1·offset 0 으로 ℃ 가 됩니다. 6. 요구 단위와 정격 단위가 같은 기준 단위로 옮겨지지 않으면 result 는 환산 불가이고 base_unit 과 네 기준 단위 값은 null 입니다. B4B-XH-A 의 'V AC' 는 환산표에 없어 이 경우입니다. 7. 같은 part_no·param 의 datasheet_params 가 여러 줄이면 rated_min 은 min 가운데 가장 큰 값, rated_max 는 max 가운데 가장 작은 값인지 다시 계산합니다. STM32F103C8T6 동작 온도는 -40~85 와 -40~105 두 줄이라 -40~85 이고 rows_used 는 2 입니다. 8. requirement_params.param 이 그 part_no 의 datasheet_params.param 에 없거나, 있어도 요구가 걸린 쪽(req_min 이 있으면 rated_min, req_max 가 있으면 rated_max) 값이 null 이면 result 는 조건 없음입니다. GRM21BR71C104KA01L 은 operating_temp 줄이 없고, GRM32ER71H106KA12L 은 하한이 null 입니다. 9. 6·8에 걸리지 않고 req_min_base 가 rated_min_base 보다 작거나 req_max_base 가 rated_max_base 보다 크면 result 는 정격이 못 미침입니다. 같은 값은 덮은 것으로 봅니다. TPS54331DR 의 28V 와 B2B-PH-K-S 의 85℃ 가 이 경계입니다. 10. verdict 는 checks 에 정격이 못 미침이 있으면 정격 범위가 요구에 못 미침, 없고 환산 불가가 있으면 단위를 환산할 수 없음, 없고 조건 없음이 있으면 데이터시트에 그 조건이 없음, 모두 요구 범위를 덮음이면 요구사항 충족입니다. verdict 로 고르지 않은 나머지 결과는 also_found 에 들어갑니다. GRM21BR71C104KA01L(C12)은 정격 전압 못 미침과 동작 온도 조건 없음이 함께 걸려 verdict 는 정격 범위가 요구에 못 미침이고 also_found 는 데이터시트에 그 조건이 없음입니다. 11. verdict 가 요구사항 충족이면 review_note 는 null 입니다. 12. evidence 의 table·field 가 bom_lines·datasheet_params·requirement_params·unit_conversions 에 실재하는 컬럼인지 대조합니다. 13. agg 가 없는 evidence 의 value 가 그 컬럼에 수록된 행의 값 원문과 같은지 확인합니다. agg 가 count 인 값은 그 part_no 의 datasheet_params 줄 수입니다. 14. summary 와 review_note 가 존댓말로 끝나는지 확인합니다. [수동 검증 · 사람이 봅니다] 1. 환산 불가로 걸린 'V AC' 정격을 직류 요구에 그대로 써도 되는지는 원문 source_text 를 보고 고객사 회로 설계 담당이 정합니다. 2. 조건 없음으로 걸린 부품은 FDE 가 데이터시트 PDF 의 source_page 를 열어 값을 직접 확인하고, 파서가 놓친 원인(마이너스 기호, 온도 특성 코드만 있는 표)을 평가셋 실패 사례로 옮깁니다. 3. 요구 범위는 고객사 요구사항 문서가 정하고 이 CLI 는 그 값을 바꾸지 않습니다. [평가 러너 · 2주차] 1. 작성자가 손으로 판정을 단 BOM 줄 60개에서 CLI 판정과 일치하는 수를 셉니다. 2. 데이터시트 30종에서 손으로 뽑은 정격 값과 파서가 뽑은 값을 part_no·param·쪽수로 맞대어, 파서를 바꿀 때마다 값이 맞은 줄 수의 전후를 비교합니다. [확정 카드 판정식과 다른 점 · 오너 확인 항목] 1. 데이터시트에 그 조건이 없음: 카드 판정식은 'requirement_params.param 을 그 part_no 의 datasheet_params.param 에서 못 찾으면' 이고, 이 편은 줄은 있지만 요구가 걸린 쪽 값이 null 인 경우도 여기에 넣습니다. 카드 글자대로면 하한이 null 인 GRM32ER71H106KA12L(C3·C4)은 요구 -40℃ 를 다 덮지 못해 정격 범위가 요구에 못 미침이 됩니다. 이유는 그 null 이 부품 정격이 아니라 파서가 마이너스 기호를 읽지 못한 흔적이라, 못 미침으로 보내면 회로 설계 담당이 멀쩡한 부품을 바꾸러 가기 때문입니다. [도메인 근거 · 웹 조사] 1. 공고는 회사 사업을 'SECA의 Core Product' 한 줄로만 밝힙니다. 고객이 하드웨어를 설계하는 제조사이고 세카가 요구사항·데이터시트·회로도·BOM 을 연결해 설계 정합성을 검증한다는 사실은 머니투데이 2026-08-19 보도(https://www.mt.co.kr/future/2026/08/19/2026081908314619012)와 그룹바이 회사 소개(https://groupby.kr/startups/2215)에서 가져왔습니다.
근거: 추출한 값마다 단위, 조건, 원문 위치를 함께 남겨 이후 검색과 검증에서 근거로 쓸 수 있게 합니다.