포인랩
경력근거: 고객의 기존 시스템과 데이터를 연동하고, 솔루션을 실제 업무 환경에 적용합니다.
포인랩은 경남 창원의 제조 AI 회사로, 제조 기업의 생산·품질·설비·안전 현장에 맞춰 AI 솔루션을 구축하고 문제 정의부터 현장 적용과 운영까지 맡아요. 앞에 내세우는 솔루션 가운데 4I-Quality 는 협동로봇과 비전 AI 를 묶어 생산 라인에서 미세 결함을 실시간으로 잡는 품질 검사 자동화이고, 회사가 밝힌 적용 현장에는 자동차 부품 생산과 CNC 가공이 있어요.
공고는 FDE 의 주요업무로 '고객의 기존 시스템과 데이터를 연동하고, 솔루션을 실제 업무 환경에 적용합니다'와 '배포 이후의 기술적 문제를 해결하고, 안정성·사용성·운영 성과를 개선합니다'를 꼽아요. 포인랩은 비전 AI 품질 검사인 4I-Quality 와 함께, MES·ERP 처럼 따로 돌던 시스템과 공정·설비·품질 데이터를 묶는 플랫폼 AXIN 을 내세워요. 생산 실적은 MES 에, 검사 결과와 검사기 정지 기록은 검사 시스템에 따로 남으면, 검사기가 멈춘 동안에도 라인이 돌았거나 불량 판정을 받은 부품을 다시 찍었을 때 그 부품이 어느 로트에 들어갔는지는 두 기록을 부품마다 맞춰 보기 전에는 알 수 없어요.
공고는 고객의 기존 시스템과 데이터를 연동하고 솔루션을 실제 업무 환경에 적용하는 일을 주요업무로 꼽아요. 우대사항에도 기업 내부 시스템이나 현장 데이터를 연동해 본 경험을 적었어요.
공고는 FDE 를 검증한 솔루션을 고객의 시스템과 업무 흐름에 연결하고 배포 이후의 예외와 운영 문제까지 해결하는 엔지니어로 소개해요. 주요업무에도 배포 이후의 기술적 문제를 해결하고 안정성·사용성·운영 성과를 개선하는 일을 적었어요.
공고는 이 자리에서 현장마다 다른 데이터와 시스템, 운영 조건을 이해하고 해결 방안을 설계하는 경험을 쌓는다고 적어요. 우대사항으로는 제조·산업 현장의 업무 흐름이나 데이터를 다뤄 본 경험을 꼽았어요.
품질 담당자가 로트를 다음 공정이나 고객사로 내보내기 전에 여는 관리자 페이지예요. 라인에서 생산을 마친 로트마다 모든 부품이 AI 검사를 제대로 거쳤는지 알려 주고, 다시 볼 부품이 있으면 검사기가 멈춘 사이 만들어 검사 기록이 없는 부품인지, 정지 기록 없이 검사를 건너뛴 부품인지, 불량 판정 뒤 다시 찍어 통과한 부품인지와 그 부품 번호를 보여 줘요. 생산 실적과 검사 기록을 담을 DB 설계와 기술·구조는 지원자가 정해요.
AI 비전 검사를 붙인 자동차 부품 가공 라인의 품질 담당자예요. 로트를 내보내기 전에 모든 부품이 AI 검사를 거쳤는지 봐야 하는데, 생산 실적은 MES 에, 검사 결과와 검사기 정지 기록은 검사 시스템에 따로 쌓이면 로트마다 부품 번호로 맞춰 보기 어려워요.
MES 가 부품 하나마다 올린 생산 실적이에요. 한 행이 부품 한 개이고, 부품에 새긴 번호 serial_no 가 키예요. lot_id 는 그 부품이 들어간 생산 로트로, 이 데이터에서 한 로트는 한 라인에서 이어서 만든 부품 20개이고 한 부품은 한 로트에만 속해요. line_id 는 부품을 만든 라인(L1·L2)이고, part_name 은 그 라인이 만드는 품명(L1 샤프트, L2 플랜지)이에요. produced_at 은 MES 시계로 찍은, 가공을 마친 부품을 그 라인의 AI 검사기로 넘긴 시각이에요. 이 데이터에서 MES 와 검사 시스템의 시계는 같은 기준으로 맞춰져 있어서 ai_inspections·inspection_stops 의 시각과 바로 견줄 수 있어요. 검사기가 멈춘 동안 만든 부품, 정지 기록이 없는 시간에 검사 기록 없이 지나간 부품, 한 정지가 두 로트에 걸쳐 앞 로트 끝과 뒤 로트 앞쪽에서 만든 부품이 들어 있어요. 큰 데이터는 2026년 8월 3일부터 10월 27일까지(일요일 제외) 두 라인이 만든 부품 전부이고, 시작용은 그 마지막 날 두 라인의 첫 로트 세 개씩, 부품 120개를 같은 ID·같은 값으로 잘라 낸 것이에요.
전체 120행 가운데 앞 5행이에요.
| serial_no | lot_id | line_id | part_name | produced_at |
|---|---|---|---|---|
| SH-0148341 | L1-1027-01 | L1 | 샤프트 | 2026-10-27T06:00:00+09:00 |
| FL-0140861 | L2-1027-01 | L2 | 플랜지 | 2026-10-27T06:00:17+09:00 |
| SH-0148342 | L1-1027-01 | L1 | 샤프트 | 2026-10-27T06:01:21+09:00 |
| FL-0140862 | L2-1027-01 | L2 | 플랜지 | 2026-10-27T06:01:48+09:00 |
| SH-0148343 | L1-1027-01 | L1 | 샤프트 | 2026-10-27T06:02:39+09:00 |
120행 전부를 JSON 파일 하나로 받을 수 있어요.
같은 형식으로 만든 90,420행이에요. 위 데이터가 이 안에 그대로 들어 있어요(한 줄에 한 행, gzip 압축).
미리보기와 내려받는 데이터 모두 이 형식(JSON Schema)을 따라요.
{
"type": "object",
"description": "MES 생산 실적 한 건(부품 한 개). 키는 serial_no.",
"additionalProperties": false,
"required": [
"serial_no",
"lot_id",
"line_id",
"part_name",
"produced_at"
],
"properties": {
"serial_no": {
"type": "string",
"pattern": "^(SH|FL)-[0-9]{7}$",
"description": "부품에 새긴 번호. 이 표의 키예요. L1 부품은 SH-, L2 부품은 FL- 로 시작해요."
},
"lot_id": {
"type": "string",
"pattern": "^L[12]-[0-9]{4}-[0-9]{2}$",
"description": "부품이 들어간 생산 로트. 라인·월일·그날 순번으로 적어요(예: L1-1027-02). 한 로트는 한 라인에서 이어서 만든 부품 20개이고, 한 부품은 한 로트에만 속해요."
},
"line_id": {
"type": "string",
"enum": [
"L1",
"L2"
],
"description": "부품을 만든 라인. inspection_stops.line_id 와 같은 코드예요."
},
"part_name": {
"type": "string",
"enum": [
"샤프트",
"플랜지"
],
"description": "품명. L1 은 샤프트, L2 는 플랜지만 만들어요."
},
"produced_at": {
"type": "string",
"format": "date-time",
"description": "MES 시계로 찍은, 가공을 마친 부품을 그 라인의 AI 검사기로 넘긴 시각. 한국 시간(+09:00) ISO 8601, 초 단위. 검사 시스템 시계와 같은 기준이라 inspected_at·stopped_at·resumed_at 과 바로 견줄 수 있어요."
}
}
}라인의 AI 검사기가 부품을 찍어 판정할 때마다 검사 시스템에 남은 기록이에요. 한 행이 한 번 찍어 판정한 기록이고 inspection_id 가 키예요. serial_no 는 찍은 부품으로 produced_parts.serial_no 를 가리켜요. 한 부품에 기록이 여러 번 있을 수 있고, 기록이 하나도 없는 부품도 있어요. 이 데이터에서 검사 시스템은 찍은 판정을 빠짐없이 남겨서, 기록이 없는 부품은 검사기를 거치지 않은 부품이에요. station_id 는 찍은 검사기로 라인마다 하나씩 있어요(VS-1 은 L1, VS-2 는 L2). inspected_at 은 검사 시스템 시계로 찍은 판정 시각이고, result 는 OK(양품)와 NG(불량) 가운데 하나예요. 불량 판정 뒤 다시 찍어 양품이 나온 부품, 양품이 나온 뒤 한 번 더 찍은 부품, 다시 찍어도 불량인 부품, 검사기가 다시 켜진 뒤 멈춘 동안 만든 부품 가운데 일부만 검사기에 넣어 찍은 기록이 들어 있어요. 큰 데이터는 같은 기간 두 검사기의 기록 전부이고, 시작용은 시작용 부품 120개의 기록 전부예요.
전체 117행 가운데 앞 5행이에요.
| inspection_id | serial_no | station_id | inspected_at | result |
|---|---|---|---|---|
| IN-10089108 | SH-0148341 | VS-1 | 2026-10-27T06:01:10+09:00 | OK |
| IN-10089109 | FL-0140861 | VS-2 | 2026-10-27T06:01:19+09:00 | OK |
| IN-10089110 | SH-0148342 | VS-1 | 2026-10-27T06:02:08+09:00 | OK |
| IN-10089111 | FL-0140862 | VS-2 | 2026-10-27T06:02:26+09:00 | OK |
| IN-10089112 | SH-0148343 | VS-1 | 2026-10-27T06:03:07+09:00 | OK |
117행 전부를 JSON 파일 하나로 받을 수 있어요.
같은 형식으로 만든 90,327행이에요. 위 데이터가 이 안에 그대로 들어 있어요(한 줄에 한 행, gzip 압축).
미리보기와 내려받는 데이터 모두 이 형식(JSON Schema)을 따라요.
{
"type": "object",
"description": "AI 검사기가 부품을 한 번 찍어 판정한 기록. 키는 inspection_id.",
"additionalProperties": false,
"required": [
"inspection_id",
"serial_no",
"station_id",
"inspected_at",
"result"
],
"properties": {
"inspection_id": {
"type": "string",
"pattern": "^IN-[0-9]{8}$",
"description": "검사 기록 번호. 이 표의 키예요."
},
"serial_no": {
"type": "string",
"pattern": "^(SH|FL)-[0-9]{7}$",
"description": "찍은 부품. produced_parts.serial_no 를 가리켜요. 한 부품에 기록이 여러 번 있을 수 있어요."
},
"station_id": {
"type": "string",
"enum": [
"VS-1",
"VS-2"
],
"description": "찍은 AI 검사기. VS-1 은 L1, VS-2 는 L2 에 놓인 검사기이고 inspection_stops.station_id 와 같은 코드예요."
},
"inspected_at": {
"type": "string",
"format": "date-time",
"description": "검사 시스템 시계로 찍은 판정 시각. 한국 시간(+09:00) ISO 8601, 초 단위. MES 시계와 같은 기준이에요. 같은 부품의 기록끼리 시각이 같은 경우는 없어요."
},
"result": {
"type": "string",
"enum": [
"OK",
"NG"
],
"description": "그 한 번 찍은 판정. OK 는 양품, NG 는 불량이에요."
}
}
}검사 시스템이 남긴 AI 검사기 정지 기록이에요. 한 행이 정지 한 번이고 stop_id 가 키예요. station_id 는 멈춘 검사기로 ai_inspections.station_id 와 같은 코드이고, line_id 는 그 검사기가 놓인 라인으로 produced_parts.line_id 와 같은 코드예요. stopped_at 은 검사기가 검사를 멈춘 시각, resumed_at 은 다시 검사를 시작한 시각이고 둘 다 검사 시스템 시계예요. stopped_at 부터 resumed_at 전까지 그 검사기의 검사 기록은 없고, 이 데이터의 정지는 모두 다시 켜진 뒤의 기록이라 resumed_at 이 비어 있는 행은 없어요. 정지하는 동안 라인에서 부품이 계속 나온 경우와 그사이 만든 부품이 하나도 없는 경우가 있어요. 한 정지가 한 라인의 두 로트에 걸친 경우와, 한 라인 검사기가 멈춘 시각에 다른 라인에서 검사 기록 없는 부품이 나온 경우도 들어 있어요. 큰 데이터는 같은 기간 두 검사기의 정지 전부이고, 시작용은 시작용 로트를 만드는 동안 그 라인 검사기에 있었던 정지 전부예요.
전체 2행 가운데 앞 2행이에요.
| stop_id | station_id | line_id | stopped_at | resumed_at |
|---|---|---|---|---|
| ST-10193 | VS-1 | L1 | 2026-10-27T06:45:59+09:00 | 2026-10-27T06:57:35+09:00 |
| ST-10194 | VS-2 | L2 | 2026-10-27T07:29:16+09:00 | 2026-10-27T07:39:56+09:00 |
2행 전부를 JSON 파일 하나로 받을 수 있어요.
같은 형식으로 만든 195행이에요. 위 데이터가 이 안에 그대로 들어 있어요(한 줄에 한 행, gzip 압축).
미리보기와 내려받는 데이터 모두 이 형식(JSON Schema)을 따라요.
{
"type": "object",
"description": "AI 검사기 정지 한 번. 키는 stop_id.",
"additionalProperties": false,
"required": [
"stop_id",
"station_id",
"line_id",
"stopped_at",
"resumed_at"
],
"properties": {
"stop_id": {
"type": "string",
"pattern": "^ST-[0-9]{5}$",
"description": "정지 기록 번호. 이 표의 키예요."
},
"station_id": {
"type": "string",
"enum": [
"VS-1",
"VS-2"
],
"description": "멈춘 AI 검사기. ai_inspections.station_id 와 같은 코드예요."
},
"line_id": {
"type": "string",
"enum": [
"L1",
"L2"
],
"description": "멈춘 검사기가 놓인 라인. produced_parts.line_id 와 같은 코드예요(VS-1 은 L1, VS-2 는 L2)."
},
"stopped_at": {
"type": "string",
"format": "date-time",
"description": "검사기가 검사를 멈춘 시각. 검사 시스템 시계, 한국 시간(+09:00) ISO 8601, 초 단위."
},
"resumed_at": {
"type": "string",
"format": "date-time",
"description": "검사기가 다시 검사를 시작한 시각. 검사 시스템 시계, 한국 시간(+09:00) ISO 8601, 초 단위. 비어 있는 행은 없어요. stopped_at 부터 이 시각 전까지 그 검사기의 검사 기록은 없어요."
}
}
}근거: 고객의 기존 시스템과 데이터를 연동하고, 솔루션을 실제 업무 환경에 적용합니다.