초기 PM 소스 전체 업로드

This commit is contained in:
koj729
2026-06-12 17:14:03 +09:00
commit 4e33c9a02a
1769 changed files with 377797 additions and 0 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,44 @@
import { vars } from '../archive/variable.js';
import { docVars } from './docVariable.js';
import { renderDocViewer } from './docPageRenderer.js';
let socket = vars.socket;
// 변환시작, 변환완료 등 상태에 따른 실시간 UI 변경 처리는 socket.on에서 처리
// 서버에 현재 변환중인 파일 경로를 보내는 등 로직 처리는 working
//// 변환 시작
socket.on('convertDoc_start', (resultData) => {
let resourcePath = resultData.resourcePath;
let state = document.querySelector(`.attach-item[data-resource-path="${resourcePath}"] .state`);
if (!state) return;
state.classList.remove('convert');
state.classList.add('working');
let convertBtnText = state.querySelector('.convert-btn-text');
if (convertBtnText) convertBtnText.innerHTML = '변환중';
});
//// 변환 완료
socket.on('convertPdf_success', async (resultData) => {
let resourcePath = resultData.resourcePath;
docVars.convertingPathArr = resultData.convertingPathArr;
let state = document.querySelector(`.attach-item[data-resource-path="${resourcePath}"] .state`);
if (!state) return;
state.classList.remove('working');
state.classList.add('viewable');
let stateText = state.querySelector('.state-text');
if (stateText) stateText.innerHTML = '열람가능';
let convertBtn = state.querySelector('.convert-btn');
if (convertBtn) convertBtn.remove();
if (docVars.lastClickedListTarget) {
let lastClickedListTargetPath = docVars.lastClickedListTarget.dataset.resourcePath;
if (resourcePath == lastClickedListTargetPath) renderDocViewer(resourcePath, resultData.dataId);
}
});

View File

@@ -0,0 +1,63 @@
let PathNameWindow = decodeURIComponent(window.location.pathname); // /gsimteam/archive
let path_name = PathNameWindow.replace('archive', 'officialDoc'); // /gsimteam/officialDoc
let project_id = PathNameWindow.split('/')[1]; // gsimteam
export const docVars = {
// 라우터 연결을 위한 변수
path_name: path_name,
// 프로젝트 id
project_id: project_id,
// 오브젝트 스토리지 타입 (ONPREMISE / CLOUD)
storageType: undefined,
// 버킷 (프로젝트 id와 동일)
bucket: project_id,
// 마지막으로 클릭한 타켓
lastClickedListTarget: undefined,
// 마지막으로 우클릭한 타겟 -> 컨텍스트 메뉴에 사용
lastContextTarget: undefined,
// 로그 데이터 -> 활동 정보 activity-info-item(로그 데이터)에 사용 (활동 정보 아이템 클릭 시 상세 정보 표시에 사용)
logData: undefined,
// 변환중인 파일 경로를 저장하는 배열
workingFileArr: [],
// 미리보기 뷰어
viewer: undefined,
// 수신/발신
direction: undefined,
allRecipientListByDirection: undefined,
allSendingListByDirection: undefined,
// 파일 리스트 sort용 현재 컬럼, 현재 정렬순
curSortCol : 'number',
curSortOrder : 'asc',
//
allDocData: [],
allDocOfficialData: [],
allDocAttachData: [],
currentDroppedFiles: [],
currentDocId: null,
currentGroupId: null,
selectedDoc: null,
selectedAttachItem: null,
selectParams: {
typeOptions: '', // depth1: 발주처/외
baseOptions: '', // depth2: 기준
targetOptions: '', // depth3: 상대기관
},
groupCompanyData: {},
originCompanyList: [],
};
// window.docVars = docVars;

View File

@@ -0,0 +1,12 @@
import * as docSocketManager from './docSocketManager.js';
import { initDocSlider, initCategoryClicked, initCustomSelectBoxes, activateSelectUI, showInstructions } from './docPageRenderer.js';
// 셀렉트박스 클릭 이벤트
await initCustomSelectBoxes();
activateSelectUI();
// 카테고리 클릭 이벤트
initCategoryClicked();
// 화면 위아래 슬라이드
initDocSlider();
// 설정모달: 초기화면 도움말
showInstructions();

View File

