Microsoft Word 템플릿 기반 사양 Export(11월 업데이트)
모든 데이터에 대한 완전한 액세스를 허용하는 요구 사항 및 시스템 포털의 Python & Rest API를 활용하고 이를 Microsoft Word의 필드 병합 기능과 결합하면 한 번의 클릭으로 요구 사항 사양을 Word 문서로 내보내는 기능이 있습니다. 이 기능을 사용하면 문서에 포함할 요구 사항 필드와 그 배치 방법을 선택할 수 있습니다.
필드 및 템플릿 병합
필드 병합은 이름으로 데이터 필드에 대한 참조로 사용됩니다. 템플릿 문서가 데이터 소스의 값과 메일 병합되면 데이터 필드 정보가 병합 필드를 대체합니다.
다양한 병합 필드가 있는 템플릿 문서를 만들면 이를 기반으로 동일한 유형의 출력 문서(사양서 또는 기타)를 빠르게 생성할 수 있습니다.
새 병합 필드 만들기
-
편집하려는 문서를 열고
탭으로 이동합니다.Insert -
탭에서
메뉴를 열고Quick Partd . 대화 상자Field 대화창이 열립니다.Field -
필드 대화 상자 메뉴의 왼쪽 목록에서
을 선택합니다. 병합할 필드 이름을 오른쪽의Merge Field 텍스트 상자에 병합 필드 이름을 입력하고Field name .OK
힌트: 바꾸려는 데이터에 따라 필드 이름을 지정하면 추적하기 쉽습니다 -
병합 필드가 Word 파일에 삽입됩니다. 개체를 클릭하면 해당 개체가 회색으로 강조 표시됩니다.

해당 Python 함수가 이미 정의되어 있는 병합된 필드는 다음과 같습니다:
"req_id" - 요구 사항 식별자 "req_title" - 요구 사항 제목 "req_text" - 요구 사항 텍스트 "req_state" - 요구 사항 상태 "req_type" - 요구 사항 유형 "req_rationale" - 요구 사항과 연관된 이론적 근거 "images" - 요구사항에 첨부된 이미지 "specification_name" - 요구 사항이 포함된 사양 "section_name" - 요구 사항이 포함된 섹션 "req_compliance" - 요구 사항의 규정 준수 문구 "req_comp_comment" - 요구사항의 컴플라이언스 코멘트 "req_owner" - 요구 사항의 소유자 "req_applicability" - 요구 사항의 적용 가능성 "req_ver_methods" - 요구 사항의 검증 방법 "req_ver_m_text" - 요구사항의 검증 방법 코멘트 "req_ver_closeout_ref" - 요구 사항의 검증 방법 종료 참조 "req_ver_status" - 요구 사항의 확인 방법 상태
템플릿 만들기(템플릿 복제용)
필드 병합의 조합을 사용하여 사양 문서를 생성하는 데 사용할 템플릿 파일을 만들 수 있습니다.
아래에 템플릿의 예가 나와 있는데, 일부 필드는 '일반 텍스트'로, 다른 필드는 테이블의 일부로 작성되어 있습니다. 이 예는 다음 섹션에서 설명할 Python 스크립트의 기본 예입니다.

이 템플릿의 결과 출력은 아래 그림과 비슷합니다

