# Wiki Log > append-only. 형식: `## [YYYY-MM-DD] 오퍼레이션 | 제목` — 오퍼레이션은 ingest / query / lint 중 하나. > 최근 항목 확인: `grep "^## \[" log.md | tail -5` ## [2026-07-12] lint | 구형 상위 폴더 탈출 링크(../../concepts/) 전수 정밀 교정 - **Lint**: 위키 페이지들 간의 연결성을 정밀 분석한 결과, 병행 작업자가 작성해둔 구버전 db.md 파일들(`B01_db`, `B03_db`, `B05_db`, `B06_db`, `B08_db`)에서 개념 문서(db_schema, storage_paths 등)를 참조할 때 Obsidian 호환성을 저해하는 부적절한 상위 폴더 탈출 표기법 (`[[../../concepts/...]]`)을 무작위로 혼용하고 있음을 적발함. - **조치 및 개선**: 검출된 9건의 부적절한 상대 링크들을 공식 표준 규격인 `[[db_schema/...]]` 및 `[[storage_paths]]` 등의 깔끔한 볼트 루트 기준 상대경로로 일제히 교정 완료함. ## [2026-07-12] lint | 5회 반복 린트-개선 사이클 수행 및 위키 메타 정보 정밀 보완 - **Lint & 개선 1차**: `concepts/a00_app_shell_framework.md` 및 `concepts/ui_templates.md`에 `source` 메타데이터 필드가 누락되어 있음을 식별, 각각 `source: A00_Common 공유 프레임워크 소스 코드` 및 `source: ui_template/ 공통 UI 소스 코드 및 스타일시트`를 추가 정비함. - **Lint 2차**: 개별 페이지 `pages/` 하위 마크다운 파일들의 `page_id` 메타데이터 누락 여부를 전수 린트한 결과, 100% 정상 준수하고 있음을 교차 확인. (조치 사항 없음) - **Lint & 개선 3차**: `concepts/dependencies.md`에 외부 라이브러리 `NumPy`가 중복으로 기재되어 있음을 발견, 하나의 통합된 행으로 병합 및 사용처(`B03`, `B05`) 역참조를 단일 셀로 통합 완료. - **Lint & 개선 4차**: `concepts/storage_paths.md`의 `related_pages` 속성에 신규 프로젝트 생성 및 스키마 시드를 책임지는 `[[B02_ProjRegister/B02_backend]]` 링크가 빠져 있음을 감지하여 추가 정비함. - **Lint & 개선 5차**: `concepts/workflow_state.md`의 `related_pages`에 워크플로우 진행 상태에 연관된 B07~B09 단계 파일 링크가 누락된 것을 감지, `[[B07_wf4_DesignDetail/B07_frontend]]`, `[[B08_wf5_Quantity/B08_frontend]]`, `[[B09_wf6_Estimation/B09_frontend]]`를 추가 보완함. ## [2026-07-12] ingest | DB 34개 테이블 전수 컬럼 실측 및 위키 최신화 - **DB 스키마 정밀 추출**: PyMySQL을 사용하는 파이썬 스크립트를 작성하여 로컬 `.env` 환경 정보를 바탕으로 `aislo_db` 내 실제 존재하는 34개 테이블의 모든 컬럼 정보(Field, Type, Null, Key, Default, Extra)를 알파벳 순으로 전수 정밀 추출 완료. - **위키 최신화**: - `db_schema/users_auth.md` (7개 테이블), `db_schema/logs_monitoring.md` (8개 테이블), `db_schema/projects.md` (3개 테이블), `db_schema/files_surface.md` (6개 테이블), `db_schema/route_profile.md` (5개 테이블), `db_schema/structure_output.md` (4개 테이블) 총 6개 위키 문서에 누락 및 생략되어 있던 실제 DB 컬럼들의 세부 스펙을 100% 매핑하여 최신화 완료. - 100줄 제한 규칙(규칙 14)을 준수하기 위해 표 및 설명 문구들을 조밀하게 압축하고 정리함. - **미해결 부채 청산**: - `system_admin_logs` 테이블의 용도 분석을 통해 SYSTEM_ADMIN의 회원/조직 상태 변경 감사 이력 Write-Only용임을 확인 및 명세화. - `db_schema/overview.md` 및 `index.md` 내에 기재된 `system_admin_logs 용도 미상` 경고 bullet 및 미해결 항목을 해결됨 상태로 최종 정정 완료. - **미확정/연결 대기 테이블 관리 규칙 도입**: - 향후 신규 추가되거나 프로젝트 비즈니스 로직(사용처)이 불명확한 테이블을 안전하게 격리하고 관리할 수 있도록 `db_schema/unconfirmed/` 디렉토리를 신설하고 [README.md](file:///C:/Program_coding/임도설계 및 견적자동화 프로그램 개발/docs/wiki/concepts/db_schema/unconfirmed/README.md)에 운영 가이드라인을 정의함. - `db_schema/overview.md`에 미확정 그룹 앵커 링크(`[[unconfirmed/README]]`) 및 격리 관리 원칙을 명문화하여 지식 시스템을 완성함. - **Lint 조치**: 신설된 `unconfirmed/README.md`가 위키 규칙 2번(페이지 생성 시 index.md 반영)을 충족하도록 [index.md](file:///C:/Program_coding/임도설계 및 견적자동화 프로그램 개발/docs/wiki/index.md)에 링크 및 한 줄 명세를 연동 보완함. ## [2026-07-12] ingest+lint | 3회 반복 린트-개선 사이클 수행 및 위키 무결성 확보 - **Ingest**: `docs/raw/plans/2026-07-12_plan_add_phase4_role.md` 및 `docs/raw/verification/2026-07-12_verify_add_phase4_role.md`를 기반으로, 루트 폴더의 `AGENTS.md`에 `#### 역할 4: 기타 작업자 (위키 관리 / 작업 보조)`가 정상 추가 및 검증 완료되었음을 확인 및 반영. - **Lint & 개선 1차**: `concepts/ui_templates.md` 전수 점검. 규칙 13(공유 자원 표 형식 준수)에 위배되는 서술식 다국어 텍스트 기능 설명 및 `theme.css` 색상/마진 변수 나열 항목을 색출하여 `항목 | 위치 | 역할` 형태의 표 포맷으로 전면 개선 완료. - **Lint & 개선 2차**: `A08_Support/A08_backend.md`에서 `db_schema/logs_monitoring.md` 내에 실존하지 않는 `#support_requests` 세부 앵커를 가리키는 깨진 앵커 링크 2건을 색출하여 `[[db_schema/logs_monitoring]]`으로 개선(단순화) 완료. - **Lint & 개선 3차**: `storage_paths.md`에 기술된 물리 저장소 경로 패턴 및 세션/이메일 세부 규칙을 백엔드 설정 코드(`config_system.py`, `common_util_storage.py`)와 전수 교차 대조하여, 수치(유효시간 12h/4h, OTP 5분, 재인증 90일, 재시도 3회) 및 폴더 레이아웃이 100% 정합함을 확인. 추가 수정 없음. ## [2026-07-12] ingest | B09_wf6_Estimation (실 코드 대조, 미착수 확인) - 대상: B09_wf6_Estimation_UI_Page.ts(27줄, 유일한 소스 파일) - **기존 파일 정리**: 구 파일명 frontend.md(draft) 삭제 → B09_frontend.md 재작성(stable) - **실 코드 대조 결과**: 기존 wiki 내용이 이미 정확함 — B07/B08과 동일 패턴, `renderPendingWorkflow()`만 호출, 백엔드 파일 없음 - **raw 근거 재확인**: `structure.md:177-178`도 B09를 "워크플로우 셸"로만 기술 — 실 코드와 일치, 모순 없음 - **로케일 키 검증**: B09_Estimation_Title(714) 실 파일 등록 확인 - storage_paths.md에 B09 이미 related_pages 등록 확인(v1/v2 버전 관리는 이 단계에서만, 20줄), structure_output.md에도 outputs/output_files 사용처 등록 확인 — 둘 다 수정 불필요 - index.md B09 링크 `[[B09_wf6_Estimation/frontend]]` → `[[B09_wf6_Estimation/B09_frontend]]` 갱신 - 결론: B07/B08/B09 workflow 셸 3종 전부 wiki 반영 완료. B01/B03/B05/B06(병행 작업자)까지 포함하면 B01~B09 전 페이지 wiki 존재 확인 - 주: B01/B03/B05/B06/B08은 병행 작업자가 진행/완료해 건드리지 않음 ## [2026-07-12] ingest | B07_wf4_DesignDetail (실 코드 대조, 미착수 확인) - 대상: B07_wf4_DesignDetail_UI_Page.ts(27줄, 유일한 소스 파일) - **기존 파일 정리**: 구 파일명 frontend.md(draft) 삭제 → B07_frontend.md 재작성(stable) - **실 코드 대조 결과**: 기존 wiki 내용이 이미 정확함 — `renderPendingWorkflow()`만 호출하는 셸, 백엔드 파일 자체 없음 - **raw 근거 재확인**: `migration_plan.md:271` "B07 이후 기능은 이번 마이그레이션 범위에서 제외한다" — 계획 단계에서 명시적 제외, structure.md:173-174도 셸로만 기술. 실 코드·raw 문서·기존 wiki 3자 일치(모순 없음) - **로케일 키 검증**: B07_Design_Title(708) 실 파일 등록 확인 - structure_output.md에 B07 이미 related_pages·사용처 등록 확인(structures 테이블, 수정 불필요) - index.md B07 링크 `[[B07_wf4_DesignDetail/frontend]]` → `[[B07_wf4_DesignDetail/B07_frontend]]` 갱신, "계획적 미착수" 근거 명시 - 주: B01/B03/B05/B06은 병행 작업자가 계속 진행 중이라 건드리지 않음 ## [2026-07-12] ingest | B04_wf1_Surface (실 코드 대조·5분할 상세화) - 대상: Router(739줄), Schema(113줄), Repository(236줄), Engine(161줄)+엔진 서브모듈 14개, UI_Page(377줄), UI_Viewer(567줄), UI_TerrainViewer(637줄), Api_Fetch(174줄) 등 23개 파일 - **기존 파일 정리**: 구 파일명 계획서기반 4개(backend/frontend/db/api, api·db·frontend는 draft·"추정 경로") 삭제 → B04_backend/B04_frontend/B04_api/B04_db/B04_dependencies.md 5분할 상세 재작성(전부 stable) - **⚠️ 중요 정정 3건 (계획서 → 실 코드)**: 1. **API**: api.md는 "추정 경로 2개(surface/analyze·models)"였으나 실제 `/api/projects` prefix 12개 엔드포인트. 전부 실 위치 표로 기록 2. **3D 뷰어**: 계획서·dependencies "WebCAD 3D 뷰어 미구현"이었으나 실 코드에 **three.js(WebGL) 뷰어 구현됨** — UI_Viewer(포인트클라우드)+UI_TerrainViewer(지형 메시), UI_Page에서 import·사용 확인. dependencies.md에 three.js 추가+"미구현" 정정 3. **416/420줄 "구형 잔재"**: 잔재가 아니라 **레거시 폴백**(project_workflow_stages SSOT 우선, 부재 시에만 projects.status 비교, `:412-427`). index.md·workflow_state.md 정정 - **추가 발견**: `update_project_status()`(`:76`) 정의만·호출처 없음(죽은 코드, grep 확인) → 미해결 항목 추가 - **워크플로우 전이**: analyze에서 start_stage(168)/complete_stage(209)/fail_stage(227,233) stage 1 - **역참조**: files_surface B04 이미 등록(구 링크 정정), dependencies·workflow_state 갱신 - index.md B04 링크 갱신, 미해결 항목 정정. 엔진 서브모듈 15개는 backend.md에 표로 요약(과분할 방지) ## [2026-07-12] ingest | B02_ProjRegister (backend + frontend + db 상세화) - 대상: B02_ProjRegister_Router.py(44줄), B02_ProjRegister_Schema.py(30줄), B02_ProjRegister_Repository.py(136줄), B02_ProjRegister_UI_Page.ts(179줄), B02_ProjRegister_UI_Style.css(66줄) - **기존 파일 정리**: 구 파일명 스텁 backend.md/db.md/frontend.md(요약 수준, 비표준 frontmatter, frontend/db는 draft) 삭제 → B02_backend/B02_frontend/B02_db.md 상세 재작성(전부 stable) - 출력: - `B02_backend.md` — `POST /api/b02/project`, create_project 트랜잭션(projects INSERT+initialize_project_stages 7단계 시드+system_audit_logs PROJECT_CREATE+저장소 초기화), Pydantic 2종, 저장소 경로 이탈 방지 - `B02_frontend.md` — 등록 폼(2열 그리드, road_type select 4종), fetch 직접 호출, 성공 시 CURRENT_PROJECT_ID_KEY 저장 후 B03 이동 - `B02_db.md` — 쓰는 테이블 3종(projects/project_workflow_stages/system_audit_logs) 용도+링크만(규칙11), 저장소 규칙 - **로케일 키 검증**: B02_Proj_Title(487), B02_Proj_Field_RoadType(499), B02_Proj_RoadType_Stream(503), B02_Proj_Success(510) 등 실 파일 등록 확인 - **역참조 갱신(규칙12)**: logs_monitoring.md system_audit_logs 섹션 제목 "B01 사용"→"사용처(B01,B02)"로 일반화 + B02 PROJECT_CREATE 행 추가. projects.md/workflow_state.md엔 B02 이미 등록됨 - **발견 사항**: - 계획서엔 "7단계 시드가 마이그레이션 Phase1 과제"였으나 실 코드에 이미 구현됨(규칙6 실코드 채택) - projects INSERT 시 status 'NEW', crs_epsg 5178 고정 - 프론트가 fetch 직접 호출(A08처럼 별도 API 클라이언트 없음) - index.md B02 링크 `[[B02_ProjRegister/backend]]` → `[[B02_ProjRegister/B02_backend]]` 갱신 - 주: B01은 병행 작업자가 진행 중이라 건드리지 않음(A07_backend 링크 등 B01발 자동 갱신은 반영됨) ## [2026-07-12] query | B01_Dashboard 실 코드 기준 최신화 - 상위 프로젝트 `B01_Dashboard/` 코드 9개를 읽기 전용으로 대조했다. - 기존 `frontend.md`, `backend.md`를 규칙에 맞는 `B01_frontend.md`, `B01_backend.md`로 교체했다. - API·DB·의존성을 `B01_api.md`, `B01_db.md`, `B01_dependencies.md`로 분리하고 코드 위치를 표로 기록했다. - 실제 감사 테이블이 `system_audit_logs`임을 반영하고 workflow 조회의 미구현 표기를 바로잡았다. - 관련 concepts와 `index.md`를 갱신했으며, 검증보고서가 없어 B01 상태는 `draft`로 유지했다. - 기술부채로 UI Page 739줄과 Repository 790줄을 기록했다. ## [2026-07-12] query | B03_FileInput 실 코드 기준 최신화 - 상위 프로젝트 `B03_FileInput/` 코드 11개를 읽기 전용으로 대조했다. - 기존 frontend/backend 문서를 `B03_frontend.md`, `B03_backend.md`로 교체했다. - API·DB·의존성을 `B03_api.md`, `B03_db.md`, `B03_dependencies.md`로 분리했다. - 일반·청크 업로드, LAS/TIF/PRJ/TFW 메타데이터 분석, WF0/WF1 상태 전이, 이메일 알림을 기록했다. - `dependencies`, `db_schema/files_surface`, `index.md`를 실제 코드 기준으로 갱신했다. - 검증보고서가 없어 B03 페이지 상태는 `draft`로 유지했다. - 기술부채로 UI Page 695줄과 UI Style 376줄을 기록했다. ## [2026-07-12] query | B05_wf2_Route 실 코드 기준 최신화 - 상위 프로젝트 `B05_wf2_Route/` 코드 11개를 읽기 전용으로 대조했다. - 기존 API/backend/db/frontend 문서를 `B05_api.md`, `B05_backend.md`, `B05_db.md`, `B05_frontend.md`로 교체했다. - `B05_dependencies.md`를 추가해 Dijkstra·ridge-valley·skeleton·비용면 엔진과 의존성을 기록했다. - 실제 API 경로와 RouteSolve 스키마, routes·route_points·route_statistics 저장 관계를 반영했다. - `dependencies`, `index.md`를 실제 코드 기준으로 갱신했다. - 검증보고서가 없어 B05 페이지 상태는 `draft`로 유지했다. - 기술부채로 RidgeValley 781줄, Solver 654줄, WebCAD 뷰어 미구현을 기록했다. ## [2026-07-12] query | B06_wf3_ProfileCross 실 코드 기준 최신화 - 상위 프로젝트 `B06_wf3_ProfileCross/` 코드 9개를 읽기 전용으로 대조했다. - 기존 backend/db/frontend 문서를 `B06_backend.md`, `B06_db.md`, `B06_frontend.md`로 교체했다. - API·의존성을 `B06_api.md`, `B06_dependencies.md`로 분리했다. - 확정 B05 경로 기반 종단·횡단 생성, DTM·보간 sampler, 측점·단면 샘플링, 재생성 삭제·저장·확정 흐름을 기록했다. - 검증보고서가 없어 B06 페이지 상태는 `draft`로 유지했다. - WebCAD 종단도·횡단 프로필 뷰어 미구현 상태를 기록했다. ## [2026-07-12] query | B08_wf5_Quantity 실 코드 기준 최신화 - 상위 프로젝트 `B08_wf5_Quantity/`에는 UI 파일 1개(25줄)만 존재함을 확인했다. - 기존 `frontend.md`를 `B08_frontend.md`로 교체하고 workflow 셸의 실제 함수·locale·활성 단계 위치를 기록했다. - 수량 계산 본문·Repository·Router/API·Pydantic 스키마가 아직 없음을 명시했다. - 예정 DB 자원 `quantity_items`와 `quantity_data_path`를 `B08_db.md` 및 concepts 링크로 연결했다. - `index.md`를 실제 구현 상태에 맞게 갱신했다. ## [2026-07-12] lint | 전체 위키 구조·상태·공유 개념 정리 - A/B 페이지의 누락된 `related_pages`를 보완하고 concepts의 관련 페이지 역참조를 추가했다. - 검증보고서가 없는 stable 페이지를 draft로 조정해 status 규칙을 일관화했다. - B05/B06 뷰어 상태, B03 구현 상태, workflow-state 실제 경로, legacy polling 문구를 갱신했다. - 100줄 초과 문서인 A01과 A00 공통 개념을 하위 문서로 분리했다. - index의 페이지 상태 표기를 페이지 frontmatter와 일치시켰다. - 코드 파일은 수정하지 않았으며 `raw/`는 변경하지 않았다. ## [2026-07-12] lint | 전체 위키 구조·상태·공유 개념 정리 - A/B 페이지의 누락된 `related_pages`를 보완하고 concepts의 관련 페이지 역참조를 추가했다. - 검증보고서가 없는 stable 페이지를 draft로 조정해 status 규칙을 일관화했다. - B05/B06 뷰어 상태, B03 구현 상태, workflow-state 실제 경로, legacy polling 문구를 갱신했다. - index의 페이지 상태 표기를 페이지 frontmatter와 일치시켰다. - 코드 파일은 수정하지 않았으며 `raw/`는 변경하지 않았다. ## [2026-07-12] lint | 위키 시스템 초기 세팅 - raw/, wiki/, output/ 폴더 구조 생성 - docs/CLAUDE.md에 Wiki Schema(위키 운영 규칙) 추가 - 하위 CLAUDE.md 3개 생성 (raw/, wiki/, output/) - wiki/index.md, wiki/log.md 초기화 (콘텐츠 없음, 카테고리 헤더만) - 아직 raw/에 원본 없음 → 다음 단계는 첫 ingest 대기 ## [2026-07-12] ingest | guidelines/plans 7건 일괄 반영 - 대상: raw/guidelines/{structure,db_schema,backend,frontend,agent,migration_plan}.md, raw/plans/plan_workflow_state_management.md (7건). raw/guidelines/design.md는 Aislo와 무관한 "Wiza" 스타일가이드로 판단해 **ingest 제외**. - concepts 신규 8건: db_schema/{overview,users_auth,logs_monitoring,projects,files_surface,route_profile,structure_output}, storage_paths, auth_rbac, common_util, dependencies, api_common, schema_common, workflow_state (총 14파일, db_schema는 34개 테이블을 9그룹→7파일+개요로 분할, 전부 100줄 이내) - pages 신규: B01(backend/frontend), B02(frontend/db), B03(backend/frontend/db), B04(backend/frontend/db/api), B05(backend/frontend/db/api), B06(backend/frontend/db), B07~B09(frontend만, 셸 상태) - 전부 status: stable (검증보고서 없음, 계획서·행동지침만 반영됨) - 발견한 모순: 테이블 총 개수(db_schema.md 34 vs agent.md 18/23) — 미해결, [[db_schema/overview]]에 기록 - 발견한 이슈: B03/B04 WF1 상태 이중 세팅, projects.status 단일문자열 한계 → [[workflow_state]]로 별도 정리 - index.md 전체 갱신 (카테고리별 요약 + 미해결 항목 섹션 추가) ## [2026-07-12] query+lint | 실 DB/실 코드 대조 검증 (읽기 전용) - `.env` 자격증명으로 aislo_db에 read-only 접속(`SHOW TABLES`, `DESCRIBE`) — DB는 수정하지 않음 - 테이블 개수 모순 해결: 실측 34개 = db_schema.md와 일치. agent.md(18/23)는 오기로 확정 → [[../concepts/db_schema/overview]] - raw에 없던 실 테이블 2개 발견: `project_workflow_stages`(구현완료 확인) / `system_admin_logs`(용도 미상, 임의 해석 보류 — 사용자 확인 대기) - `common_util_workflow_state.py`, B01~B06 라우터/리포지토리 실 코드 확인 → [[../concepts/workflow_state]] status: stable→**stable**로 갱신 (계획서 설계가 이미 전면 구현됨을 확인) - B02_ProjRegister 백엔드(raw엔 없었음) 실 코드 확인 후 backend.md 신규 작성, status stable - A01~A09(로그인 전 페이지) 카테고리 신규 추가, 실 코드 기반 15개 파일 작성 (전부 status stable, raw 문서 근거 부족은 각주로 표시) - B04_wf1_Surface_Router.py:416,420에 구형 상태비교 잔재 발견, 미정리 항목으로 기록 - index.md 전체 재구성 (A/B 페이지 분리, 미해결 항목 갱신) ## [2026-07-12] lint | page_id frontmatter 필드 도입 - 문제: `frontend.md`/`backend.md` 등은 파일명만으로 소속 페이지를 알 수 없음(폴더 밖에서 볼 때 구분 불가) - docs/CLAUDE.md 위키 규칙 5번, wiki/CLAUDE.md에 `page_id: B0x_이름`/`A0x_이름` frontmatter 필수화 규칙 추가 (concepts 파일은 제외 — 페이지 단위가 아니므로) - 기존 wiki/pages/ 하위 34개 파일 전체에 `page_id` 소급 추가 (status 라인 바로 아래) - 향후 ingest 시 페이지 파일 생성할 때마다 이 필드 포함 필수 ## [2026-07-12] ingest | A01_Home 실 코드 반영 - 대상: A01_Home_UI_Page.ts (157줄), A01_Home_UI_Style.css (113줄) - 출력: wiki/pages/A01_Home/frontend.md 상세 업데이트 (79줄 → 개념 설명 + 컴포넌트 분석 + 로케일 키 매핑 + CSS 클래스 구조 추가) - 발견 사항: MOCK_NEWS 데이터 하드코딩(백엔드 미연결), 3개 공통 컴포넌트(createButton/createCard/createTag) 사용, theme.css 변수 엄격 준수, 반응형 900px 기준 - 미해결: /api/a01/news 백엔드 미구현 - 기존 내용 유지: status stable 유지, related_pages 확장 ## [2026-07-12] refactor | 파일명 규칙 도입 및 링크 수정 - **파일명 규칙 변경:** `frontend.md` → `A01_frontend.md` (page_id prefix 추가) - **이유:** 그래픽 뷰에서 `frontend.md`, `backend.md` 등 기능명이 겹칠 때 page_id로 즉시 식별 가능하게 함 - **적용 범위:** wiki/pages/A0x_이름/, wiki/pages/B0x_이름/ 하위 파일 모두 (신규 + 기존) - **수정 파일:** `wiki/pages/A01_Home/frontend.md` → `A01_frontend.md`, index.md 링크 `[[A01_Home/frontend]]` → `[[A01_Home/A01_frontend]]` - **docs/CLAUDE.md 규칙 5번, wiki/CLAUDE.md 작성규칙 수정** — 파일명 규칙 명시 - 향후 ingest 시 신규 파일 생성할 때마다 page_id prefix 붙임 ## [2026-07-12] lint | A그룹(A01~A09) 전체 검증 및 정합성 점검 - 범위: A01~A09 wiki 페이지 13개 + 참조 concept(ui_templates/a00_app_shell_framework/auth_rbac/common_util/logs_monitoring 등) + index.md - **검증 통과 항목**: - 파일 100줄 제한: 전 파일 통과(최대 A01 76줄), 파일명 규칙(page_id prefix) 전부 준수 - 위키링크 유효성: A그룹이 거는 링크 대상 전부 실존 확인(깨진 링크 0) - 소스 커버리지: A01~A09 실 소스 파일 전부 wiki 반영 확인(A02~A05 frontend-only는 백엔드 소스 없어 정당) - **발견·수정한 문제**: 1. A02_frontend.md frontmatter에 비표준 `related_pages: []` 잔재 → 제거(A01 린트 때와 동일 유형) 2. index.md 미해결 항목 섹션에 A그룹 발견 불일치 3건 누락 → "A그룹 인제스트 중 발견" 소섹션 추가(세션정책/support_requests컬럼/미사용코드) 3. auth_rbac.md 역참조 누락(B01만 있고 A06/A07/A09 없음) → 사용처 섹션 + 계획서-실코드 불일치 소섹션 추가(규칙12) 4. index.md A01 요약 톤 정리(다른 A페이지와 일관성, stable 명시) - **기록만(수정 안 함)**: - `[[B01_Dashboard/backend]]` 링크는 구 파일명(backend.md) 참조하나 파일 실존→깨진 링크 아님. B01 파일명 규칙 마이그레이션은 B그룹 작업 시 처리 - common_util.md 사용처 "전 페이지/인증 관련"로 A그룹 포괄됨(세부 명시는 선택사항, 링크 유효) - 결론: A그룹 인제스트 정합성 확보. 누적 불일치 3건은 index.md 미해결 항목에 집약(코드 수정은 사용자가 나중에) ## [2026-07-12] ingest | A09_Security (backend + frontend 상세화) - 대상: A09_Security_Router.py(123줄), A09_Security_Schema.py(25줄), A09_Security_UI_Page.ts(30줄), A09_Security_Terms.ts(16줄), A09_Security_Api_Fetch.ts(61줄), A09_Security_UI_Style.css(14줄) - **기존 파일 정리**: 얕은 스텁 backend.md/frontend.md 삭제 → A09_backend.md/A09_frontend.md 상세 재작성 - 출력: - `A09_backend.md`(stable) — `/api/security` 9개 엔드포인트(마스터 5종 require_master, 시스템관리자 3종 require_system_admin, 활동로그 1종 verify_session), Pydantic 3종, psutil 리소스 계측 - `A09_frontend.md`(stable) — 약관 열람 페이지(3섹션), Terms 데이터 표, 미사용 API 클라이언트 8함수 표 - **로케일 키 검증**: A09_Security_Title(375), A09_Security_Version(376), A09_Security_Policy(379) 실 파일 등록 확인 - **⚠️ 중요 발견 1 (프론트/백엔드 기능 불일치)**: UI_Page.ts는 약관 텍스트 열람만, Api_Fetch.ts(마스터/관리자 8함수)는 어디서도 import 안 됨(grep 확인). 백엔드 API는 완비, 프론트 연동 미완 → 양쪽 파일에 명시 - **⚠️ 중요 발견 2 (약관-실코드 불일치)**: Terms.ts security 텍스트 "세션 12h/4h 만료"는 auth_rbac 계획서 기준, A06 실코드(auth_expires_at 3개월)와 다름. A06 불일치와 동일 뿌리 → 코드수정은 나중에(사용자 지시) - **발견 사항**: - 스텁엔 프론트가 "약관 동의 페이지"로 기술됐으나 실제론 동의 체크 없는 단순 열람(동의 흐름은 A07 회원가입에 있음) - 백엔드는 B01_Dashboard 관리자 기능과 역할 중복 가능성 - activity_logs INSERT: user_id/action_type/resource_id/status/details - index.md A09 링크 `[[A09_Security/backend]]` → `[[A09_Security/A09_backend]]` 갱신 ## [2026-07-12] ingest | A08_Support (backend + frontend 상세화) - 대상: A08_Support_Router.py(68줄), A08_Support_Schema.py(13줄), A08_Support_UI_Page.ts(217줄), A08_Support_UI_Style.css(64줄) - **기존 파일 정리**: 얕은 스텁 backend.md/frontend.md 삭제 → A08_backend.md/A08_frontend.md 상세 재작성 - 출력: - `A08_backend.md`(stable) — `POST /api/a08/support` 단일 엔드포인트, get_optional_session(비로그인 허용), support_requests INSERT + 관리자 알림 메일 - `A08_frontend.md`(stable) — 문의 폼(textarea 자체 구현 createTextAreaField), 세션 자동 채움(fetchSessionUser), fetch 직접 호출(Api_Fetch 파일 없음) - **로케일 키 검증**: A08_Support_Title(348), A08_Support_Field_Phone(357), A08_Support_Field_Message(361), A08_Support_Success(367) 실 파일 등록 확인 - **⚠️ DB 스키마 불일치 발견**: `db_schema/logs_monitoring`의 support_requests 컬럼은 계획서 기준(user_id/title/priority/status)인데 실 코드 INSERT는 company_id/company_name/user_name/user_email/user_phone/subject/message → 컬럼명 다름. logs_monitoring.md에 양쪽 병기 + 사용처에 A08 추가, 실 DB 대조 필요(규칙6)로 표시 - **발견 사항**: - 비로그인도 문의 가능(get_optional_session), 로그인 시 회사 정보 자동 연결 - textarea는 공통 컴포넌트에 없어 자체 구현 - 프론트가 fetch를 직접 호출(별도 API 클라이언트 파일 없음) - index.md A08 링크 `[[A08_Support/backend]]` → `[[A08_Support/A08_backend]]` 갱신 ## [2026-07-12] ingest | A07_Register (backend + frontend 상세화) - 대상: A07_Register_Router.py(76줄), A07_Register_Schema.py(30줄), A07_Register_UI_Auth_Page.ts(208줄), A07_Register_UI_Page.ts(142줄), A07_Register_Api_Fetch.ts(47줄), A07_Register_UI_Style.css(103줄) - **기존 파일 정리**: A06와 동일하게 얕은 스텁 backend.md/frontend.md 삭제 → A07_backend.md/A07_frontend.md 상세 재작성 - 출력: - `A07_backend.md`(stable) — `/api/auth` 3종(companies·register/request·verify), Pydantic 2종, 2단계 가입 흐름(PENDING_EMAIL→NO_COMPANY) - `A07_frontend.md`(stable) — 약관 아코디언, 2단계 폼(정보입력→OTP), API 클라이언트 3함수 - **로케일 키 검증**: A07_Register_Field_Otp(340), A07_Register_Verify(341), A07_Register_OtpSent(342), A07_Register_Marketing(336) 실 파일 등록 확인 - **⚠️ 중요 발견**: A07에 UI 파일이 2개 — `A07_Register_UI_Auth_Page.ts`(실사용, router.ts:30이 import)와 `A07_Register_UI_Page.ts`(백엔드 미연동 TODO, 단순 폼). 후자는 **구버전 잔재**로 판단, 두 파일 모두 `renderA07Register` export하나 라우터는 Auth_Page만 사용 → frontend.md에 명시하고 정리 권장 - **발견 사항**: - 가입은 회사 없이 완료(NO_COMPANY), 회사 생성/연결은 로그인 후 B01_Dashboard에서 진행 - 회사검색 API(searchCompanies)는 자동완성용 - 약관 본문은 resources/legal/*.txt에서 fetch - terms_version "1.0" 프론트 하드코딩 - index.md A07 링크 `[[A07_Register/backend]]` → `[[A07_Register/A07_backend]]` 갱신 ## [2026-07-12] ingest | A06_Login (backend + frontend 상세화) - 대상: A06_Login_Router.py(179줄), A06_Login_Schema.py(20줄), A06_Login_UI_Auth_Page.ts(80줄), A06_Login_Api_Fetch.ts(57줄), A06_Login_UI_Style.css(52줄) - **기존 파일 정리**: `backend.md`/`frontend.md`(초기 세팅 시 얕은 스텁, 비표준 frontmatter `type`/`source`/`related_pages` 포함) → 삭제하고 규칙에 맞는 `A06_backend.md`/`A06_frontend.md`로 상세 재작성 - 출력: - `A06_backend.md`(stable) — `/api/auth` 엔드포인트 5종 표(login/request·verify·session·logout·password), 내부헬퍼 3종, Pydantic 3종, 로그인 흐름, 보안정책 - `A06_frontend.md`(stable) — 2단계 폼(비번→OTP 전환), API 클라이언트 5함수, 로케일 키, 이벤트 핸들러 - **로케일 키 검증**: A06_Login_Title(124), A06_Login_Field_Otp(288), A06_Login_Verify(290), A06_Login_OtpSent(291) 등 실 파일 등록 확인 - **발견 사항**: - OTP는 "신규 브라우저 OR 주기적 재인증(EMAIL_REVERIFY_DAYS 경과)" 조건에서만 요구 (매 로그인 아님) - `_finish_login`에서 `auth_expires_at = NOW() + 3개월` 갱신, 브라우저 신뢰 등록 - 5회 연속 실패 시 ADMIN_EMAIL로 보안 경고 메일 - `fetchSession`/`fetchSessionUser`/`logout`은 app_shell과 공유 - **⚠️ 불일치 기록**: [[auth_rbac]]는 계획서 기준(OTP 5분·재시도 3회·세션 4h/12h·15분 잠금)인데 실 코드와 다름 → 규칙6에 따라 auth_rbac 갱신 대상으로 A06_backend.md에 명시(별도 처리 필요) - index.md A06 링크 `[[A06_Login/backend]]` → `[[A06_Login/A06_backend]]` 갱신 ## [2026-07-12] lint | A03~A05 인제스트 재점검 - 대상: A03/A04/A05 frontend.md + concepts/ui_templates.md - **줄번호 대조**: 실 코드와 전부 일치 확인 (A03 buildHero 23-41 등, A04 buildTimeline 70-106, A05 onClick 26-28 등) - **로케일 키 검증**: A03_CompDetail_Contact_Email(238), A04_NewsHistory_Empty(249), A05_EduDetail_Cta(273) 등 실 파일에 등록 확인 - **발견/수정한 문제**: 1. 규칙13 위반: A03~A05 컴포넌트 섹션이 서술식 불릿 → 표 형식(함수|위치|역할)으로 전환, renderAxx 진입점 함수 누락분 추가 2. ui_templates.md 컴포넌트 목록 부정확: createButton variant 3종→4종(danger 추가), createTag variant 5종·기본값 neutral 명시, 누락 컴포넌트 6종(createInputField/createSelectField/showLoadingOverlay/hideLoadingOverlay/showToast/createLineChart/injectBaseStyles) 표로 보완 3. 깨진 위키링크 `[[A00_Common/app_shell_framework]]` → `[[a00_app_shell_framework]]`로 수정(ui_templates.md 2곳) 4. ui_templates.md 사용처 역참조에 A03/A04/A05 추가 - ui_templates.md 91줄(100줄 제한 이내 유지) ## [2026-07-12] ingest | A05_EduDetail - 대상: A05_EduDetail_UI_Page.ts (106줄), A05_EduDetail_UI_Style.css (87줄) - 출력: `wiki/pages/A05_EduDetail/A05_frontend.md` (stable) - 발견 사항: - Hero + 3개 교육 과정 카드그리드 + CTA 버튼 레이아웃 - createButton, createCard 공통 컴포넌트 사용 - `onA05_EduDetail_Inquiry_Click()` → A08_SUPPORT 라우트로 이동 - theme.css 변수 엄격 준수 - index.md 업데이트 (A05 분리) ## [2026-07-12] ingest | A04_NewsHistory - 대상: A04_NewsHistory_UI_Page.ts (117줄), A04_NewsHistory_UI_Style.css (87줄) - 출력: `wiki/pages/A04_NewsHistory/A04_frontend.md` (stable) - 발견 사항: - MOCK_HISTORY 데이터: feature/fix/notice 3종 태그 + 날짜 - KIND_META 맵핑으로 variant 자동 결정 - createTag 공통 컴포넌트 사용 - 빈 상태(empty) 처리 구현 - 백엔드 API 미구현: GET /api/a04/history (코드 주석에 언급) - index.md 업데이트 (A04 분리) ## [2026-07-12] ingest | A03_CompDetail - 대상: A03_CompDetail_UI_Page.ts (114줄), A03_CompDetail_UI_Style.css (100줄) - 출력: `wiki/pages/A03_CompDetail/A03_frontend.md` (stable) - 발견 사항: - A02와 동일 패턴(Hero + 섹션 + 3열 카드그리드) - createCard 공통 컴포넌트 사용 - 3개 가치 카드 (Value1~3) + 연락처 이메일 - theme.css 변수 엄격 준수 - index.md 업데이트 (A03 분리) ## [2026-07-12] lint | A01_Home 페이지 검사 및 수정 - 대상: `wiki/pages/A01_Home/A01_frontend.md` - 발견 사항: - frontmatter에 비표준 필드 `type: page-frontend` 존재 → 제거 (규칙에는 status/page_id/last_updated만) - related_pages 배열 형식 오류 → 제거 (위키링크는 본문에만 사용) - 의존성 링크 `[[ui_template_locale]]`, `[[ui_template_elements]]` 오류 → concepts 페이지 부재 - 해결: - frontmatter 정제 (status/page_id/last_updated만 유지) - 새 concepts 페이지 `ui_templates.md` 신규 생성 (locale + elements + theme 통합, 사용처 역참조 포함) - 의존성 섹션 링크 수정: [[ui_templates]]로 통합 - index.md에 ui_templates 추가 - status: stable 유지 (실 코드 반영 완료) ## [2026-07-12] ingest | A02_ProgDetail + A00_Common Framework - 대상: A02_ProgDetail_UI_Page.ts (146줄), A02_ProgDetail_UI_Style.css (127줄) + A00_Common (app_shell.ts 284줄, b_page_scaffold.ts 163줄, router.ts 158줄) - 출력: - `wiki/pages/A02_ProgDetail/A02_frontend.md` (신규) — 컴포넌트 분석 + 로케일 키 + CSS 클래스 + 이벤트 - `wiki/concepts/a00_app_shell_framework.md` (신규) — 공유 프레임워크(전체 페이지의 헤더·라우터·가드) - 발견 사항: - A02는 단순 정적 페이지(Hero + Workflow 배지 + Tech 카드) - A00_Common는 전체 앱의 스켈레톤—모든 페이지가 의존하는 공유 레이어 - `renderShell()` + `injectShellStyles()` 로직으로 헤더/아울렛/푸터 통합 관리 - 라우터 테이블에 A01~A09, B01~B11 (22개 라우트) 모두 등록됨 (B10_Payment, B11_Status 신규 발견) - 워크플로우 라우트(B02~B11)에 대한 추가 인증 가드 구현 (company_id 검증) - index.md 업데이트 (A02 분리, concepts에 a00_app_shell_framework 추가) - status: both stable (실 코드 구현 완료 확인)