@@ -0,0 +1,21 @@
반드시 아래 지침을 따를 것:
- **공문에 실제로 쓰인 텍스트만** 사용해. 추정 금지.
- 모르면 "확인필요", 없으면 "없음"이라고 써.
- 한글로 쓰라고 한 항목은 반드시 한글로 써.
1. 공문 번호: Ref. No. (reference no.는 12번 항목)
2. 공문 일자: 날짜
3. 수신처: 대표 기관 이름 하나만 (예:Seoyoung Engineering Co., Ltd)
4. 수신자: 받는 사람 직책 (예: Project Director)
5. 수신자 약자: (예: Project Director → PD)
6. 발신처: 대표 기관 이름
7. 발신자: 보낸 사람 직책(예: Team Leader)
8. 발신자 약자: (예: Team Leader → TL)
9. 공문 제목: Subject 가장 위에 한 줄만 (bold체)
10. 공문 제목 요약: 한글로 10~20자
11. 공문 내용 요약: 한글로 간단하게
12. 공문간 연계: 관련된 다른 공문의 번호 (reference no.)
13. 공문 종류: [행정/일반:(직원, 파견, 동원, 조직, 비용, 계약 등), 기술/성과물:(일정 협의, 작업계획, 성과물 제출, 기술적 업무 회의, 성과물 전달 등), 회의/기타:(회의록 등 위에 내용 이외의 것) 중 하나
14. 공문 유형: [보고:사실과 계획 일방적으로 통보, 요청:회신 또는 행동 부탁, 지시:권한 있는 주체가 수행을 명령, 회신:기존 공무에 대해 응답하거나 의견을 제공, 계약:계약조건 변경과 관련] 중 하나
15. 첨부문서 제목: Enclosures: 목록 전체
16. 첨부문서 수: 숫자만

View File

@@ -0,0 +1,33 @@
아래 문서에서 정보를 추출하여 JSON 객체로만 출력해주세요.
- 절대 ```json 등 코드블록으로 감싸지 마세요.
- 불필요한 설명 금지, 추론 금지, 파일에 있는 내용만 사용
- 값이 없는 항목은 "없음"으로 표기
- 숫자 값은 숫자 그대로
- 결과값을 **일반적인 JSON 형식**으로 그대로 출력해주세요.
- 이스케이프 문자 (예: \", \n 등)는 사용하지 말고, 결과값은 **그대로** JSON 형태로 출력해주세요.
{
1. "공문번호": 공문 번호로 Ref. No.를 의미합니다. 없는 경우는 없음으로 표기해주세요. (예시: "Ref. No. SYJV-250031")
2. "공문일자": 공문에 적혀 있는 날짜입니다. 번역하지 않고 그대로 표기해주세요. (예시: "Mar / 28 / 2025")
3. "수신처": 공문을 받는 사람이 속한 조직명 (예시: "Department of Public Works and Highways")
4. "수신자": 공문을 받은 사람의 직책 (예시: "Project Director")
5. "수신자약자": 수신자 직책 약자 (예시: "PD")
6. "발신처": 공문을 보낸 사람이 속한 조직명 (예시: "SEOYOUNG JOINT VENTURE")
7. "발신자": 공문을 보낸 사람의 직책 (예시: "Team Leader")
8. "발신자약자": 발신자 직책 약자 (예시: "TL")
9. "공문제목": 공문의 제목으로 SUBJECT 의미합니다. 적당한 길이로 끊어야 하는데 윗 문장이 프로젝트 이름으로 판단되는 경우, 9.1 프로젝트 항목을 신설해 리턴 (예시: "Submission of Comment Matrix for Design Deliverable")
10. "공문제목요약": 공문 제목을 10~20자 사이로 요약해주세요. 반드시 한글로 작성합니다.
11. "공문내용요약": 공문 내용을 요약해주세요. 반드시 한글로 작성합니다.
12. "공문간연계": 연계된 공문이 있으면 공문번호를 알려주세요. 공문번호만 필요합니다. 없는 경우는 없음으로 표기해주세요.
13. "공문종류": 공문 종류는 공문의 내용을 분석해서 다음 3가지 중 반드시 하나를 선택합니다.
* 행정/일반 인사, 파견, 조직, 비용(예산), 계약 등 경영/행정 관련
* 기술/성과물 일정 협의, 작업계획, 성과물 제출, 기술적 업무 회의, 성과물 전달 등
* 회의/기타 회의록 등 위에 내용 이외의 것
14. "공문유형": 공문 유형은 공문의 내용을 분석해서 다음의 5가지 중 반드시 하나를 선택합니다.
* 보고 : 완료된 사실이나 계획을 일방적으로 알리는 공문
* 요청 : 상대방의 행동 또는 답변을 유도하는 공문
* 지시 : 권한 있는 주체가 수행을 명령하는 공문
* 회신 : 기존 공무에 대해 응답하거나 의견을 제공하는 공문
* 계약 : 계약조건 변경과 관련된 공식 공문
15. "첨부문서제목": 공문의 첨부 문서는 Enclosures: 를 의미합니다. 없는 경우는 없음으로 표기해주세요. (예시: "1. Comment Matrix_4.4.2 Draft Detailed Engineer Design Report (Section A)" )
16. "첨부문서수": 찾은 첨부문서 개수를 알려주세요.
}

View File

@@ -0,0 +1,33 @@
{
"title": "DocumentSummary",
"type": "object",
"properties": {
"공문번호": { "type": "string" },
"공문일자": { "type": "string" },
"수신처": { "type": "string" },
"수신자": { "type": "string" },
"수신자약자": { "type": "string" },
"발신처": { "type": "string" },
"발신자": { "type": "string" },
"발신자약자": { "type": "string" },
"공문제목": { "type": "string" },
"공문제목요약": { "type": "string" },
"공문내용요약": { "type": "string" },
"공문간연계": { "type": "string" },
"공문종류": {
"type": "string",
"enum": ["행정/일반", "기술/성과물", "회의/기타"]
},
"공문유형": {
"type": "string",
"enum": ["보고", "요청", "지시", "회신", "계약"]
},
"첨부문서제목": { "type": "string" },
"첨부문서수": { "type": "integer" }
},
"required": [
"공문번호", "공문일자", "수신처", "수신자", "수신자약자",
"발신처", "발신자", "발신자약자", "공문제목", "공문제목요약",
"공문내용요약", "공문간연계", "공문종류", "공문유형", "첨부문서제목", "첨부문서수"
]
}

View File

@@ -0,0 +1,22 @@
주의:
- **정확성이 매우 중요합니다.**
- **19.1 SDZR/AERA/RCM** 형태는 공문 번호가 아닙니다.
- 한글로 쓰라고 한 항목은 반드시 한글로 작성
- 반드시 아래 **1~13번 항목만** 출력
- 모르면 "확인필요", 없으면 "없음"이라고 작성
- 결과값을 **일반적인 JSON 형식**으로 그대로 출력해주세요
- 절대 ```json 등 코드블록으로 감싸지 마세요.
1. "공문번호": "영문-숫자" 형태
2. "공문일자": YYYY-MM-DD
3. "수신자": 수신자의 직책
4. "수신자약자": 수신자 직책의 약자
5. "발신자": 발신자의 직책 (예: Project Director), 조직명은 제외
6. "발신자약자": 발신자 직책의 약자
7. "공문제목": Subject **독립된 첫 구문만**, 프로젝트 이름/설명 등 부연 문장은 제외
8. "공문제목요약": **한글로** 10~20자
9. "공문내용요약": **한글로** 간단하게
10. "공문간연계": 연계된 공문이 있으면 "있음", 없으면 "없음"
11. "공문종류": '행정/일반', '기술/성과물', ‘회의/기타’ 중 하나
12. "공문유형": 보고, 요청, 지시, 회신, 계약 중 하나
13. "첨부문서수": 숫자만

View File

@@ -0,0 +1,27 @@
주의:
- **정확성이 매우 중요합니다.**
- **19.1 SDZR/AERA/RCM** 형태는 공문 번호가 아닙니다.
- 한글로 쓰라고 한 항목은 반드시 한글로 작성
- 반드시 아래 13개 항목명만 키로 사용:
"공문번호", "공문일자", "수신자", "수신자약자", "발신자", "발신자약자", "공문제목", "공문제목요약", "공문내용요약", "공문간연계", "공문종류", "공문유형", "첨부문서수"
- 키 값(항목명)에 숫자나 마크 추가 금지. 반드시 순수 텍스트(한글/영문)만 사용.
- 모르면 "확인필요", 없으면 "없음"이라고 작성
- 결과값을 **일반적인 JSON 형식**으로 그대로 출력해주세요
- 절대 ```json 등 코드블록으로 감싸지 마세요.
- 잘못된 형식이 나오면 위 조건에 맞는 JSON으로 다시 출력하세요.
{
"공문번호": "영문-숫자" 형태
"공문일자": YYYY-MM-DD
"수신자": 수신자의 직책
"수신자약자": 수신자 직책의 약자
"발신자": 발신자의 직책 (예: Project Director), 조직명은 제외
"발신자약자": 발신자 직책의 약자
"공문제목": Subject **독립된 첫 구문만**, 프로젝트 이름/설명 등 부연 문장은 제외
"공문제목요약": **한글로** 10~20자
"공문내용요약": **한글로** 간단하게
"공문간연계": 연계된 공문이 있으면 "있음", 없으면 "없음"
"공문종류": '행정/일반', '기술/성과물', ‘회의/기타’ 중 하나
"공문유형": 보고, 요청, 지시, 회신, 계약 중 하나
"첨부문서수": 숫자만
}