feat(M01): 로직 목록 원문번호 찾기 · 로직 목록 차례순

- 로직 목록 찾기가 원문번호도 봄(키가 번호꼴이 아니라서)
- 서버 로직 목록을 파일 머리 차례순으로

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016WRFJmmhPi4exAzHgPZHMT
This commit is contained in:
2026-09-20 02:29:38 +09:00
co-authored by Claude Sonnet 5
parent c26f15718d
commit 98fe87402f
3 changed files with 11 additions and 5 deletions
+1 -1
View File
@@ -190,7 +190,7 @@ def logics(book: str, chapter: str, q: str, blocked: int | None) -> list[dict]:
files = cm.load(folder=FOLDER)
whole = cm.mf.Master(files)
out = []
for name, data in _logic_files(files):
for name, data in sorted(_logic_files(files), key=lambda f: f[1].get("차례") or 0):
if (book and data.get("원문") != book) or (chapter and chapter_of(name, data) != chapter):
continue
for row in data.get("") or []:
@@ -15,6 +15,7 @@ export interface ListItem {
book: string;
chapter: string;
key: string;
number: string;
name: string;
blocked: boolean;
reasons: string[];
@@ -65,7 +66,7 @@ export function buildList(onOpen: (item: ListItem) => void): ListHandle {
(!book.value || x.book === book.value) &&
(!chapter.value || x.chapter === chapter.value) &&
(!blockedOnly.checked || x.blocked) &&
(!q || x.key.toLowerCase().includes(q) || x.name.toLowerCase().includes(q)),
(!q || [x.key, x.number, x.name].some((v) => v.toLowerCase().includes(q))),
);
count.textContent = tx("List_Count", { n: shown.length });
list.replaceChildren(...shown.slice(0, 500).map(line));
@@ -90,8 +91,11 @@ export function buildList(onOpen: (item: ListItem) => void): ListHandle {
className: `m01-logic__item${item.id === active ? " is-active" : ""}`,
attrs: { type: "button", title: item.key },
children: [
el("span", { className: "m01-logic__muted", text: `${item.book} ${item.chapter}` }),
el("span", { text: item.name || item.key }),
el("span", {
className: "m01-logic__muted",
text: `${item.book} ${item.chapter} · ${item.number}`,
}),
el("span", { text: item.name || item.number || item.key }),
el("span", { className: "m01-logic__badges", children: badges }),
],
});
@@ -134,6 +138,7 @@ export function buildList(onOpen: (item: ListItem) => void): ListHandle {
book: x.book,
chapter: x.chapter,
key: x.키,
number: x.,
name: x.이름,
blocked: x.blocked,
reasons: x.reasons,
@@ -91,7 +91,8 @@ export async function mountM01Logic(host: HTMLElement, listHost: HTMLElement): P
id,
book: d.book,
chapter: "",
key: d.row.키 || d.row.,
key: d.row.키,
number: d.row.,
name: d.row.이름,
blocked: false,
reasons: [],