Integrated API
Block

EDA Block

EDA Block은 회로도와 PCB 레이아웃을 관리하는 모듈입니다.

주요 기능

1. Block 생성 (CreateEdaBlock)

2. Block 조회 (EdaBlockConnection)

3. Block 수정 (UpdateEdaBlock)

4. Block 삭제 (DeleteEdaBlock)

5. Block 복제 (DuplicateEdaBlock)

6. Block Schematic 파싱 (EdaBlockSchematicParse)

7. Block Footprint 파싱 (EdaBlockFootprintParse)

블록 등록

schematicUrl파일을 기본으로 블록이름과 함께 블록생성 요청 API

Operation

mutation createEdaBlock($input: CreateEdaBlockInput!) {
  createEdaBlock(input: $input) {
  	name
    blockType
    accessType
    status
    ioPorts {
      name
      ioType
      pinType
      minVoltage
      maxVoltage
    }
  }
}

Variables

{
  "input": {
    "schematicUrl": "https://d2isodt8obvphf.cloudfront.net/DATA/SCH_Codec-to-1W-Speaker_2024-05-20.json",
    "name": "test"
  }
}

블록 수정

블록수정 요청시 여러 파라미터값을 수정요청하여 업데이트함.

Operation

mutation updateEdaBlock($input: UpdateEdaBlockInput!) {
  updateEdaBlock(input: $input) {
    name
    thumbnailUrl
    accessType
    memo
    category
    materials {
      name
      prefix
      option
      footprint
      integrationStatus
      supplyItem {
        supplier
        mouserPartNumber
      }
    }
    ioPorts {
      name
      ioType
      minVoltage
      maxVoltage
      pinType
    
    }
  }
}

Variables

{
  "input": {
    "footprintUrl": "https://d2isodt8obvphf.cloudfront.net/DATA/PCB_PCB_Codec-to-1W-Speaker-copy_2024-05-20.json",
    "id": "1",
    "accessType": "PRIVATE",
    "memo": "dsdf"
  }
}

블록 조회

블록 조회

Operation

query edaBlock($input: EdaBlockInput!) {
  edaBlock(input:$input) {
    id
    memo
    ioPorts {
      ioType
      pinType
    }
    materials {
      name
      prefix
      footprint
      integrationStatus
    }
    name
    category
    blockType
  }
}

Variables

{
  "input": {
    "id": "1"
  }
}

EDA (Electronic Design Automation)

EDA 모듈은 회로도와 PCB 레이아웃의 설계, 검증, 변환을 담당하는 모듈입니다.

주요 기능

1. 프로젝트 생성 및 관리

2. 프로젝트 레이아웃 업데이트

3. Schematic 변환 및 저장

4. Footprint 변환 및 저장

테스트 방법

1. 단위 테스트 실행

# EDA 프로젝트 테스트
go test -v ./internal/eda/usecase/project_test.go
 
# EDA 블록 테스트
go test -v ./internal/eda/usecase/block_test.go
 
# EDA 로직 테스트
go test -v ./internal/eda/usecase/logic_test.go

2. 통합 테스트 실행

# 전체 EDA 테스트 실행
go test -v ./internal/eda/...
 
# 특정 테스트만 실행
go test -v ./internal/eda/usecase/... -run TestEdaProject

3. 테스트 커버리지 확인

# 테스트 커버리지 생성
go test -coverprofile=coverage.out ./internal/eda/...
 
# 커버리지 리포트 확인
go tool cover -html=coverage.out

테스트 데이터 준비

  1. 테스트용 프로젝트 파일 준비

    • testdata/project.json: 테스트용 프로젝트 데이터
    • testdata/blocks/: 테스트용 블록 파일들
  2. 환경 변수 설정

export AWS_ACCESS_KEY_ID=your_access_key
export AWS_SECRET_ACCESS_KEY=your_secret_key
export AWS_REGION=ap-northeast-2
export S3_BUCKET=your_bucket_name

테스트 시나리오

  1. 프로젝트 생성 테스트

    • 새로운 프로젝트 생성
    • 프로젝트 데이터 검증
    • S3 업로드 확인
  2. 레이아웃 업데이트 테스트

    • 블록 위치 변경
    • 보드 크기 변경
    • 이미지 업데이트
    • 홀 정보 업데이트
  3. 파일 변환 테스트

    • SCH 파일 변환
    • BRD 파일 변환
    • SVG 이미지 생성
  4. 에러 케이스 테스트

    • 잘못된 입력 데이터
    • S3 업로드 실패
    • 변환 실패