Frknk/etica-civitech

GitHub: Frknk/etica-civitech

面向高校职业伦理课程的事件举报与跟踪平台,支持匿名举报、流程管理和伦理委员会后台操作。

Stars: 0 | Forks: 0

# CivicTech – 职业伦理 这是一个 Web 原型,旨在**通过负责任且保密的伦理事件举报来促进职业伦理**,专为*伦理与专业实践*课程开发——国立农业 Selva 大学 (UNAS),Tingo María,秘鲁。 ## 已实现模块 根据项目的活动计划: 1. **事件举报** — 类别、描述、背景及可选的书面证据 (`/reportar`)。 2. **保密与匿名** — 举报人决定不表明身份;收到一个跟踪码作为唯一凭证。 3. **分类与跟踪** — *已接收 → 已分类 → 已转交 → 已处理* 的流程,对举报人可见 (`/seguimiento`)。 4. **良好实践表彰** — 通过培训和诚信获得的积分、等级(种子 → 幼苗 → 植物 → 树木)和徽章 (`/formacion`)。 5. **具备伦理意识的提醒** — 伴随系统使用的启发性信息。 6. **伦理委员会面板** — 对每个举报进行分类、转交并记录处理过程,且日志可追溯 (`/comite`)。 ## 架构 全部部署在 **Cloudflare** 上,作为单个 Worker(同源,无 CORS): - **Frontend**: React + TypeScript + Vite + Tailwind CSS v4(`src/` 文件夹),作为静态 SPA 提供(binding `ASSETS`)。 - **Backend**: 基于 **Cloudflare Workers** 的 REST API,使用 [Hono](https://hono.dev/)(`worker/` 文件夹)。Worker 处理 `/api/*`,其余请求委托给 SPA。 - **数据库**: **Cloudflare D1**(Serverless SQLite),binding `DB`。架构和种子数据位于 [`migrations/`](migrations/) 中,并在 [`docs/ESQUEMA_BD.md`](docs/ESQUEMA_BD.md) 中有详细文档。 所有持久化数据都存储在共享数据库中:学生创建的举报可从任何设备供委员会查看。 ### 安全性 - **委员会面板** (`/comite`) 及推进举报状态的操作需要**委员会密钥**,该密钥作为 Worker 的 secret 保存(`COMMITTEE_KEY`)。API 的其余部分在设计上是公开的:举报人使用其**机密跟踪码**作为唯一凭证。 - 安全 headers(CSP、HSTS、`X-Content-Type-Options` 等)定义在 [`public/_headers`](public/_headers) 中。 ## 本地开发 需要安装 [Bun](https://bun.sh)(或 npm)。 ``` bun install # instala dependencias (una sola vez) bun run db:migrate:local # crea el esquema en la D1 local (una vez) bun run dev # Vite + Worker + D1 en local (http://localhost:5173) ``` `vite dev` 通过 Cloudflare 插件在同一个源下启动 SPA 和 API `/api/*`,并在 `.wrangler/` 中使用本地 D1。 要在本地验证生产环境构建: ``` bun run build # type-check (app + worker) y build a dist/ bun run preview # sirve el Worker construido en local ``` ## 部署到 Cloudflare 一次性操作,认证和资源准备: ``` bun run build # genera dist/ (también verifica tipos) wrangler login # autentica tu cuenta wrangler d1 create civictech # crea la base D1 # → 复制返回的 "database_id" 到 wrangler.jsonc wrangler secret put COMMITTEE_KEY # define la clave de acceso del comité wrangler d1 migrations apply civictech --remote # aplica el esquema en producción ``` 后续部署: ``` bun run deploy # build + wrangler deploy ``` ## 验证说明 - 数据(举报、日志和培训进度)保存在 Cloudflare D1 中。架构和示例举报通过 [`migrations/`](migrations/) 的迁移文件加载。 - 培训进度通过匿名的本地标识符为每个学习者单独区分(没有登录过程,也不收集举报人的个人数据)。 - 委员会面板需要输入密钥 `COMMITTEE_KEY`;没有此密钥,API 不会暴露举报列表。 - 测试完整流程:在 `/reportar` 创建一个举报,复制代码,在 `/seguimiento` 跟踪,并在 `/comite` 推进其状态(输入委员会密钥后)。 ## 技术 React + TypeScript + Vite + Tailwind CSS v4 · Hono + Cloudflare Workers + D1。 字体:Fraunces(标题)、Inter(正文)、IBM Plex Mono(代码和标签)。
标签:CivicTech, Hono, React, SQLite, Syscalls, 伦理举报, 信息管理平台, 工单系统, 程序员工具, 网络研究, 自动化攻击