搜集通 Collect

面向小微团队与带队场景的轻量表单搜集:设计一张表单生成分享链接,队员免登录打开即填,实时汇总、一键导出

v0.1.0

功能特性

📝

表单设计器

单行/多行文本、数字、日期、单选、多选、附件 7 种字段;必填、占位提示、选项、附件数量随心配,可增删与排序

🔗

分享填写

一键生成随机链接与二维码,队员免登录打开即填,手机端优先适配;链接可随时重置,旧链接立即失效

📎

附件上传

图片/文档/压缩包白名单校验(按扩展名判定),单文件最大 20MB;先传临时区、提交时转正,杜绝垃圾文件

🔁

判重控制

指定判重字段(身份证号、设备编号……),同一判重值的重复提交可选择放行、直接拒绝或覆盖旧记录

✏️

修改回填

填写者凭 8 位修改码可修改自己已提交的内容(可开关),修改结果实时同步到汇总,旧附件一并替换

⏰

截止与开关

设置截止时间,到期自动拒绝提交;也可随时手动关闭或重开收集,一个开关控制全局

📊

实时汇总

统计卡片 + 回收列表 + 详情抽屉;新提交、覆盖与修改实时推送到汇总页刷新,无需手动刷新页面

📤

多样导出

CSV(UTF-8 BOM,含公式注入防护)/ JSON / 附件按提交打包 zip / 单附件下载,分享二维码随手取图

🌗

明暗双主题

钴蓝/晴空品牌配色,深浅色主题切换;填写页独立简洁版式,触控目标加大,手机端体验优先

技术架构

后端技术栈

  • Go - 高性能编译型语言
  • Gin - 轻量级 HTTP 框架
  • GORM - ORM 框架
  • SQLite (WAL) - 单文件数据库

前端技术栈

  • Vue 3 - 现代前端框架
  • TypeScript - 类型安全
  • Vite - 构建工具
  • Pinia - 状态管理
  • Tailwind CSS - 原子化样式

部署方式

  • 飞牛 NAS(fnOS)FPK 包(x86 / ARM)
  • Docker 多平台镜像
  • 二进制解压即用

搜集通基于 smallgo 应用框架实例化(框架家族第 7 个实例),登录认证、飞牛 NAS 一键登录、用户权限、系统配置、备份、审计日志、匿名统计、赞赏支持等公共能力全部继承框架,业务模块位于 server/collect/。

快速开始

飞牛 NAS 安装

  1. 下载对应架构的 techfunway-collect 安装包(.fpk,支持 amd64 / arm64)
  2. 打开飞牛 NAS 桌面 → 应用中心
  3. 点击右上角 手动安装,选择下载的 .fpk 文件
  4. 在安装向导中设置应用端口(默认 8912),点击完成
  5. 安装完成后打开应用,首个注册用户自动成为管理员;也可以直接使用飞牛 NAS 账号一键登录

Docker 运行

说明:该应用暂未发布 Docker 镜像,请优先用飞牛应用中心安装包,或按源码自行构建。

docker run -d \
  --name techfunway-collect \
  -p 8912:8912 \
  -v collect-data:/app/data \
  -e TZ=Asia/Shanghai \
  --restart unless-stopped \
  techfunways/collect:latest

docker-compose.yaml

services:
  collect:
    image: techfunways/collect:latest
    container_name: techfunway-collect
    restart: unless-stopped
    ports:
      - "8912:8912"
    volumes:
      - collect-data:/app/data
    environment:
      - TZ=Asia/Shanghai

volumes:
  collect-data:

数据库、附件与运行日志都存放在数据卷 collect-data(容器内 /app/data),重建或升级容器不会丢失已回收的数据。

二进制直接运行

解压对应平台的发布压缩包后,按下面的命令启动:

# Linux / macOS
./collect -data-dir ./data -port 8912

启动后浏览器访问 http://localhost:8912,首个注册用户自动成为管理员。表单与回收数据存储于 data/db/collect.db(SQLite,WAL 模式)。

💡 提示:已有提交之后,表单的字段定义与判重设置会自动冻结(只能改标题、说明、截止时间与开关),保证已回收的数据始终可以按原字段渲染;建表单时一次把字段设计好即可。

端口与仓库信息

默认端口 8912(HTTP,安装向导、-port 参数或 PORT 环境变量均可修改)
容器名 techfunway-collect
数据卷 collect-data → 容器内 /app/data(数据库、附件、日志)
Docker 镜像 techfunways/collect(多平台,端口 8912)
fnOS 包名 techfunway-collect(桌面显示名「搜集通」)
源码仓库 TechFunWay/collect(Go + Gin + GORM + SQLite / Vue 3 + TypeScript)
运行数据 data/db/collect.db(SQLite WAL),管理员可下载数据库快照备份
上游框架 smallgo,后端模块名为 smallgo/server

更新日志

v0.1.0 2026-09-20
  • 首个版本:表单设计器,单行/多行文本、数字、日期、单选、多选、附件 7 种字段随心配
  • 分享链接 + 二维码免登录填写,手机端优先适配;链接可随时重置,旧链接立即失效
  • 附件上传白名单校验(单文件 ≤20MB),两段式落位防止垃圾文件
  • 判重字段控制重复写入:允许 / 拒绝 / 覆盖旧记录;填写者凭 8 位修改码可修改提交
  • 截止时间与手动开关控制收集窗口;新提交 SSE 实时推送到汇总页
  • 导出 CSV / JSON / 附件按提交打包 zip,二维码接口直接取图
  • 继承框架全部公共能力:登录认证、飞牛 NAS 一键登录、用户权限、备份、审计、赞赏支持、版本检查
  • 📦 飞牛应用中心安装包 techfunway-collect(x86 / arm64)
  • 🔒 代码仓库与 Docker 镜像尚未公开,进度见 GitHub 组织主页

常见问题

如何修改端口?

飞牛 NAS 安装时可在向导中设置端口(默认 8912)。Docker 方式通过 -p 参数映射端口。二进制方式通过 -port 参数指定端口。

附件有什么限制?

按扩展名白名单校验(图片 / 文档 / 压缩包,不信任浏览器上报的类型),单文件最大 20MB,每个附件字段可配 1–3 个;导出时附件按提交自动打包成 zip。

队员提交后还能修改吗?

开启「允许修改」时,提交完成页会给出 8 位修改码,填写者凭修改码重新打开填写页即可修改自己的提交,旧附件一并替换;不需要修改时关闭该开关即可。

同一人重复提交怎么处理?

在表单设置里指定判重字段(如身份证号、设备编号),同一判重值的再次提交可以选择放行、直接拒绝,或用新提交覆盖旧记录——覆盖会连同附件一起替换,修改码保持不变。

数据存在哪里,会上传吗?

所有数据都保存在本地 SQLite 数据库(data/db/collect.db),不上传云端;组织者之间的数据按账号隔离,越权访问一律返回 404,队员免登录只能填写分享链接对应的表单。应用内置的匿名使用统计只上报版本与部署形态等设备信息,可在系统配置中关闭。