diff --git a/src/main/java/com/dog/dognation/config/AdminSeedData.java b/src/main/java/com/dog/dognation/config/AdminSeedData.java
new file mode 100644
index 0000000..6f0cad8
--- /dev/null
+++ b/src/main/java/com/dog/dognation/config/AdminSeedData.java
@@ -0,0 +1,39 @@
+package com.dog.dognation.config;
+
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.context.annotation.Profile;
+import org.springframework.core.annotation.Order;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Component;
+
+/**
+ * local 프로파일 전용 관리자 시드 (앱 시드 {@code LocalSeedData} 와 분리).
+ * 관리자 콘솔을 개발자 로그인(admin@dog.com)으로 확인하기 위한 관리자 + 더미 회원.
+ */
+@Component
+@Profile("local")
+@Order(1) // 앱 시드(LocalSeedData)보다 먼저 관리자/회원을 채워둔다
+public class AdminSeedData implements CommandLineRunner {
+
+ private final JdbcTemplate jdbc;
+
+ public AdminSeedData(JdbcTemplate jdbc) {
+ this.jdbc = jdbc;
+ }
+
+ @Override
+ public void run(String... args) {
+ insertUser("admin@dog.com", "관리자", "PREMIUM", "ADMIN");
+ // 회원관리 표에 보일 더미 회원
+ insertUser("dol@dog.com", "돌이", "FREE", "USER");
+ insertUser("byeol@dog.com", "별이", "AD_FREE", "USER");
+ System.out.println("[admin seed] admin@dog.com(ADMIN) + 더미 회원 준비 완료");
+ }
+
+ private void insertUser(String email, String nickname, String tier, String role) {
+ jdbc.update("""
+ INSERT INTO users(email, nickname, subscription_tier, status, role, provider, created_at, updated_at)
+ VALUES (?, ?, ?, 'ACTIVE', ?, 'GOOGLE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
+ """, email, nickname, tier, role);
+ }
+}
diff --git a/src/main/java/com/dog/dognation/config/DevAuthController.java b/src/main/java/com/dog/dognation/config/DevAuthController.java
new file mode 100644
index 0000000..f912255
--- /dev/null
+++ b/src/main/java/com/dog/dognation/config/DevAuthController.java
@@ -0,0 +1,57 @@
+package com.dog.dognation.config;
+
+import com.dog.dognation.auth.dto.LoginResponse;
+import com.dog.dognation.auth.dto.MemberResponse;
+import com.dog.dognation.common.exception.ApiException;
+import com.dog.dognation.domain.auth.AuthSession;
+import com.dog.dognation.domain.auth.AuthSessionRepository;
+import com.dog.dognation.domain.user.User;
+import com.dog.dognation.domain.user.UserRepository;
+import org.springframework.context.annotation.Profile;
+import org.springframework.http.HttpStatus;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.time.Duration;
+import java.time.OffsetDateTime;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * 개발자 로그인 — local 프로파일 전용. 구글/애플 없이 이메일로 세션을 발급한다.
+ * 관리자 콘솔을 로컬에서 확인하기 위한 용도(예: admin@dog.com). 운영 빌드에는 등록되지 않는다.
+ */
+@Profile("local")
+@RestController
+@RequestMapping("/api/auth")
+public class DevAuthController {
+
+ private static final Duration TTL = Duration.ofDays(30);
+
+ private final UserRepository userRepository;
+ private final AuthSessionRepository sessionRepository;
+
+ public DevAuthController(UserRepository userRepository, AuthSessionRepository sessionRepository) {
+ this.userRepository = userRepository;
+ this.sessionRepository = sessionRepository;
+ }
+
+ /** 이메일로 세션 발급 (검증 없음, local 전용). */
+ @PostMapping("/dev-login")
+ @Transactional
+ public LoginResponse devLogin(@RequestBody Map body) {
+ String email = body.get("email");
+ if (email == null || email.isBlank()) {
+ throw new ApiException(HttpStatus.BAD_REQUEST, "email 이 필요합니다.");
+ }
+ User user = userRepository.findByEmail(email)
+ .orElseThrow(() -> new ApiException(HttpStatus.NOT_FOUND, "회원을 찾을 수 없습니다: " + email));
+
+ String token = UUID.randomUUID().toString().replace("-", "");
+ sessionRepository.save(AuthSession.issue(token, user, true, OffsetDateTime.now().plus(TTL)));
+ return new LoginResponse(token, TTL.getSeconds(), MemberResponse.from(user));
+ }
+}