- 📤 ADIF 文件上传 - 支持 .adi/.adif 格式文件上传,完整解析所有字段
- 🛰️ 卫星通联支持 - 支持卫星通联专用字段(上行/下行频率、卫星名称等)
- 💾 双存储模式 - 支持本地数据库和 Supabase 云端存储自由切换
- 📋 日志管理 - 后台日志列表展示、搜索、删除、收卡/发卡状态快速切换
- 👤 值机员信息 - 维护个人呼号、QTH、设备、天线、网格坐标等信息
- 🔍 前台查询 - 支持呼号模糊搜索,分页展示通联日志
- 🎨 字段自定义 - 灵活配置前后台显示字段
- 🔒 数据安全 - 插件禁用/卸载不删除任何数据
- 下载插件并解压,将
HAMLog文件夹上传至/usr/plugins/目录 - 登录 Typecho 后台,进入「控制台」→「插件」→ 找到「HAMLog」并启用
- 插件启用时自动创建所需数据库表
-
存储模式设置
- 默认使用本地数据库存储
- 如需使用 Supabase,填写 API 地址、API Key 和数据表名
-
显示字段配置
- 配置前台页面显示字段
- 配置后台日志列表显示字段
-
日志上传
- 上传 ADIF 格式日志文件(.adi/.adif)
- 解析预览后确认导入
- 自动跳过重复数据(按 CALL + QSO_DATE + TIME_ON 去重)
-
日志管理
- 查看通联日志列表,支持分页
- 按呼号搜索日志
- 快速切换收卡/发卡状态
- 删除单条日志
-
信息维护
- 设置值机员呼号、QTH、设备、天线、网格坐标
- 信息将在前台页面展示
在 Typecho 中创建独立页面,在该页面中使用短代码调用:
[HAMLog]
页面别名建议设置为 log,访问地址示例:https://your-domain.com/log.html
插件支持以下 ADIF 标准字段解析:
| 字段 | 说明 | 备注 |
|---|---|---|
| CALL | 对方呼号 | 解析后上传到数据库为 CALL_SIGN |
| QSO_DATE | 通联日期 | 核心必填字段,格式:YYYY-MM-DD |
| TIME_ON | 通联时间 | 核心必填字段,格式:HH:MM:SS |
| BAND | 频段 | 如 2M、70CM |
| BAND_RX | 接收频段 | 卫星通联 |
| MODE | 通信模式 | 如 FM、SSB、FT8 |
| FREQ | 频率 | 发射频率 |
| FREQ_RX | 接收频率 | 接收频率 |
| RST_SENT | 发送信号报告 | 如 59 |
| RST_RCVD | 接收信号报告 | 如 59 |
| TX_PWR | 己方功率 | 单位:W |
| RX_PWR | 对方功率 | 单位:W |
| QTH | 对方地址 | 对方QTH |
| GRID | 网格坐标 | 梅登海德网格坐标 |
| PROP_MODE | 传播模式 | 卫星通联填 SAT |
| SAT_NAME | 卫星名称 | 如 ARISS、ISS |
| REMARK | 备注 | 通联备注信息 |
| CARD_SEND | 已发卡片 | 插件扩展字段,0=未发卡,1=已发卡 |
| CARD_RCV | 已收卡片 | 插件扩展字段,0=未收卡,1=已收卡 |
如需使用 Supabase 云端存储,按以下步骤配置:
登录 Supabase 控制台,进入 SQL Editor,执行以下 SQL 语句创建表结构:
-- 删除旧表(如存在)
DROP TABLE IF EXISTS public.hamlog;
-- 创建通联日志表
CREATE TABLE public.hamlog (
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
"CALL_SIGN" VARCHAR(20) NOT NULL DEFAULT '',
"QSO_DATE" DATE NOT NULL,
"TIME_ON" TIME NOT NULL,
"BAND" VARCHAR(10) NOT NULL DEFAULT '',
"BAND_RX" VARCHAR(10) NOT NULL DEFAULT '',
"MODE" VARCHAR(10) NOT NULL DEFAULT '',
"FREQ" VARCHAR(20) NOT NULL DEFAULT '',
"FREQ_RX" VARCHAR(20) NOT NULL DEFAULT '',
"RST_SENT" VARCHAR(10) NOT NULL DEFAULT '',
"RST_RCVD" VARCHAR(10) NOT NULL DEFAULT '',
"TX_PWR" VARCHAR(20) NOT NULL DEFAULT '',
"RX_PWR" VARCHAR(20) NOT NULL DEFAULT '',
"QTH" VARCHAR(100) NOT NULL DEFAULT '',
"GRID" VARCHAR(10) NOT NULL DEFAULT '',
"PROP_MODE" VARCHAR(20) NOT NULL DEFAULT '',
"SAT_NAME" VARCHAR(50) NOT NULL DEFAULT '',
"REMARK" TEXT,
"CARD_SEND" INT2 NOT NULL DEFAULT 0, -- 整数类型,存 0/1
"CARD_RCV" INT2 NOT NULL DEFAULT 0, -- 整数类型,存 0/1
"CREATED" BIGINT NOT NULL DEFAULT 0
);
-- 表注释
COMMENT ON TABLE public.hamlog IS '业余无线电HAM通联日志记录表';
-- 字段注释
COMMENT ON COLUMN public.hamlog."CALL_SIGN" IS '对方呼号';
COMMENT ON COLUMN public.hamlog."QSO_DATE" IS '通联日期';
COMMENT ON COLUMN public.hamlog."TIME_ON" IS '通联开始时间';
COMMENT ON COLUMN public.hamlog."BAND" IS '发射波段';
COMMENT ON COLUMN public.hamlog."BAND_RX" IS '接收波段';
COMMENT ON COLUMN public.hamlog."MODE" IS '通联模式(FM/SSB/CW等)';
COMMENT ON COLUMN public.hamlog."FREQ" IS '发射频率';
COMMENT ON COLUMN public.hamlog."FREQ_RX" IS '接收频率';
COMMENT ON COLUMN public.hamlog."RST_SENT" IS '发送信号报告';
COMMENT ON COLUMN public.hamlog."RST_RCVD" IS '接收信号报告';
COMMENT ON COLUMN public.hamlog."TX_PWR" IS '发射功率';
COMMENT ON COLUMN public.hamlog."RX_PWR" IS '接收功率';
COMMENT ON COLUMN public.hamlog."QTH" IS '对方QTH地点';
COMMENT ON COLUMN public.hamlog."GRID" IS '网格坐标';
COMMENT ON COLUMN public.hamlog."PROP_MODE" IS '传播模式';
COMMENT ON COLUMN public.hamlog."SAT_NAME" IS '卫星名称';
COMMENT ON COLUMN public.hamlog."REMARK" IS '备注说明';
COMMENT ON COLUMN public.hamlog."CARD_SEND" IS '是否已寄QSL卡片 0否1是';
COMMENT ON COLUMN public.hamlog."CARD_RCV" IS '是否收到QSL卡片 0否1是';
COMMENT ON COLUMN public.hamlog."CREATED" IS '记录创建时间戳';
-- 开启行级安全
ALTER TABLE public.hamlog ENABLE ROW LEVEL SECURITY;- 点击左侧菜单的「Authentication」→「Policies」
- 点击数据表
hamlog右侧的按钮「Create policy」 - 填写 Policy Name(如
hamlog_all_access) - Policy Command for clause 选择
ALL - Using 输入框保持为空(留空表示允许所有操作)
- With check 输入框保持为空(留空表示允许所有操作)
完整的策略 SQL 如下:
CREATE POLICY "hamlog_all_access"
ON "public"."hamlog"
AS PERMISSIVE
FOR ALL
TO public
USING (
true
)WITH CHECK (
true
);在插件配置页面填写:
- Supabase API 地址: 在 Supabase 项目设置中获取(格式:
https://<project-id>.supabase.co) - Supabase API Key: 使用 anon key
- Supabase 数据表名:
hamlog
- 后端: PHP 7.0+
- 数据库: MySQL 5.6+ / Supabase
- 前端: 原生 HTML/CSS(极简风格)
- 框架: Typecho 1.2+
- 🎉 初始版本发布
- ✨ 支持 ADIF 文件上传与解析
- 🌍 支持本地数据库模式(Supabase 存储模式待更新)
- 📋 后台日志管理功能
- 👤 值机员信息维护
- 🔍 前台日志展示与搜索
- 📱 响应式表格布局
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 提交 Pull Request
本项目基于 MIT License 开源
如果这个插件对您有帮助,欢迎:
- ⭐ Star 本项目
- 🐛 提交 Bug 反馈
- 💡 提出新功能建议
- 📝 分享使用体验
Made with ❤️ by BG8IXZ