core

module
v0.7.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 4, 2026 License: MIT

README

core

FileCodeBox 业务核心库:10 个域服务 + 数据访问 + 存储抽象 + HTTP/RPC 装配(bootstrap)。不含 main、不含静态资源、不含配置文件——本模块定位是被复用的库,消费方:

  • filescodebox/server —— 标准独立部署(自托管)
  • filecodebox-fnos —— 飞牛 fnOS 应用(单容器库式调用)

结构

目录 说明
bootstrap/ 库入口:Bootstrap(configPath) 拉起全部业务,返回 *server.Hertz
app/ 10 个域服务:share / chunk / anonymous / presign / admin / user / notify / qrcode / setup / storage(模块间近零耦合,仅 presign→share)
repo/ 数据访问:db(gorm dao/model)、redis
storage/ 存储抽象(OpenDAL 多后端)
pkg/ auth / logger / middleware / resp / errors / utils 等横切设施
transport/ 手写 http handler 与中间件(生成代码之外的补充)
preview/ 文件预览服务
conf/ 配置结构定义
gen/ thrift 生成的 handler / router(模型类型在 filescodebox/contracts)

分层职责(继承自原仓库 internal 设计)

  1. app/ —— 业务逻辑层,不依赖具体传输协议,不直接操作数据库(经 repo 层)
  2. transport/ + gen/ —— 传输层,协议适配,调用 app 层服务
  3. repo/ —— 数据访问层,封装 DB/Redis/外部服务
  4. pkg/ —— 项目内横切工具(不含对外通用库)

库用法

import "github.com/filescodebox/core/bootstrap"

h, err := bootstrap.Bootstrap("/path/to/config.yaml")
if err != nil { log.Fatal(err) }
defer bootstrap.Cleanup()
go h.Spin()

依赖规则(强制)

core ──► contracts ──► (thrift runtime)
  └─ 不允许 import server / frontend;不引入任何 UI 与部署物
  • thrift 版本约束由 contracts 以 require 传递,下游无需任何 replace(这是从原仓库拆出的重要修复:原仓库靠 replace thrift => v0.13.0 钉版本,库使用者被迫复述该约束)。
  • 显式钉 bytedance/sonic v1.15.0:hertz 声明的 v1.12.7 在 go1.27/arm64 有 linkname 链接错误。

来源

拆分自 zy84338719/fileCodeBox 的 backend/api、backend/gen/http/{handler,router}、backend/cmd/server/bootstrap,import 路径机械替换,业务逻辑零变更。

Directories

Path Synopsis
app
admin
janitor.go 存储对账与日志保留(治理 2026-10-03)。
janitor.go 存储对账与日志保留(治理 2026-10-03)。
anonymous
Package anonymous 实现匿名取件 service(仿 vastsa/FileCodeBox UX)。
Package anonymous 实现匿名取件 service(仿 vastsa/FileCodeBox UX)。
chunk
storage.go — 分片物理操作的存储接缝(chunk 域)。
storage.go — 分片物理操作的存储接缝(chunk 域)。
mcp
Package mcp 实现 FileCodeBox 的 Model Context Protocol (MCP) server。
Package mcp 实现 FileCodeBox 的 Model Context Protocol (MCP) server。
moderation
Package moderation 内容审核钩子(治理 2026-10-03,方案 A:管控优先、审核留钩子)。
Package moderation 内容审核钩子(治理 2026-10-03,方案 A:管控优先、审核留钩子)。
notify
Package notify 实现系统通知(管理员公告 + per-user 取件通知)service。
Package notify 实现系统通知(管理员公告 + per-user 取件通知)service。
oidc
Package oidc 实现 OIDC 单点登录(P2,stdlib-only,无第三方依赖)。
Package oidc 实现 OIDC 单点登录(P2,stdlib-only,无第三方依赖)。
presign
Package presign 实现预签名上传 service。
Package presign 实现预签名上传 service。
preview
Package preview 预览域服务:取件校验与预览生成/持久化的业务编排。
Package preview 预览域服务:取件校验与预览生成/持久化的业务编排。
request
Package request 寄件码/反向收件(P2):用户创建投递链接,访客凭链接上传, 文件以链接主人名义成为普通分享(复用分享过期/清理/通知机制)。
Package request 寄件码/反向收件(P2):用户创建投递链接,访客凭链接上传, 文件以链接主人名义成为普通分享(复用分享过期/清理/通知机制)。
share
files.go — 直传落盘与下载取流的存储收口(share 域存储接缝)。
files.go — 直传落盘与下载取流的存储收口(share 域存储接缝)。
API Key 临期站内通知(波次3):定期扫描 7 天内到期的有效 Key, 给属主发站内信(带 Webhook 外推),并打去重标记。
API Key 临期站内通知(波次3):定期扫描 7 天内到期的有效 Key, 给属主发站内信(带 Webhook 外推),并打去重标记。
gen
handler/share
多文件分享下载辅助(P0 多文件):子文件单流 + zip 打包流。
多文件分享下载辅助(P0 多文件):子文件单流 + zip 打包流。
pkg
gate
Package gate 上传/下载准入闸门。
Package gate 上传/下载准入闸门。
metrics
Package metrics 业务指标(治理 2026-10-03)。
Package metrics 业务指标(治理 2026-10-03)。
middleware
Package middleware 提供 HTTP 中间件。
Package middleware 提供 HTTP 中间件。
security
Package security 提供独立的安全原语:
Package security 提供独立的安全原语:
transfer
Package transfer 提供传输日志(上传/下载)的异步记录。
Package transfer 提供传输日志(上传/下载)的异步记录。
utils
randomcode.go 随机码/令牌与上传路径的统一生成收口。
randomcode.go 随机码/令牌与上传路径的统一生成收口。
repo
db
Package db 提供数据库连接与迁移。
Package db 提供数据库连接与迁移。
db/dao
page.go 分页样板的单一实现。
page.go 分页样板的单一实现。
providers.go 云厂商对象存储预设(S3 兼容协议)。
providers.go 云厂商对象存储预设(S3 兼容协议)。
opendal
Package opendal 提供 OpenDAL 风格的存储抽象。
Package opendal 提供 OpenDAL 风格的存储抽象。
transport
http/handler
Package handler 提供定制 HTTP handlers(不走 thrift IDL 生成)。
Package handler 提供定制 HTTP handlers(不走 thrift IDL 生成)。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL