1. 기본정보
2. 상세정보
추가 버튼을 필요한 만큼 누르면 한 줄씩 생깁니다. 각 줄마다 삭제가 있습니다.
3. 관련자재
관련자재도 필요한 만큼 추가합니다. 각 줄마다 삭제가 있습니다.
4. 관련정보
종류(시방서/표준품셈/카탈로그/관련도면/KS규격)를 고르고, KS규격이면 KS번호로 자동 연결되고 나머지는 파일을 올립니다. 각 줄마다 삭제가 있습니다.
5. 태그
태그를 입력 후 엔터 또는 콤마(,)를 누르면 자동으로 생성됩니다.
6. 저장
신규 자재는 [자재 저장]을 누르면 Firestore에 저장됩니다.
기존 자재는 오른쪽 자재 검색/목록에서 [수정]을 누른 뒤 [수정저장]을 누르면 덮어쓰기 됩니다.
기존 자재는 오른쪽 자재 검색/목록에서 [수정]을 누른 뒤 [수정저장]을 누르면 덮어쓰기 됩니다.
7. 분류관리
8. 엑셀 대량등록
"자재입력" 시트 첫 줄은 제목줄입니다.
사용 컬럼: id, name, english, category, 중분류, 소분류, KS정식명칭, 조사자, description, 제조사, tags, doc_KS규격_번호
상세정보(재질·용도 등)와 관련자재는 같은 파일 안의 "상세정보" 시트(자재ID, 항목라벨, 항목값)와 "관련자재" 시트(자재ID, 관련자재명)에 자재ID당 여러 줄로 적으면 자동으로 묶여서 들어갑니다(8개 제한 없음).
(구형식 파일도 그대로 지원됩니다: "상세정보"/"관련자재" 시트가 없으면 옛날처럼 detail1_label/detail1_value ~ detail8_label/detail8_value, related1~related8 컬럼을 읽습니다.)
id를 채워두면 그 id로 등록되고, 비워두면 category를 보고 분류코드로 자동생성됩니다.
category는 분류관리에 있는 이름과 정확히 같아야 합니다.
id가 기존 자재와 같으면 새로 만들지 않고 그 자재 내용을 덮어씁니다(업데이트) — 나중에 중분류처럼 칸을 추가로 채워서 같은 파일을 다시 올릴 때 이렇게 갱신하면 됩니다. (파일 안에서 id·자재명이 같은 줄이 두 번 나오거나, 분류가 비어있거나 목록에 없으면 그건 여전히 오류로 막습니다.)
사진/PDF(시방서·표준품셈·카탈로그·관련도면)는 이번 기능에서 제외하고, 자재 기본정보만 일괄 등록합니다. 업데이트되는 자재는 기존 사진·즐겨찾기 기본값·최초등록일·기존 첨부문서는 그대로 유지됩니다.
사용 컬럼: id, name, english, category, 중분류, 소분류, KS정식명칭, 조사자, description, 제조사, tags, doc_KS규격_번호
상세정보(재질·용도 등)와 관련자재는 같은 파일 안의 "상세정보" 시트(자재ID, 항목라벨, 항목값)와 "관련자재" 시트(자재ID, 관련자재명)에 자재ID당 여러 줄로 적으면 자동으로 묶여서 들어갑니다(8개 제한 없음).
(구형식 파일도 그대로 지원됩니다: "상세정보"/"관련자재" 시트가 없으면 옛날처럼 detail1_label/detail1_value ~ detail8_label/detail8_value, related1~related8 컬럼을 읽습니다.)
id를 채워두면 그 id로 등록되고, 비워두면 category를 보고 분류코드로 자동생성됩니다.
category는 분류관리에 있는 이름과 정확히 같아야 합니다.
id가 기존 자재와 같으면 새로 만들지 않고 그 자재 내용을 덮어씁니다(업데이트) — 나중에 중분류처럼 칸을 추가로 채워서 같은 파일을 다시 올릴 때 이렇게 갱신하면 됩니다. (파일 안에서 id·자재명이 같은 줄이 두 번 나오거나, 분류가 비어있거나 목록에 없으면 그건 여전히 오류로 막습니다.)
사진/PDF(시방서·표준품셈·카탈로그·관련도면)는 이번 기능에서 제외하고, 자재 기본정보만 일괄 등록합니다. 업데이트되는 자재는 기존 사진·즐겨찾기 기본값·최초등록일·기존 첨부문서는 그대로 유지됩니다.
9. 엑셀 업로드 이력
사진 일괄 업로드 (ID 매칭)
파일명 형식: {자재ID}_제품.jpg 또는 {자재ID}_제품2.jpg (예: AGG0001_제품.jpg)
파일명 앞부분(자재ID)으로 자재를 찾아서 Storage에 올리고, 제품사진 / 제품사진2 칸에 자동으로 연결합니다. 여러 장을 한 번에 선택할 수 있습니다.
ID가 일치하는 자재가 없거나 파일명 형식이 안 맞으면 그 파일은 건너뛰고 아래에 목록으로 보여줍니다.
올리기 전에 자동으로 가로 1200px·jpg 품질 82%로 압축해서 올립니다(원본 파일은 안 건드림, 용량만 줄여서 업로드).
파일명 앞부분(자재ID)으로 자재를 찾아서 Storage에 올리고, 제품사진 / 제품사진2 칸에 자동으로 연결합니다. 여러 장을 한 번에 선택할 수 있습니다.
ID가 일치하는 자재가 없거나 파일명 형식이 안 맞으면 그 파일은 건너뛰고 아래에 목록으로 보여줍니다.
올리기 전에 자동으로 가로 1200px·jpg 품질 82%로 압축해서 올립니다(원본 파일은 안 건드림, 용량만 줄여서 업로드).
KS 일괄 검색
지금 불러온 자재 중 KS규격 문서가 없는 것만 골라서, 자재명으로 KS 제품표준(1,558건)을 검색합니다.
KS 공식 명칭과 실제 자재명이 다른 경우가 많아 자동으로 넣지 않고, 후보를 보여주면 맞는 걸 눌러서 적용합니다(누르는 즉시 Firestore에 저장됨).
KS 공식 명칭과 실제 자재명이 다른 경우가 많아 자동으로 넣지 않고, 후보를 보여주면 맞는 걸 눌러서 적용합니다(누르는 즉시 Firestore에 저장됨).
11. 표준시방서 등록 / 수정
pdfUrl이 없거나 비공개이면 앱 화면에 표시되지 않습니다.
12. 표준시방서 엑셀 / PDF 일괄 업로드
사용 컬럼: section, category, code, title, description, sectionOrder, categoryOrder, sortOrder, isPublished, pdfUrl, downloadUrl
PDF URL이 없는 행은 저장은 가능하지만 앱에는 표시되지 않습니다.
PDF URL이 없는 행은 저장은 가능하지만 앱에는 표시되지 않습니다.
여러 PDF를 선택하면 파일명에서 확장자를 뺀 이름이 시방서명으로 저장됩니다.
13. 표준시방서 DB 무결성 검사
KT서버 / standard_specifications 전체 데이터를 nodeType별로 검사합니다.
현재 앱 구조 기준으로 검사합니다. 서버는 목차/메타데이터만 저장하고, 본문은 Flutter 앱이 code로 KCSC API를 호출해 표시합니다.
현재 앱 구조 기준으로 검사합니다. 서버는 목차/메타데이터만 저장하고, 본문은 Flutter 앱이 code로 KCSC API를 호출해 표시합니다.
DB 무결성 검사 기준
오류/경고 목록의 [수정] 버튼을 누르면 해당 시방서가 수정창에 바로 열립니다.
최상위 폴더: title / section 중심 검사
폴더: title / code / category 중심 검사, PDF/API 없어도 정상
실제 문서: title / code / category / breadcrumb / code 숫자 6자리 추출 가능 여부 중심 검사
※ 현재 Flutter 앱은 pdfUrl / downloadUrl / apiCode를 필수로 사용하지 않습니다.
최상위 폴더: title / section 중심 검사
폴더: title / code / category 중심 검사, PDF/API 없어도 정상
실제 문서: title / code / category / breadcrumb / code 숫자 6자리 추출 가능 여부 중심 검사
※ 현재 Flutter 앱은 pdfUrl / downloadUrl / apiCode를 필수로 사용하지 않습니다.
14. 표준시방서 검색 / 목록
표준시방서 저장 구조
저장 위치: KT서버 / standard_specifications
section: 공통편 / 시설물편
category: 총칙 / 건축공사 등
pdfUrl이 있는 공개 데이터만 앱에 표시됩니다.
section: 공통편 / 시설물편
category: 총칙 / 건축공사 등
pdfUrl이 있는 공개 데이터만 앱에 표시됩니다.