feat(frontend): 승인 템플릿 API 통합 및 디버그 로그인 확장

- docs 폴더 문서를 최신 API 계약으로 갱신하고 가이드를 다듬었다\n- approvals data/presentation 레이어를 API v4 스펙에 맞춰 리팩터링했다\n- approver 자동완성 위젯을 신규 공유 레포지토리에 맞춰 교체하고 UX를 보강했다\n- inventory/rental 페이지 테이블 초기화 시 승인 기준 연동을 정비했다\n- 로그인 페이지 디버그 버튼을 tera/exa 계정으로 분리해 QA 로그인을 단순화했다\n- get_it 등록과 테스트 케이스를 신규 공유 리포지토리에 맞춰 업데이트했다
This commit is contained in:
JiWoong Sul
2025-11-05 17:05:38 +09:00
parent 3e83408aa7
commit fa0bda5ea4
28 changed files with 1102 additions and 545 deletions

View File

@@ -263,11 +263,22 @@ class _LoginPageState extends State<LoginPage> {
),
if (kDebugMode) ...[
const SizedBox(height: 12),
// QA 요청: 테스트 로그인 버튼을 테마 색상과 굵은 서체로 강조하여 피드백 반영.
// QA 요청: 디버그 로그인 버튼을 테마 색상과 굵은 서체로 강조하여 피드백 반영.
ShadButton.ghost(
onPressed: isLoading ? null : _handleTestLogin,
onPressed: isLoading ? null : _handleTeraLogin,
child: Text(
'테스트 로그인',
'tera로그인',
style: theme.textTheme.small.copyWith(
color: theme.colorScheme.primary,
fontWeight: FontWeight.w600,
),
),
),
const SizedBox(height: 8),
ShadButton.ghost(
onPressed: isLoading ? null : _handleExaLogin,
child: Text(
'exa로그인',
style: theme.textTheme.small.copyWith(
color: theme.colorScheme.primary,
fontWeight: FontWeight.w600,
@@ -304,17 +315,37 @@ class _LoginPageState extends State<LoginPage> {
);
}
/// 디버그 모드에서 테스트 계정으로 실서버 로그인한다.
void _handleTestLogin() {
/// 디버그 모드에서 테라(Tera) 계정으로 실서버 로그인한다.
void _handleTeraLogin() {
if (isLoading) {
return;
}
const testIdentifier = 'terabits';
const testPassword = '123456';
const teraIdentifier = 'terabits';
const teraPassword = '123456';
idController.text = testIdentifier;
passwordController.text = testPassword;
idController.text = teraIdentifier;
passwordController.text = teraPassword;
setState(() {
rememberMe = false;
errorMessage = null;
});
_handleSubmit();
}
/// 디버그 모드에서 엑사(Exa) 계정으로 실서버 로그인한다.
void _handleExaLogin() {
if (isLoading) {
return;
}
const exaIdentifier = 'exabits';
const exaPassword = '123456';
idController.text = exaIdentifier;
passwordController.text = exaPassword;
setState(() {
rememberMe = false;