platform/lms-adm-fe release promotion snapshot

This commit is contained in:
2026-09-08 06:23:54 +00:00
parent 2157f8eaa2
commit 1afa60e237
2 changed files with 7 additions and 4 deletions
+3 -3
View File
@@ -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="이름을 입력하세요" />
+4 -1
View File
@@ -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회 제어 시간 (분)">