summaryrefslogtreecommitdiff
path: root/app/api
diff options
context:
space:
mode:
authorjoonhoekim <26rote@gmail.com>2025-10-02 18:02:11 +0900
committerjoonhoekim <26rote@gmail.com>2025-10-02 18:02:11 +0900
commit624cfcf4edb106e6cf0b041d9437ceaa94b6a46d (patch)
treec8b81d4969c994aa8f15aea308c24de1f972ce96 /app/api
parented412083c785fc1fed7a2490f84f72a665c846be (diff)
(디버깅) 돌체 디버깅 - serialNo, 변경사항 카운트
Diffstat (limited to 'app/api')
-rw-r--r--app/api/revision-upload-ship/route.ts23
-rw-r--r--app/api/revisions/max-serial-no/route.ts71
2 files changed, 69 insertions, 25 deletions
diff --git a/app/api/revision-upload-ship/route.ts b/app/api/revision-upload-ship/route.ts
index ccfa2e59..26105efd 100644
--- a/app/api/revision-upload-ship/route.ts
+++ b/app/api/revision-upload-ship/route.ts
@@ -1,5 +1,7 @@
import { NextRequest, NextResponse } from "next/server"
import { revalidateTag } from "next/cache"
+import { getServerSession } from "next-auth/next"
+import { authOptions } from "@/app/api/auth/[...nextauth]/route"
import db from "@/db/db"
import {
@@ -21,6 +23,15 @@ import {
export async function POST(request: NextRequest) {
try {
+ // 세션 정보 가져오기
+ const session = await getServerSession(authOptions)
+ if (!session?.user?.id) {
+ return NextResponse.json({ error: "Unauthorized" }, { status: 401 })
+ }
+
+ const currentUserId = Number(session.user.id)
+ const currentUserName = session.user.name || session.user.email || "unknown"
+
const formData = await request.formData()
/* ------- 파라미터 파싱 ------- */
@@ -166,8 +177,8 @@ export async function POST(request: NextRequest) {
"UPDATE",
updated,
existingRev,
- undefined,
- uploaderName ?? undefined,
+ currentUserId, // 세션에서 가져온 실제 user ID
+ currentUserName, // 세션에서 가져온 실제 user name
[targetSystem]
)
} else {
@@ -197,8 +208,8 @@ export async function POST(request: NextRequest) {
"CREATE",
newRev,
undefined,
- undefined,
- uploaderName ?? undefined,
+ currentUserId, // 세션에서 가져온 실제 user ID
+ currentUserName, // 세션에서 가져온 실제 user name
[targetSystem]
)
}
@@ -252,8 +263,8 @@ export async function POST(request: NextRequest) {
"CREATE",
att,
undefined,
- undefined,
- uploaderName ?? undefined,
+ currentUserId, // 세션에서 가져온 실제 user ID
+ currentUserName, // 세션에서 가져온 실제 user name
[targetSystem]
)
}
diff --git a/app/api/revisions/max-serial-no/route.ts b/app/api/revisions/max-serial-no/route.ts
index b202956a..c0bfe5c3 100644
--- a/app/api/revisions/max-serial-no/route.ts
+++ b/app/api/revisions/max-serial-no/route.ts
@@ -1,48 +1,81 @@
import { NextRequest, NextResponse } from 'next/server'
import db from '@/db/db'
-import { revisions, issueStages } from '@/db/schema'
-import { eq, and, sql, desc } from 'drizzle-orm'
+import { revisions, issueStages } from '@/db/schema/vendorDocu'
+import { eq, sql } from 'drizzle-orm'
+import { alias } from 'drizzle-orm/pg-core'
+import { debugLog, debugError, debugSuccess } from '@/lib/debug-utils'
export async function GET(request: NextRequest) {
try {
const { searchParams } = new URL(request.url)
const documentId = searchParams.get('documentId')
-
+
+ debugLog('1. Input documentId:', documentId)
+
if (!documentId) {
+ debugLog('2. documentId is missing, returning 400')
return NextResponse.json(
{ error: 'documentId is required' },
{ status: 400 }
)
}
+ const parsedDocumentId = parseInt(documentId)
+ debugLog('3. Parsed documentId:', parsedDocumentId)
+
// 해당 document의 모든 issueStages와 연결된 revisions에서 최대 serialNo 조회
+ const r = alias(revisions, 'r')
+ const is = alias(issueStages, 'is')
+
+ debugLog('4. Created aliases - r:', r, 'is:', is)
+
const maxSerialResult = await db
.select({
- maxSerialNo: sql<number>`
- GREATEST(
- COALESCE(MAX(CAST(r.serial_no AS INTEGER)), 0),
- COALESCE(MAX(CAST(r.register_serial_no_max AS INTEGER)), 0)
- )
- `.as('max_serial_no')
+ maxSerial: sql<number>`
+ COALESCE(MAX(CAST(${r.serialNo} AS INTEGER)), 0)
+ `,
+ maxRegisterSerial: sql<number>`
+ COALESCE(MAX(CAST(${r.registerSerialNoMax} AS INTEGER)), 0)
+ `
})
- .from(revisions.as('r'))
+ .from(r)
.innerJoin(
- issueStages.as('is'),
- eq(revisions.issueStageId, issueStages.id)
+ is,
+ eq(r.issueStageId, is.id)
)
- .where(eq(issueStages.documentId, parseInt(documentId)))
+ .where(eq(is.documentId, parsedDocumentId))
+
+ debugLog('5. Query result:', maxSerialResult)
+ debugLog('6. Query result length:', maxSerialResult.length)
+ debugLog('7. First result item:', maxSerialResult[0])
+
+ const maxSerialValue = maxSerialResult[0]?.maxSerial || 0
+ const maxRegisterSerialValue = maxSerialResult[0]?.maxRegisterSerial || 0
+
+ debugLog('8. maxSerial value:', maxSerialValue)
+ debugLog('9. maxRegisterSerial value:', maxRegisterSerialValue)
+
+ const maxSerialNo = Math.max(maxSerialValue, maxRegisterSerialValue)
+
+ debugSuccess('10. Final maxSerialNo:', maxSerialNo)
+ debugSuccess('11. Next serialNo:', maxSerialNo + 1)
- const maxSerialNo = maxSerialResult[0]?.maxSerialNo || 0
-
- return NextResponse.json({
+ return NextResponse.json({
maxSerialNo,
nextSerialNo: maxSerialNo + 1,
- documentId: documentId
+ documentId: documentId,
+ debug: {
+ parsedDocumentId,
+ queryResult: maxSerialResult,
+ maxSerialValue,
+ maxRegisterSerialValue
+ }
})
} catch (error) {
- console.error('Error fetching max serial no:', error)
+ debugError('Error fetching max serial no:', error)
+ debugError('Error stack:', error?.stack)
return NextResponse.json(
- { error: 'Failed to fetch max serial number' },
+ { error: 'Failed to fetch max serial number', details: error?.message },
{ status: 500 }
)
}