mkdir anpi-app
cd anpi-app
npm init -y
npm install express sqlite3
mkdir public

// server.js
const express = require(“express”);
const sqlite3 = require(“sqlite3”).verbose();
const path = require(“path”);

const app = express();
const PORT = 3000;

// JSONとフォームデータを受け取るための設定
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

// public 配下を静的ファイルとして配信
app.use(express.static(path.join(__dirname, “public”)));

// — SQLite DB 設定 —
const dbFile = path.join(__dirname, “safety.db”);
const db = new sqlite3.Database(dbFile);

// テーブル作成(初回のみ実行される)
db.serialize(() => {
db.run(
CREATE TABLE IF NOT EXISTS reports ( id INTEGER PRIMARY KEY AUTOINCREMENT, employee_id TEXT, name TEXT, department TEXT, status TEXT, can_work TEXT, message TEXT, created_at TEXT )
);
});

// — API定義 —

// 安否報告(登録)
app.post(“/api/report”, (req, res) => {
const { employeeId, name, department, status, canWork, message } = req.body;

if (!employeeId || !name || !department || !status || !canWork) {
return res.status(400).json({ error: “必須項目が入力されていません。” });
}

const createdAt = new Date().toISOString();

db.run(
INSERT INTO reports (employee_id, name, department, status, can_work, message, created_at) VALUES (?, ?, ?, ?, ?, ?, ?),
[employeeId, name, department, status, canWork, message || “”, createdAt],
function (err) {
if (err) {
console.error(err);
return res.status(500).json({ error: “データ登録に失敗しました。” });
}
return res.json({ id: this.lastID, message: “安否情報を登録しました。” });
}
);
});

// 安否報告一覧(管理者用)
app.get(“/api/reports”, (req, res) => {
const { department } = req.query;

let query = “SELECT * FROM reports”;
const params = [];

if (department && department !== “all”) {
query += ” WHERE department = ?”;
params.push(department);
}

query += ” ORDER BY created_at DESC”;

db.all(query, params, (err, rows) => {
if (err) {
console.error(err);
return res.status(500).json({ error: “データ取得に失敗しました。” });
}
return res.json(rows);
});
});

// ヘルスチェック
app.get(“/api/health”, (req, res) => {
res.json({ status: “ok” });
});

// サーバ起動
app.listen(PORT, () => {
console.log(安否確認アプリ サーバ起動: http://localhost:${PORT});
});