초기 PM 소스 전체 업로드
This commit is contained in:
1060
views/main/jsm/officialDoc/docDataManager.js
Normal file
1060
views/main/jsm/officialDoc/docDataManager.js
Normal file
File diff suppressed because it is too large
Load Diff
1094
views/main/jsm/officialDoc/docModalManager.js
Normal file
1094
views/main/jsm/officialDoc/docModalManager.js
Normal file
File diff suppressed because it is too large
Load Diff
1451
views/main/jsm/officialDoc/docPageRenderer.js
Normal file
1451
views/main/jsm/officialDoc/docPageRenderer.js
Normal file
File diff suppressed because it is too large
Load Diff
44
views/main/jsm/officialDoc/docSocketManager.js
Normal file
44
views/main/jsm/officialDoc/docSocketManager.js
Normal 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);
|
||||
}
|
||||
});
|
||||
63
views/main/jsm/officialDoc/docVariable.js
Normal file
63
views/main/jsm/officialDoc/docVariable.js
Normal 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;
|
||||
12
views/main/jsm/officialDoc/index.js
Normal file
12
views/main/jsm/officialDoc/index.js
Normal 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();
|
||||
21
views/main/jsm/officialDoc/prompt/250425.txt
Normal file
21
views/main/jsm/officialDoc/prompt/250425.txt
Normal 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. 첨부문서 수: 숫자만
|
||||
33
views/main/jsm/officialDoc/prompt/default_prompt.txt
Normal file
33
views/main/jsm/officialDoc/prompt/default_prompt.txt
Normal 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. "첨부문서수": 찾은 첨부문서 개수를 알려주세요.
|
||||
}
|
||||
33
views/main/jsm/officialDoc/prompt/default_schema.json
Normal file
33
views/main/jsm/officialDoc/prompt/default_schema.json
Normal 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": [
|
||||
"공문번호", "공문일자", "수신처", "수신자", "수신자약자",
|
||||
"발신처", "발신자", "발신자약자", "공문제목", "공문제목요약",
|
||||
"공문내용요약", "공문간연계", "공문종류", "공문유형", "첨부문서제목", "첨부문서수"
|
||||
]
|
||||
}
|
||||
@@ -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. "첨부문서수": 숫자만
|
||||
@@ -0,0 +1,27 @@
|
||||
주의:
|
||||
- **정확성이 매우 중요합니다.**
|
||||
- **19.1 SDZR/AERA/RCM** 형태는 공문 번호가 아닙니다.
|
||||
- 한글로 쓰라고 한 항목은 반드시 한글로 작성
|
||||
- 반드시 아래 13개 항목명만 키로 사용:
|
||||
"공문번호", "공문일자", "수신자", "수신자약자", "발신자", "발신자약자", "공문제목", "공문제목요약", "공문내용요약", "공문간연계", "공문종류", "공문유형", "첨부문서수"
|
||||
- 키 값(항목명)에 숫자나 마크 추가 금지. 반드시 순수 텍스트(한글/영문)만 사용.
|
||||
- 모르면 "확인필요", 없으면 "없음"이라고 작성
|
||||
- 결과값을 **일반적인 JSON 형식**으로 그대로 출력해주세요
|
||||
- 절대 ```json 등 코드블록으로 감싸지 마세요.
|
||||
- 잘못된 형식이 나오면 위 조건에 맞는 JSON으로 다시 출력하세요.
|
||||
|
||||
{
|
||||
"공문번호": "영문-숫자" 형태
|
||||
"공문일자": YYYY-MM-DD
|
||||
"수신자": 수신자의 직책
|
||||
"수신자약자": 수신자 직책의 약자
|
||||
"발신자": 발신자의 직책 (예: Project Director), 조직명은 제외
|
||||
"발신자약자": 발신자 직책의 약자
|
||||
"공문제목": Subject **독립된 첫 구문만**, 프로젝트 이름/설명 등 부연 문장은 제외
|
||||
"공문제목요약": **한글로** 10~20자
|
||||
"공문내용요약": **한글로** 간단하게
|
||||
"공문간연계": 연계된 공문이 있으면 "있음", 없으면 "없음"
|
||||
"공문종류": '행정/일반', '기술/성과물', ‘회의/기타’ 중 하나
|
||||
"공문유형": 보고, 요청, 지시, 회신, 계약 중 하나
|
||||
"첨부문서수": 숫자만
|
||||
}
|
||||
Reference in New Issue
Block a user