feat: spin 백엔드 전체 구현 (근무·프로젝트·인센티브·회계)
build-and-push / build (push) Successful in 39s

- config/db/storage/auth/router/perms: eQMS 규약 미러링, 권한 2-tier
  (관리자 전체 / 구성원 본인·신청만), oauth2-proxy 헤더 인증 + DEV_AUTH mock
- 모델: 구성원/부서, 근무(출퇴근·휴가·공가·초과), 프로젝트(회사/제품/버전·
  작업자portion·담당자·태스크·계약·첨부·분할입금), 인센티브(설정·단계·
  유저배분·분기정산), 회계(거래·세금)
- internal/worktime: 근로기준법 월 집계 엔진
- internal/incentive: BE/non-BE × 계약금/중도금/잔금 3단계 계산 + 시뮬레이션
- 시드 데이터, Go 멀티스테이지 Dockerfile
- ADMIN_GROUPS 기본값 'admin' (전 내부 앱 공통 그룹)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
theorose49
2026-06-28 08:57:35 +09:00
co-authored by Claude Opus 4.8
parent ce4023ca59
commit f83724b995
28 changed files with 3960 additions and 5 deletions
+18 -5
View File
@@ -1,8 +1,21 @@
# Placeholder Dockerfile — nginx-unprivileged 기반 static serve, port 8080.
# 실제 코드 추가 후 본인 stack(Node/Python/Go 등)으로 교체 권장.
FROM nginxinc/nginx-unprivileged:1.27-alpine
# --- build stage ------------------------------------------------------------
FROM golang:1.22-alpine AS build
WORKDIR /src
# 정적 파일 (html/css/js) 또는 SPA build output 을 root 에 복사.
COPY --chown=nginx:nginx . /usr/share/nginx/html/
# Cache dependencies first.
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o /out/server ./cmd/server
# --- runtime stage ----------------------------------------------------------
FROM alpine:3.20
RUN apk add --no-cache ca-certificates && adduser -D -u 10001 app
USER app
WORKDIR /app
COPY --from=build /out/server /app/server
ENV PORT=8080
EXPOSE 8080
ENTRYPOINT ["/app/server"]