Files

30 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: 关键技术选型与取舍
type: decision
permalink: main/projects/d44c219a-0b31-4de1-b160-323eb34a4c6a/关键技术选型与取舍
stable_id: ae318134-8651-4563-bc22-491c51f87af4
scope: project
project_id: d44c219a-0b31-4de1-b160-323eb34a4c6a
memory_type: decision
status: active
revision: 1
restored_from_commit: 6a6a895eafcca6052e81a14fca103a42635dd1c2
created_at: '2026-09-23T15:07:19.579757+00:00'
updated_at: '2026-09-23T15:07:19.579829+00:00'
tags:
- architecture
- decision
- security
- config
---
- **UserKey 明文存库、AppKey 加密存库**:UserKey 是全系统唯一无外部恢复途径的凭据(天河链不留存),明文使备份跨重装可恢复、不依赖 `SETTING_ENCRYPTION_KEY`;单有 UserKey 无 AppKey(仍加密、可向天河重取)用不了钱包。UI 掩码,揭示/复制/轮换二次确认且记操作日志。
- **单一根 `.env` + 安装向导**(取代早期 `config/` JSON 方案):消除 JSON+.env+config 三套并存;Prisma CLI 自动读 cwd .env、compose 自动读同级 .env,根 .env 最兼容。Docker 因 compose 约束必须有 .env。
- **安装向导并入 admin**(删除独立 `apps/install`):减少一个工程;admin 路由守卫探测 `/api/install/status` 未安装强制进 `/install`。
- **核心部署 = 单 Node 服务 + 安装向导**,Docker/SSH 为可选自动化;本地 dev 不引入 PM2(前台阻塞 + Windows Job Object 整树清理)。
- **追溯码链接动态生成不固化 DB**:换域名全部自动跟随;`/t/:code` 302 保留兼容历史二维码。
- **预览用类 TOTP 无状态令牌**:不落库、外泄最长 2 窗口失效;预览 URL 仅点击瞬间拼接,不进行数据/导出。
- **防伪状态模块可排序隐藏但副作用后端固定**:页面配置不能关闭激活/计数/日志。
- **历史 revision 快照持旧存储 key**:媒体归位后历史审核详情旧图可能 404,开发期无线上数据已确认不处理。
- **选型**:PhotoSwipe v5(MIT,用户确认)替代自写查看器;NestJS 11 + Express 5 + Node 24(Node 20 已 EOL);Vite 6;echarts 6;`archiver`/`unzipper` 流式备份;`@aws-sdk/lib-storage` multipart。根 `pnpm.overrides`:multer 2.2.0、exceljs>uuid 11、qs 6.15.3;不要跨主版本覆盖 file-type/path-to-regexp。
- **明确不做**:NFC、多机构隔离、主动预警、C 端骨架屏、查询日志地区解析(已移除)、父子树状时间轴节点。证书:C 端水印图、后台原件。查询日志 IP/UA 不脱敏仅后台可见。