템플릿을 채우는 Python 스크립트
병합 필드로 채워진 템플릿을 기반으로 문서를 생성하는 데 사용되는 Python 스크립트는 다음 주요 패키지의 사용법에 있습니다:
-
- 요구 사항 및 시스템 포털의 Python API를 사용하면 요구 사항 및 시스템 포털의 개체에 액세스하고 업데이트할 수 있습니다.valispace -
- Office Open XML(Docx) 파일에서 편지 병합(병합 필드를 원하는 데이터로 바꾸기)을 수행하며 Microsoft Office Word를 설치하지 않고도 모든 시스템에서 사용할 수 있습니다.docx-mailmerge2 -
- Microsoft Word(.docx) 파일 생성 및 업데이트를 위한 Python 라이브러리.python-docx -
- HTML을 Docx로 변환하는 Python 라이브러리. 요구 사항 및 시스템 포털의 형식을 Word(굵게, 이탤릭체, 글머리 기호...)로 유지하는 데 사용됩니다htmldocx
코드는 세 가지 유형의 함수로 나뉩니다:
-
- 로 구성되어 있으며Master functions 및main 주어진 템플릿을 채워서 요구 사항을 최종 문서로 Export하는 논리가 있는 함수create_specification_document -
- 요구사항 유형, 상태, 이미지 등 요구사항 데이터를 추출하는 모든 함수로 구성됩니다Requirement data extract functions -
- 공백 제거와 같은 서식을 수행하여 최종 생성된 문서에서 표가 깨지지 않도록 하는 함수Document "Format" functions
다음 하위 장에서는 이러한 함수에 대해 간략하게 설명합니다.
마스터 함수 - 기본
이 기능을 통해 사용자는 도메인 이름, 사용자 이름 및 비밀번호, 프로젝트 식별자 o 사양을 생성할 프로젝트 식별자 및 템플릿 파일 경로를 삽입할 수 있습니다
그런 다음 이 정보를 사용하여
-
Python API를 사용하여 요구 사항 및 시스템 포털에 로그인합니다;
-
사양, 이미지, 요구 사항 유형 등과 같은 프로젝트 일반 데이터를 다운로드합니다;
-
선택한 프로젝트의 각 사양에 대해 함수
함수를 호출합니다.create_specification_document
마스터 함수 - Create_specification_document
이 함수는 템플릿의 병합 필드를 해당 요구 사항 데이터로 채워서 사양 파일을 생성합니다.
처음에는 선택한 사양에 대한 모든 요구 사항을 수집해야 합니다:
all_specification_requirements = get_map(api, f"requirements/complete/?project="+str(DEFAULT_VALUES["project"])+"&clean_html=text&clean_text=comment", "id", None, filter_specification)
len(all_specification_requirements) 1:
print("사양에 대한 요구사항 없음 -> "+ specification_data['name'])
return
그러면 섹션이 없는 요구 사항부터 시작하여 섹션별로 요구 사항 데이터를 정리합니다.
이러한 섹션이 없는 요구 사항을 가져오기 위해 지원 함수 get_requirements_without_section
#먼저 섹션이 없는 요구 사항을 문서에 추가합니다
no_section_requirements = get_requirements_without_section(all_specification_requirements)
이제 섹션이 없는 모든 요구 사항이 수집되었으므로 병합 필드를 채울 데이터를 준비할 차례입니다. 이 데이터는 다음을 사용하여 검색하고 Requirement data extract functions
template_data.append({
"specification_name" : CURRENT_SPECIFICATION["name"] if counter == 1 else "",
"section_name" : "",
"req_id" : reqdata['식별자'],
"req_title" : reqdata['title'],
"req_text" : reqdata['식별자']+"_docx",
"req_type" : req_type,
"req_rationale" : reqdata['comment'],
"req_ver_methods" : req_vms,
"req_applicability" : req_applicability,
"images" : "Images_Placeholder_"+str(requirement) if requirement_with_images == True else "No_Images"
})
병합된 대부분의 필드에 대해 데이터가 직접 매핑되지만 imagesreq_text
-
For
요구 사항에 이미지가 있는지 또는 데이터로 저장되어 있는지 여부를 나타내는 플래그입니다images -
For
의 경우 플레이스홀더가 데이터로 저장됩니다. 이 자리 표시자는 아래 코드에 표시된 것처럼 요구 사항 텍스트를 HTML에서 Word로 구문 분석한 결과를 포함하는 목록의 키로도 사용됩니다req_textdocx_list[reqdata['identifier']+"_docx"] = new_parser.parse_html_string(reqdata['text'])
섹션이 있는 요구사항에 대해 동일한 프로세스가 반복되고 완료되면 데이터가 템플릿 필드에 병합되어 새 파일로 저장됩니다:
document.merge_templates(template_data, separator='continuous_section') document.write(OUTPUT_FILE)
마지막으로, 우리는 Document "Format" functions
document2 = Document(OUTPUT_FILE)
rEMOVE_ALL_BUT_LAST_SECTION(document2)
rEMOVE_ALL_EMPTY_헤딩(document2)
put_html_text(document2, docx_list)
pUT_IMAGES(문서2, 모든_프로젝트_이미지)
kEEP_TABLES_ON_ONE_PAGE(DOCUMENT2)
document2.save(OUTPUT_FILE)
print ("사양 문서 생성 -> "+ specification_data['name'])
요구사항 데이터 추출 함수
요구사항에서 데이터를 추출하는 데 사용할 수 있는 함수는 다음과 같습니다:
-
- 섹션 없이 모든 요구 사항의 정렬된 목록을 반환합니다get_requirements_without_section -
- 주어진 사양의 모든 섹션 목록을 반환합니다get_specification_sections -
- 주어진 섹션의 모든 요구사항의 정렬된 목록을 반환합니다get_section_requirements -
- 모든 요구사항 이미지의 배열을 반환합니다get_requirement_images -
- 요구 사항 유형 이름을 반환합니다get_requirement_type -
- 요구 사항의 이름을 반환합니다 상태get_requirement_state -
- 사용자 그룹과 요구 사항 소유자의 이름 및 성을 반환합니다get_requirement_owner -
- 모든 요구사항 적용 블록 유형 목록을 ";"으로 구분하여 반환합니다get_requirement_applicability -
- 모든 요구 사항 확인 방법의 이름을 ";"으로 나눈 이름을 반환합니다get_requirement_verification_methods -
- 모든 요구 사항 확인 방법의 이름을 개행으로 나눈 이름을 반환합니다get_requirement_verification_methods_newline -
- 모든 요구 사항 확인 방법의 코멘트를 이중 줄 바꿈으로 나눈 값을 반환합니다get_requirement_verification_methods_comments -
- 모든 요구 사항 확인 방법의 상태를 ";"로 구분하여 반환합니다get_requirement_verification_status -
- 각 요구 사항 확인 방법의 종료 참조 이름을 ";"로 나눈 값을 반환합니다get_requirement_verification_closeout_refs -
- 모든 요구 사항 첨부 파일의 이름을 ";"로 구분하여 반환합니다get_requirement_attachments_references -
- 함수에 대한 인수로 전달된 요구 사항의 특정 Custom 필드 값을 반환합니다get_requirement_custom_field
문서 "서식" 함수
최종 문서의 서식을 지정하는 데 사용되는 함수는 다음과 같습니다:
-
- 표에 여러 페이지에 걸쳐 셀 콘텐츠가 포함되지 않도록 최종 문서의 서식을 지정합니다.keep_tables_on_one_page -
- 모든 빈 제목을 제거하도록 최종 문서의 서식을 지정합니다remove_all_empty_headings -
- 최종 문서에 여러 섹션이 아닌 하나의 섹션만 있도록 서식을 지정합니다remove_all_but_last_section -
- 이미지 플레이스홀더를 각 요구사항의 이미지로 대체합니다put_images -
- 한 실행의 속성을 다른 실행으로 복사하는 보조 함수(HTML 형식의 텍스트 속성을 복사하는 데 사용)clone_run_props -
- 요구 사항 텍스트 자리 표시자를 굵게, 기울임꼴, 밑줄, 취소선 및 글머리 기호와 같은 해당 형식의 텍스트로 바꿉니다put_html_text
최신 일반 템플릿, Python 스크립트 또는 실행 파일 다운로드
일반 사양 생성 Nov2023.py 일반 사양 템플릿.docx 요구사항.txt
스크립트를 실행하기 전에 편집해야 할 사항
스크립트 작성부터 문서 생성까지 이 코드를 실행하는 전체 절차는 아래 동영상에 설명되어 있습니다(오디오 없음).
템플릿 변경, 템플릿을 채우기 위한 기타 정보 추출에 대한 안내가 필요하거나 이 기능과 관련된 질문이 있는 경우 Altium 지원 페이지를 통해 언제든지 질문/요청을 보내주세요.