feat(backend,docker,docs): implement Go/Gin/SQLite REST API server, Docker containerization, and architecture specifications
- Implement standalone Go backend API server using Gin and pure-Go SQLite (modernc.org/sqlite) - Add 11-table schema DDL migrations (000001_init.up.sql) based on DATA_TABLE.md - Add seed data ingestion tool (cmd/seed) and static TypeScript content exporter (cmd/export-content) - Add configuration loader (internal/config) supporting environment variables and .env files (HOST, PORT, DB_PATH, GIN_MODE, CORS_ALLOW_ORIGINS, AUTO_MIGRATE) - Add lightweight multi-stage Dockerfile and docker-compose.yml with persistent SQLite volume - Add comprehensive architecture specification (ARCHITECTURE.md) and REST API interface specification (API_INTERFACE.md) - Harmonize frontend publications page to consume isHighlight flag from database-synced content
This commit is contained in:
+119
@@ -0,0 +1,119 @@
|
||||
# AI Agent Networking Lab (ANL) — Backend Database Schema Specification
|
||||
|
||||
This document defines the SQLite database schema and REST API entities to decouple data from the frontend landing page.
|
||||
|
||||
---
|
||||
|
||||
## 1. `/home` (Home & Overview)
|
||||
|
||||
### 1.1 `research_projects` (연구 과제)
|
||||
- `id` (INTEGER, PK, AUTOINCREMENT)
|
||||
- `slug` (TEXT, UNIQUE, NOT NULL) — e.g. `iot-standards`, `ccis`, `vlc-iot`
|
||||
- `title` (TEXT, NOT NULL) — e.g. `AIoT & AI-RAN`, `MCM`, `MVQM`
|
||||
- `abstract` (TEXT, NOT NULL)
|
||||
- `keywords` (TEXT, JSON Array) — e.g. `["AIoT", "agent-based IoT", "AI-RAN"]`
|
||||
- `organization` (TEXT) — e.g. `National Research Foundation of Korea (NRF)`, `IEC/TC 100/WG 12 supported by KEIT`
|
||||
- `standards_org` (TEXT) — e.g. `NRF`, `IEC TC100`
|
||||
- `period` (TEXT) — e.g. `2026 ~ Present`
|
||||
- `funder` (TEXT, OPTIONAL)
|
||||
- `created_at` (DATETIME)
|
||||
- `updated_at` (DATETIME)
|
||||
|
||||
### 1.2 `research_areas` (연구 분야)
|
||||
- `id` (INTEGER, PK, AUTOINCREMENT)
|
||||
- `name_en` (TEXT, NOT NULL) — e.g. `AI Agent Networking`, `QUIC & Transport Protocol`
|
||||
- `name_kr` (TEXT) — e.g. `AI 에이전트 네트워킹`
|
||||
- `display_order` (INTEGER, DEFAULT 0)
|
||||
|
||||
---
|
||||
|
||||
## 2. `/members` (구성원 및 졸업생)
|
||||
|
||||
### 2.1 `members` (현재 연구원)
|
||||
- `id` (INTEGER, PK, AUTOINCREMENT)
|
||||
- `name_ko` (TEXT, NOT NULL) — e.g. `고석주`
|
||||
- `name_en` (TEXT, NOT NULL) — e.g. `Seok-Joo Koh`
|
||||
- `degree` (TEXT, NOT NULL) — `Professor`, `PhD`, `PhDCandidate`, `PhDStudent`, `MSCandidate`, `MSStudent`
|
||||
- `affiliation` (TEXT) — e.g. `School of Computer Science and Engineering`
|
||||
- `email` (TEXT)
|
||||
- `is_advisor` (BOOLEAN, DEFAULT FALSE)
|
||||
- `display_order` (INTEGER, DEFAULT 0)
|
||||
- `created_at` (DATETIME)
|
||||
|
||||
### 2.2 `alumni` (졸업생)
|
||||
- `id` (INTEGER, PK, AUTOINCREMENT)
|
||||
- `name_ko` (TEXT, NOT NULL)
|
||||
- `name_en` (TEXT, NOT NULL)
|
||||
- `degree` (TEXT, NOT NULL) — `PhD`, `MS`
|
||||
- `graduated_at` (TEXT, NOT NULL) — `YYYY-MM` (e.g. `2024-02`)
|
||||
- `major` (TEXT) — e.g. `Computer Science and Engineering`
|
||||
- `current_position` (TEXT) — e.g. `Samsung Electronics, Senior Researcher`
|
||||
- `created_at` (DATETIME)
|
||||
|
||||
---
|
||||
|
||||
## 3. `/publications` (연구 실적 & 지식재산권)
|
||||
|
||||
### 3.1 `publications` (학술 논문)
|
||||
- `id` (INTEGER, PK, AUTOINCREMENT)
|
||||
- `category` (TEXT, NOT NULL) — `intl-journal-conf`, `domestic-journal-conf`
|
||||
- `title` (TEXT, NOT NULL)
|
||||
- `authors` (TEXT) — e.g. `Seok-Joo Koh, ...`
|
||||
- `venue` (TEXT, NOT NULL) — e.g. `IEEE Transactions on Network and Service Management`
|
||||
- `volume` (TEXT) — e.g. `Vol. 23, pp. 4490~4505, April 2026`
|
||||
- `published_at` (TEXT, NOT NULL) — `YYYY-MM` or `YYYY-MM-DD`
|
||||
- `kci` (BOOLEAN, DEFAULT FALSE)
|
||||
- `doi` (TEXT)
|
||||
- `is_highlight` (BOOLEAN, DEFAULT FALSE) — For Top Representative Highlights
|
||||
- `created_at` (DATETIME)
|
||||
|
||||
### 3.2 `patents` (특허)
|
||||
- `id` (INTEGER, PK, AUTOINCREMENT)
|
||||
- `title` (TEXT, NOT NULL)
|
||||
- `inventors` (TEXT, NOT NULL)
|
||||
- `application_no` (TEXT, NOT NULL)
|
||||
- `application_at` (TEXT, NOT NULL) — `YYYY-MM-DD`
|
||||
- `registration_no` (TEXT)
|
||||
- `registration_at` (TEXT) — `YYYY-MM-DD`
|
||||
- `country` (TEXT, NOT NULL) — e.g. `KR`, `US`
|
||||
- `published_at` (TEXT, NOT NULL)
|
||||
- `created_at` (DATETIME)
|
||||
|
||||
---
|
||||
|
||||
## 4. `/lectures` (강의)
|
||||
|
||||
### 4.1 `semesters` (학기)
|
||||
- `id` (INTEGER, PK, AUTOINCREMENT)
|
||||
- `year` (INTEGER, NOT NULL) — e.g. `2026`
|
||||
- `term` (TEXT, NOT NULL) — `Spring`, `Fall`
|
||||
|
||||
### 4.2 `courses` (개설 과목)
|
||||
- `id` (INTEGER, PK, AUTOINCREMENT)
|
||||
- `semester_id` (INTEGER, NOT NULL, FK -> semesters.id)
|
||||
- `code` (TEXT, NOT NULL) — e.g. `COMP0411`
|
||||
- `name_en` (TEXT, NOT NULL) — e.g. `Computer Networks`
|
||||
- `name_kr` (TEXT)
|
||||
- `note` (TEXT) — e.g. `Graduate Course`
|
||||
|
||||
---
|
||||
|
||||
## 5. `/standardization` (국제 표준화)
|
||||
|
||||
### 5.1 `standards_bodies` (표준화 기구)
|
||||
- `id` (INTEGER, PK, AUTOINCREMENT)
|
||||
- `org` (TEXT, NOT NULL) — e.g. `IEC TC100`, `ITU-T SG17`
|
||||
- `full_name` (TEXT, NOT NULL)
|
||||
- `scope` (TEXT, NOT NULL) — `international`, `domestic`
|
||||
- `period` (TEXT, NOT NULL) — e.g. `2018 ~ Present`
|
||||
- `role` (TEXT) — e.g. `Project Editor`
|
||||
|
||||
### 5.2 `standard_documents` (표준 문서 및 기고서)
|
||||
- `id` (INTEGER, PK, AUTOINCREMENT)
|
||||
- `body_id` (INTEGER, NOT NULL, FK -> standards_bodies.id)
|
||||
- `wg` (TEXT, NOT NULL) — e.g. `WG 12`
|
||||
- `project_name` (TEXT, NOT NULL)
|
||||
- `title` (TEXT, NOT NULL)
|
||||
- `doc_ref` (TEXT, NOT NULL) — e.g. `IEC 63430 ED1`
|
||||
- `status` (TEXT, NOT NULL) — `IS`, `TS`, `TR`, `CDV`, `WDTR`, `InProgress`
|
||||
- `published_at` (TEXT)
|
||||
Reference in New Issue
Block a user