This commit is contained in:
2026-07-10 18:12:17 +09:00
parent 50d75fcfcd
commit e3d66e717c
28 changed files with 2542 additions and 99 deletions
+9 -7
View File
@@ -18,18 +18,20 @@ def _role(value: str | None) -> str:
def _stage_from_status(status: str | None) -> tuple[int, int]:
value = status or "NEW"
if value in {"WF1_ANALYZING", "WF1_FAILED"}:
return 1, round(1 / 7 * 100)
order = [
("FILE_UPLOADED", 1),
("WF1", 2),
("WF2", 3),
("WF3", 4),
("WF4", 5),
("WF5", 6),
("WF6", 7),
("WF1_COMPLETE", 2),
("WF2_COMPLETE", 3),
("WF3_COMPLETE", 4),
("WF4_COMPLETE", 5),
("WF5_COMPLETE", 6),
("WF6_COMPLETE", 7),
("DONE", 7),
("CONFIRMED", 7),
]
value = status or "NEW"
stage = 0
for token, idx in order:
if token in value:
+4 -4
View File
@@ -1,6 +1,6 @@
import type { DashboardUser, ProjectItem, Member } from "./B01_Dashboard_Api_Fetch";
export function canEditProject(user: DashboardUser, project: ProjectItem): boolean {
export function canEditProject(user: DashboardUser, _project: ProjectItem): boolean {
if (user.role === "SYSTEM_ADMIN") return true;
if (user.role === "ADMIN") return user.company_id !== null;
return false; // USER는 수정 불가
@@ -16,12 +16,12 @@ export function canAddUser(user: DashboardUser): boolean {
return user.role === "SYSTEM_ADMIN" || user.role === "ADMIN";
}
export function canChangeRole(user: DashboardUser, targetUser: Member | DashboardUser): boolean {
export function canChangeRole(user: DashboardUser, _targetUser: Member | DashboardUser): boolean {
// 역할 변경은 오직 SYSTEM_ADMIN만 가능
return user.role === "SYSTEM_ADMIN";
}
export function canDeleteUser(user: DashboardUser, targetUser: Member | DashboardUser): boolean {
export function canDeleteUser(user: DashboardUser, _targetUser: Member | DashboardUser): boolean {
if (user.role === "SYSTEM_ADMIN") return true;
// ADMIN은 본인 회사의 멤버만 삭제 가능
return user.role === "ADMIN" && user.company_id !== null;
@@ -29,7 +29,7 @@ export function canDeleteUser(user: DashboardUser, targetUser: Member | Dashboar
export function canManageAutomation(
user: DashboardUser,
projectOrAutomation: ProjectItem | { company_id?: number | null },
_projectOrAutomation: ProjectItem | { company_id?: number | null },
): boolean {
return user.role === "SYSTEM_ADMIN" || (user.role === "ADMIN" && user.company_id !== null);
}
-1
View File
@@ -26,7 +26,6 @@ import {
type ProjectItem,
type Member,
type AutomationItem,
type CompanyInfo,
} from "./B01_Dashboard_Api_Fetch";
function L(key: keyof typeof ui_locales): string {
+8 -4
View File
@@ -1,4 +1,4 @@
import { ROUTES } from "@config/config_frontend";
import { CURRENT_PROJECT_ID_KEY, ROUTES, type RoutePath } from "@config/config_frontend";
import { isBlank } from "@util/common_util_validate";
import { navigateTo } from "../A00_Common/router";
import { ui_locales, currentLanguageIndex } from "@ui/ui_template_locale";
@@ -359,7 +359,7 @@ function projectTable(projects: ProjectItem[], currentUser: DashboardUser): HTML
text(project.name),
text(project.region),
text(`${project.progress_percent}%`),
workflow(project.workflow_stage),
workflow(project),
text(formatDate(project.updated_at)),
actCell,
];
@@ -367,7 +367,8 @@ function projectTable(projects: ProjectItem[], currentUser: DashboardUser): HTML
);
}
function workflow(activeStage: number): HTMLElement {
function workflow(project: ProjectItem): HTMLElement {
const activeStage = project.workflow_stage;
const routes: RoutePath[] = [
ROUTES.B03_FILE_INPUT,
ROUTES.B04_WF1_SURFACE,
@@ -388,7 +389,10 @@ function workflow(activeStage: number): HTMLElement {
button.disabled = !enabled;
if (enabled) {
button.classList.add("is-enabled");
button.addEventListener("click", () => navigateTo(route));
button.addEventListener("click", () => {
localStorage.setItem(CURRENT_PROJECT_ID_KEY, project.id);
navigateTo(route);
});
}
box.append(button);
});