web: migrate health notifications to js_interop; add browser hook
Some checks failed
Flutter Test & Quality Check / Test on macos-latest (push) Has been cancelled
Flutter Test & Quality Check / Test on ubuntu-latest (push) Has been cancelled
Flutter Test & Quality Check / Build APK (push) Has been cancelled

- Replace dart:js with package:js in health_check_service_web.dart\n- Implement showHealthCheckNotification in web/index.html\n- Pin js dependency to ^0.6.7 for flutter_secure_storage_web compatibility

auth: harden AuthInterceptor + tests

- Allow overrideAuthRepository injection for testing\n- Normalize imports to package: paths\n- Add unit test covering token attach, 401→refresh→retry, and failure path\n- Add integration test skeleton gated by env vars

ui/data: map User.companyName to list column

- Add companyName to domain User\n- Map UserDto.company?.name\n- Render companyName in user_list

cleanup: remove legacy equipment table + unused code; minor warnings

- Remove _buildFlexibleTable and unused helpers\n- Remove unused zipcode details and cache retry constant\n- Fix null-aware and non-null assertions\n- Address child-last warnings in administrator dialog

docs: update AGENTS.md session context
This commit is contained in:
JiWoong Sul
2025-09-08 17:39:00 +09:00
parent 519e1883a3
commit 655d473413
55 changed files with 2729 additions and 4968 deletions

View File

@@ -32,6 +32,9 @@ mixin _$User {
/// 전화번호 (선택, "010-1234-5678" 형태)
String? get phone => throw _privateConstructorUsedError;
/// 소속 회사명 (UI 표시용, 백엔드 미저장)
String? get companyName => throw _privateConstructorUsedError;
/// UI용 필드들 (백엔드 저장하지 않음)
String get username => throw _privateConstructorUsedError; // UI 호환용
UserRole get role => throw _privateConstructorUsedError; // UI 호환용
@@ -58,6 +61,7 @@ abstract class $UserCopyWith<$Res> {
String name,
String? email,
String? phone,
String? companyName,
String username,
UserRole role,
bool isActive,
@@ -84,6 +88,7 @@ class _$UserCopyWithImpl<$Res, $Val extends User>
Object? name = null,
Object? email = freezed,
Object? phone = freezed,
Object? companyName = freezed,
Object? username = null,
Object? role = null,
Object? isActive = null,
@@ -107,6 +112,10 @@ class _$UserCopyWithImpl<$Res, $Val extends User>
? _value.phone
: phone // ignore: cast_nullable_to_non_nullable
as String?,
companyName: freezed == companyName
? _value.companyName
: companyName // ignore: cast_nullable_to_non_nullable
as String?,
username: null == username
? _value.username
: username // ignore: cast_nullable_to_non_nullable
@@ -143,6 +152,7 @@ abstract class _$$UserImplCopyWith<$Res> implements $UserCopyWith<$Res> {
String name,
String? email,
String? phone,
String? companyName,
String username,
UserRole role,
bool isActive,
@@ -166,6 +176,7 @@ class __$$UserImplCopyWithImpl<$Res>
Object? name = null,
Object? email = freezed,
Object? phone = freezed,
Object? companyName = freezed,
Object? username = null,
Object? role = null,
Object? isActive = null,
@@ -189,6 +200,10 @@ class __$$UserImplCopyWithImpl<$Res>
? _value.phone
: phone // ignore: cast_nullable_to_non_nullable
as String?,
companyName: freezed == companyName
? _value.companyName
: companyName // ignore: cast_nullable_to_non_nullable
as String?,
username: null == username
? _value.username
: username // ignore: cast_nullable_to_non_nullable
@@ -221,6 +236,7 @@ class _$UserImpl implements _User {
required this.name,
this.email,
this.phone,
this.companyName,
this.username = '',
this.role = UserRole.staff,
this.isActive = true,
@@ -246,6 +262,10 @@ class _$UserImpl implements _User {
@override
final String? phone;
/// 소속 회사명 (UI 표시용, 백엔드 미저장)
@override
final String? companyName;
/// UI용 필드들 (백엔드 저장하지 않음)
@override
@JsonKey()
@@ -267,7 +287,7 @@ class _$UserImpl implements _User {
@override
String toString() {
return 'User(id: $id, name: $name, email: $email, phone: $phone, username: $username, role: $role, isActive: $isActive, createdAt: $createdAt, updatedAt: $updatedAt)';
return 'User(id: $id, name: $name, email: $email, phone: $phone, companyName: $companyName, username: $username, role: $role, isActive: $isActive, createdAt: $createdAt, updatedAt: $updatedAt)';
}
@override
@@ -279,6 +299,8 @@ class _$UserImpl implements _User {
(identical(other.name, name) || other.name == name) &&
(identical(other.email, email) || other.email == email) &&
(identical(other.phone, phone) || other.phone == phone) &&
(identical(other.companyName, companyName) ||
other.companyName == companyName) &&
(identical(other.username, username) ||
other.username == username) &&
(identical(other.role, role) || other.role == role) &&
@@ -292,8 +314,8 @@ class _$UserImpl implements _User {
@JsonKey(includeFromJson: false, includeToJson: false)
@override
int get hashCode => Object.hash(runtimeType, id, name, email, phone, username,
role, isActive, createdAt, updatedAt);
int get hashCode => Object.hash(runtimeType, id, name, email, phone,
companyName, username, role, isActive, createdAt, updatedAt);
/// Create a copy of User
/// with the given fields replaced by the non-null parameter values.
@@ -317,6 +339,7 @@ abstract class _User implements User {
required final String name,
final String? email,
final String? phone,
final String? companyName,
final String username,
final UserRole role,
final bool isActive,
@@ -341,6 +364,10 @@ abstract class _User implements User {
@override
String? get phone;
/// 소속 회사명 (UI 표시용, 백엔드 미저장)
@override
String? get companyName;
/// UI용 필드들 (백엔드 저장하지 않음)
@override
String get username; // UI 호환용