feat(M02): 기본 층 = 개인 — 층 없는 주소 · 사전조합도 · 회사 없으면 마스터(134-4)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SE9MxeXTu2uaDZ55BJowAY
This commit is contained in:
2026-10-09 15:03:30 +09:00
co-authored by Claude Opus 5.5
parent bf9472d8f3
commit 2640fb4c60
4 changed files with 22 additions and 8 deletions
@@ -34,11 +34,17 @@ const ROOTS: Root[] = ["master", "company", "personal"];
export const layerOfRoot = (root: Root): ManageLayer => (root === "master" ? "system" : root);
/** 주소 인자에서 진입 — 모르는 값 · 없음 = 마스터 · 구조물 조합 */
export function entryFromHash(): Entry {
/** 주소 인자에서 진입 — 층 모르는 값 · 없음 = 기본 층(134-4 · 개인 · 회사 없으면 마스터 · 사용자를 안 주면
* 마스터) · 열 곳 없음 = 구조물 조합 */
export function entryFromHash(user?: SessionUser | null): Entry {
const query = currentQuery();
const raw = query.get("root") ?? query.get("layer");
const root: Root = raw === "company" || raw === "personal" ? raw : "master";
const root: Root =
raw === "master" || raw === "company" || raw === "personal"
? raw
: user === undefined
? "master"
: defaultRoot(user);
const open = OPENS.find((one) => one === query.get("open")) ?? "구조물조합";
const owner = root === "master" ? null : query.get("owner") || null;
const pre = ROOTS.find((one) => one === query.get("pre")) ?? null;
@@ -52,7 +52,7 @@ const NEW_ASK =
export async function renderM02MasterTemplate(root: HTMLElement): Promise<MountedPage> {
const user = await fetchSessionUser().catch(() => null);
const entry = entryFromHash();
const entry = entryFromHash(user); // 134-4 — 해시에 층 없음 = 개인(회사 없으면 마스터)
const company = viewCompany(entry, user); // 볼 회사(시스템 관리자는 고른 회사)
let layer = layerOfRoot(entry.root);
// 회사 층 주인 = 볼 회사 · 자기 층 주인을 적어도 자기 층 · 회사 없는 사람의 회사 · 개인 = 마스터(단추 자리에 안내)