platform/lms-adm-fe release promotion snapshot
This commit is contained in:
@@ -12,7 +12,7 @@ const REMEMBERED_EMAIL_STORAGE_KEY = 'atnmy.lms.admin.login.rememberedEmail';
|
||||
const DEFAULT_EMAIL = '';
|
||||
const DEFAULT_PASSWORD = '';
|
||||
const AUTH_BASE_URL = (import.meta.env.VITE_ATNMY_AUTH_URL ?? import.meta.env.VITE_ADS_IDE_AUTH_URL ?? 'https://auth.autonomystudio.net').replace(/\/+$/, '');
|
||||
const LAUNCHER_API_BASE_URL = (import.meta.env.VITE_ATNMY_STDO_API_BASE_URL ?? 'http://localhost:4200').replace(/\/+$/, '');
|
||||
const LAUNCHER_API_BASE_URL = (import.meta.env.VITE_LAUNCHER_API_BASE_URL ?? 'https://portal-api.autonomystudio.net/api').replace(/\/+$/, '');
|
||||
const EMAIL_PATTERN = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
||||
|
||||
export function LoginPage({ onLogin }: LoginPageProps) {
|
||||
@@ -275,7 +275,7 @@ function InstructorSignupForm({ onCancel, onComplete }: InstructorSignupFormProp
|
||||
const title = key === 'terms' ? '이용약관' : '개인정보 처리방침';
|
||||
setTermModal({ title, body: '', loading: true });
|
||||
try {
|
||||
const response = await fetch(`${LAUNCHER_API_BASE_URL}/api/terms/${key}`);
|
||||
const response = await fetch(`${LAUNCHER_API_BASE_URL}/terms/${key}`);
|
||||
if (!response.ok) throw new Error('약관을 불러오지 못했습니다.');
|
||||
const payload = await response.json() as { term?: { body?: string } };
|
||||
setTermModal({ title, body: payload.term?.body || '등록된 약관 내용이 없습니다.', loading: false });
|
||||
@@ -296,7 +296,7 @@ function InstructorSignupForm({ onCancel, onComplete }: InstructorSignupFormProp
|
||||
<span className="h-3 w-px bg-[#d8dde8]" />
|
||||
<h2 className="text-[26px] font-black tracking-[0] text-[#4f46e5]">강사 회원가입</h2>
|
||||
</div>
|
||||
<p className="mt-2.5 text-[13px] font-bold text-[#6b7280]">조직에서 받은 강사 가입 코드를 입력해주세요.</p>
|
||||
<p className="mt-2.5 text-[13px] font-bold text-[#6b7280]">강사 가입 코드를 입력해주세요.</p>
|
||||
</div>
|
||||
<form className="grid gap-3" onSubmit={handleSubmit}>
|
||||
<SignupInput label="이름" value={name} onChange={setName} placeholder="이름을 입력하세요" />
|
||||
|
||||
@@ -803,7 +803,7 @@ export function PlatformsPage({ session }: { session: AuthSession }) {
|
||||
<div className="flex items-start justify-between gap-4 border-b border-[#c7d2e0] bg-[#f8fbff] px-5 py-4">
|
||||
<div>
|
||||
<h3 className="text-[16px] font-black text-[#111827]">{settingsTarget.name}</h3>
|
||||
<p className="mt-1 text-[13px] font-semibold text-[#64748b]">센서 드라이버 및 위치 설정</p>
|
||||
<p className="mt-1 text-[13px] font-semibold text-[#64748b]">차량 제원 및 제어 시간 설정</p>
|
||||
</div>
|
||||
<button className="grid h-8 w-8 place-items-center rounded-md text-[#64748b] hover:bg-[#f1f5f9] hover:text-[#111827]" type="button" onClick={() => setSettingsTarget(null)} aria-label="닫기" title="닫기">
|
||||
<X size={17} aria-hidden="true" />
|
||||
@@ -835,6 +835,7 @@ export function PlatformsPage({ session }: { session: AuthSession }) {
|
||||
</div>
|
||||
</SettingsSection>
|
||||
|
||||
<div hidden>
|
||||
<SettingsSection title="부착 센서">
|
||||
{settingsSensors.map((sensor, index) => (
|
||||
<SensorSettingRow
|
||||
@@ -866,6 +867,8 @@ export function PlatformsPage({ session }: { session: AuthSession }) {
|
||||
</div>
|
||||
</SettingsSection>
|
||||
|
||||
</div>
|
||||
|
||||
<SettingsSection title="제어 시간 설정">
|
||||
<div className="grid gap-3 md:grid-cols-2">
|
||||
<SettingsField label="1회 제어 시간 (분)">
|
||||
|
||||
Reference in New Issue
Block a user