feat: 게시판 댓글/답글 시스템 및 대시보드 개선

주요 변경사항:
- 게시판 계층형 댓글/답글 시스템 구현
  - DB: root_idx, depth, thread_path, is_comment, reply_count 컬럼 추가
  - 트리거: 댓글 개수 자동 업데이트
  - 답글(is_comment=false)은 목록에 표시, 댓글(is_comment=true)은 뷰어에만 표시
  - ESC 키로 모달 닫기 기능

- 업무일지 개선
  - 프로젝트 선택 시 최종 설정 자동 불러오기
  - 복사 시 jobgrp, tag 포함
  - 완료(보고) 상태 프로젝트도 검색 가능하도록 수정

- 대시보드 개선
  - 할일 목록 페이징 추가 (6개씩)
  - 할일에 요청자 정보 표시 (제목 좌측에 괄호로)
This commit is contained in:
backuppc
2025-12-03 10:10:29 +09:00
parent 3d53a5c42f
commit c1c615fe1b
86 changed files with 10612 additions and 36377 deletions

View File

@@ -78,7 +78,6 @@
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -105,16 +104,7 @@
this.personalInventoryToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.mn_docu = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem4 = new System.Windows.Forms.ToolStripSeparator();
this.ToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripSeparator();
this.minutesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.requestITemToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.freeBoardToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.bugReportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.todoListToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -315,7 +305,7 @@
//
this.userAccountToolStripMenuItem.ForeColor = System.Drawing.Color.Blue;
this.userAccountToolStripMenuItem.Name = "userAccountToolStripMenuItem";
this.userAccountToolStripMenuItem.Size = new System.Drawing.Size(152, 24);
this.userAccountToolStripMenuItem.Size = new System.Drawing.Size(134, 24);
this.userAccountToolStripMenuItem.Text = "계정정보";
this.userAccountToolStripMenuItem.Click += new System.EventHandler(this.userAccountToolStripMenuItem_Click);
//
@@ -323,7 +313,7 @@
//
this.myAccouserToolStripMenuItem.ForeColor = System.Drawing.Color.Blue;
this.myAccouserToolStripMenuItem.Name = "myAccouserToolStripMenuItem";
this.myAccouserToolStripMenuItem.Size = new System.Drawing.Size(152, 24);
this.myAccouserToolStripMenuItem.Size = new System.Drawing.Size(134, 24);
this.myAccouserToolStripMenuItem.Text = "계정목록";
this.myAccouserToolStripMenuItem.Click += new System.EventHandler(this.myAccouserToolStripMenuItem_Click);
//
@@ -331,7 +321,7 @@
//
this.ToolStripMenuItem.ForeColor = System.Drawing.Color.Blue;
this.ToolStripMenuItem.Name = "권한설정ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(152, 24);
this.ToolStripMenuItem.Size = new System.Drawing.Size(134, 24);
this.ToolStripMenuItem.Text = "권한설정";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
@@ -339,13 +329,13 @@
//
this.toolStripMenuItem12.ForeColor = System.Drawing.Color.Blue;
this.toolStripMenuItem12.Name = "toolStripMenuItem12";
this.toolStripMenuItem12.Size = new System.Drawing.Size(149, 6);
this.toolStripMenuItem12.Size = new System.Drawing.Size(131, 6);
//
// 그룹정보ToolStripMenuItem
//
this.ToolStripMenuItem.ForeColor = System.Drawing.Color.Blue;
this.ToolStripMenuItem.Name = "그룹정보ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(152, 24);
this.ToolStripMenuItem.Size = new System.Drawing.Size(134, 24);
this.ToolStripMenuItem.Text = "그룹정보";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
@@ -378,7 +368,6 @@
this.mn_purchase,
this.mn_project,
this.mn_dailyhistory,
this.ToolStripMenuItem,
this.ToolStripMenuItem,
this.ToolStripMenuItem,
this.ToolStripMenuItem,
@@ -559,15 +548,6 @@
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
this.toolStripMenuItem2.Size = new System.Drawing.Size(231, 6);
//
// 업무현황전자실ToolStripMenuItem
//
this.ToolStripMenuItem.ForeColor = System.Drawing.Color.Red;
this.ToolStripMenuItem.Name = "업무현황전자실ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(203, 24);
this.ToolStripMenuItem.Text = "업무현황(전자실)";
this.ToolStripMenuItem.Visible = false;
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 교육목록ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "교육목록ToolStripMenuItem";
@@ -764,16 +744,7 @@
//
this.mn_docu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.ToolStripMenuItem,
this.toolStripMenuItem4,
this.ToolStripMenuItem1,
this.ToolStripMenuItem,
this.toolStripMenuItem3,
this.minutesToolStripMenuItem,
this.requestITemToolStripMenuItem,
this.freeBoardToolStripMenuItem,
this.bugReportToolStripMenuItem,
this.todoListToolStripMenuItem,
this.ToolStripMenuItem});
this.ToolStripMenuItem});
this.mn_docu.Image = ((System.Drawing.Image)(resources.GetObject("mn_docu.Image")));
this.mn_docu.Name = "mn_docu";
this.mn_docu.Size = new System.Drawing.Size(65, 23);
@@ -782,86 +753,17 @@
// 메모장ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "메모장ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(149, 24);
this.ToolStripMenuItem.Size = new System.Drawing.Size(152, 24);
this.ToolStripMenuItem.Text = "메모장";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// toolStripMenuItem4
//
this.toolStripMenuItem4.Name = "toolStripMenuItem4";
this.toolStripMenuItem4.Size = new System.Drawing.Size(146, 6);
//
// 패치내역ToolStripMenuItem1
//
this.ToolStripMenuItem1.Name = "패치내역ToolStripMenuItem1";
this.ToolStripMenuItem1.Size = new System.Drawing.Size(149, 24);
this.ToolStripMenuItem1.Text = "패치 내역";
this.ToolStripMenuItem1.Click += new System.EventHandler(this.ToolStripMenuItem1_Click);
//
// 메일내역ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "메일내역ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(149, 24);
this.ToolStripMenuItem.Size = new System.Drawing.Size(152, 24);
this.ToolStripMenuItem.Text = "메일 내역";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// toolStripMenuItem3
//
this.toolStripMenuItem3.Name = "toolStripMenuItem3";
this.toolStripMenuItem3.Size = new System.Drawing.Size(146, 6);
//
// minutesToolStripMenuItem
//
this.minutesToolStripMenuItem.ForeColor = System.Drawing.Color.HotPink;
this.minutesToolStripMenuItem.Name = "minutesToolStripMenuItem";
this.minutesToolStripMenuItem.Size = new System.Drawing.Size(149, 24);
this.minutesToolStripMenuItem.Text = "회의록";
this.minutesToolStripMenuItem.Visible = false;
this.minutesToolStripMenuItem.Click += new System.EventHandler(this.minutesToolStripMenuItem_Click);
//
// requestITemToolStripMenuItem
//
this.requestITemToolStripMenuItem.ForeColor = System.Drawing.Color.HotPink;
this.requestITemToolStripMenuItem.Name = "requestITemToolStripMenuItem";
this.requestITemToolStripMenuItem.Size = new System.Drawing.Size(149, 24);
this.requestITemToolStripMenuItem.Text = "견적요청";
this.requestITemToolStripMenuItem.Visible = false;
this.requestITemToolStripMenuItem.Click += new System.EventHandler(this.requestITemToolStripMenuItem_Click);
//
// freeBoardToolStripMenuItem
//
this.freeBoardToolStripMenuItem.Enabled = false;
this.freeBoardToolStripMenuItem.Name = "freeBoardToolStripMenuItem";
this.freeBoardToolStripMenuItem.Size = new System.Drawing.Size(149, 24);
this.freeBoardToolStripMenuItem.Text = "Free Board";
this.freeBoardToolStripMenuItem.Visible = false;
//
// bugReportToolStripMenuItem
//
this.bugReportToolStripMenuItem.Enabled = false;
this.bugReportToolStripMenuItem.Name = "bugReportToolStripMenuItem";
this.bugReportToolStripMenuItem.Size = new System.Drawing.Size(149, 24);
this.bugReportToolStripMenuItem.Text = "Bug Report";
this.bugReportToolStripMenuItem.Visible = false;
//
// todoListToolStripMenuItem
//
this.todoListToolStripMenuItem.Enabled = false;
this.todoListToolStripMenuItem.Name = "todoListToolStripMenuItem";
this.todoListToolStripMenuItem.Size = new System.Drawing.Size(149, 24);
this.todoListToolStripMenuItem.Text = "Todo List";
this.todoListToolStripMenuItem.Visible = false;
this.todoListToolStripMenuItem.Click += new System.EventHandler(this.todoListToolStripMenuItem_Click);
//
// 메일전송ToolStripMenuItem
//
this.ToolStripMenuItem.ForeColor = System.Drawing.Color.Red;
this.ToolStripMenuItem.Name = "메일전송ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(149, 24);
this.ToolStripMenuItem.Text = "메일전송";
this.ToolStripMenuItem.Visible = false;
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 기타ToolStripMenuItem
//
this.ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
@@ -1245,14 +1147,9 @@
private System.Windows.Forms.ToolStripStatusLabel sbLogin;
private System.Windows.Forms.ToolStripMenuItem codesToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem mn_docu;
private System.Windows.Forms.ToolStripMenuItem freeBoardToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem bugReportToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem todoListToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem managementToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem personalInventoryToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem userInfoToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem minutesToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem requestITemToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem mn_purchase;
private System.Windows.Forms.ToolStripMenuItem btDev;
private System.Windows.Forms.ToolStripMenuItem purchaseImportToolStripMenuItem;
@@ -1267,9 +1164,7 @@
private System.Windows.Forms.ToolStripMenuItem mn_project;
private System.Windows.Forms.ToolStripMenuItem projectImportCompleteToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem purchaseOrderImportToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem mn_dailyhistory;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem workReportImportToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem mn_kuntae;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
@@ -1284,10 +1179,8 @@
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem3;
private System.Windows.Forms.ToolStripMenuItem mailBackupToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem4;
private System.Windows.Forms.ToolStrip toolStrip1;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem6;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem7;
@@ -1302,7 +1195,6 @@
private System.Windows.Forms.ToolStripButton toolStripButton2;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem layoutToolStripMenuItem;