Repository navigation
Roadmap.zh_CN
Doug Blank edited this page Oct 5, 2026
·
1 revision
🌐 English · Deutsch · Español · Français
Gramps Connect 正在积极开发中。本页如实说明哪些功能尚未实现,内容来自项目自己的待办清单——可以帮助您判断它是否已经满足您的需求,或者选择一个可以贡献的方向。
- 编辑覆盖尚不完整。 地点和摘录各自缺少一些特定字段。完整的逐类型说明见数据模型与编辑。
除标签外(标签改为在客户端合并),所有类型都支持合并重复记录——见数据模型与编辑。
- 在线状态层(谁正在查看或编辑什么)计划实现为一种刻意保持短暂的内存/Redis 机制,与架构中描述的持久化事务历史同步路径分开。
-
认证/权限。
app/有一个使用真实凭据的最简登录表单(除桌面版外没有任何硬编码),但还没有刷新令牌轮换或过期处理。正在参照 gramps-web 自己的Auth类来实现。 - 对同一对象真正并发编辑时的合并/冲突体验是一个尚未解决的开放设计问题——
dev-fixtures/layer3-sync/测试环境(见开发)正是为测试这种场景而存在的。现在保存时会检测记录在编辑表单打开后是否已在服务器上被修改,并拒绝覆盖它(见数据模型与编辑),但这只是冲突检测,而不是解决——仍然无法并排查看两个版本或合并它们。 -
gramps-web-api的筛选下推缺口:较旧的GrampsObjectsResource.get()端点仍然会无条件地加载所有对象,然后才应用filter/rules/gql/oql——这是超大家谱上的一个已知性能问题。较新的ObjectQueryResource端点(Gramps Connect 自己的/query/端点和 GOQL 所依赖的端点)已经通过另一条代码路径实现了真正的 SQL 下推;它是否能取代对旧端点的修复,仍是一个悬而未决的问题。 - 对象模型界面的全面重新设计、一套正式的设计系统,以及“搜索即导航”,都是正在考虑但尚未确定范围的方向。
- 让 Gramplet 能够编辑或创建对象,而不仅仅是读取(目前通过
filter()/get_object()只读)。 - 支持 Gramplet 之外更多类型的 Gramps 插件——工具、报告。
- 生成 PDF 表单(需要一个 PDF 导入器)。
- 把项目迁移到 GitHub 上的
gramps-project组织之下——除其他好处外,这可能为通过 Gramps 现有的 Weblate 基础设施进行翻译打开大门。 - 最近访问的条目。
- 撤销,既然按对象的变更历史(见数据模型与编辑)已经为界面提供了一个可以提供撤销的位置——真正的实现仍需要单独审查其正确性和冲突处理(当别人在此之后又编辑了该记录时,“撤销”意味着什么),而不只是把一个按钮接到现有的差异数据上。
- 应用内导航使用真正的
<a href>链接(记录标题、“在其列表页中打开”……),而不是如今按钮样式的点击,这样浏览器原生的右键“在新标签页中打开”和中键点击都能对它们生效——便于并排比较两条记录。 - 在地图图像叠加层与其所附加的地点之间建立真正的 Gramps 级关联。目前叠加层的 KML 以一种应用内部的方式嵌入了源图像的 handle,Gramps 本身看不到,因此它不会出现在“被引用”搜索中,桌面版 Gramps 的“删除未使用对象”工具也不会知道两者相关——如果之后该图像与其他所有引用它的对象解除关联,叠加层就会悄无声息地失效。
- 地点的备用名称编辑(见数据模型与编辑)还能让地图叠加层的按日期可见性读取某个特定的备用名称,而不必为每个时代单独建立一条地点记录——目前,同一物理位置上日期范围不同的两个叠加层各自需要自己的地点,因为地点的日期存放在它的(主)名称上。
现在每次 push 和 pull request 都会运行一个 CI 工作流:测试、类型检查和构建,因此有问题的提交会被自动发现,而不必依赖有人手动运行这些检查。build-docker.yml 和 build-standalone.yml 仍然只能手动触发(它们需要推送到镜像仓库或特定平台的 runner,不值得在每次提交时都花费)。仓库中至今仍未配置任何 linter(ESLint/Prettier)——是否添加被列为待办工作。CI 运行的测试和类型检查命令见开发。
本页只是一份快照。权威且持续更新的版本是 gramps-connect 仓库中的 TODO.md——在认定这里列出的某项仍未完成之前,请先去那里(以及仓库的问题跟踪器)查看当前状态。
Gramps Connect is part of the family of Gramps-based software.
Using the app
- Overview
- Installing
- Deploying
- Messaging
- GOQL (advanced search)
- Gramplets & Add-on Store
- Data Model & Editing
- FAQ
Building & contributing