Files
Nexus/docs/design/specs/2026-05-16-password-presets-design.md
T
Your Name c9a99f4fb3 fix: 全项目文档对齐 + 代码清理
代码修复:
- web/agent/agent.py: datetime.utcnow() → datetime.now(timezone.utc)
- requirements.txt: 移除 paramiko==3.5.0 (已无活跃引用)
- 删除 server/infrastructure/ssh/pool.py (DEPRECATED, 无引用)

连接池三层对齐 (config.py/.env.example/session.py):
- DB_POOL_SIZE 100→160, DB_MAX_OVERFLOW 100→120
- 基于 MySQL max_connections=400, install.php 公式

文档修复 (21项):
- P0: 硬编码域名/IP替换为配置变量占位符
- P1: 10个过时设计文档加归档标注 (引用旧文件结构)
- P2: step-3-webssh报告 paramiko引用修正
- 6份审查报告连接池参数勘误 100/100→160/120
- ECC安全报告 EC5 datetime.utcnow 标记已修复
- docs/README.md 文档索引重写
- docs/memory/mem_nexus_overview.md 移除硬编码凭证
- docs/project/tech-stack-inventory.md paramiko标记已移除

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 08:19:56 +08:00

2.9 KiB
Raw Blame History

密码预设 — 设计规格

⚠️ 已归档 — 2026-05-22 本文档引用的文件结构已过时:server/database.py 已拆分为 server/domain/models/PHP 前端 (servers.php/settings.php) 已迁移到 Tailwind CSS v4 + Alpine.js (web/app/servers.html/settings.html)。功能已实现,保留本文档供历史参考。

背景

多台服务器的 SSH 密码通常相同,每次新建服务器时重复输入密码效率低。提供密码预设列表,新建服务器时下拉选择即可。

核心变更

数据模型

新增 PasswordPreset 表:

class PasswordPreset(Base):
    __tablename__ = "password_presets"

    id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String(100), nullable=False, comment="预设名称")
    encrypted_pw = Column(String(500), nullable=False, comment="加密后的密码")
    created_at = Column(DateTime, default=datetime.datetime.utcnow)

加密方式与 Server.password 一致(Fernet),复用 encrypt_value / decrypt_value

API 端点

方法 路径 说明
GET /api/servers/password-presets 列表,只返回 id + name(不含密码)
POST /api/servers/password-presets 创建 {name, password},加密存储
DELETE /api/servers/password-presets/{id} 删除
POST /api/servers/password-presets/{id}/reveal 解密返回明文(需 API 认证)

前端改动

servers.php 密码字段区:

密码预设: [选择预设 ▾]          ← 新建
  ├─ 生产环境 — 123abc
  ├─ 测试环境 — test456
  └─ 自定义(手动输入)

SSH密码: [自动填充 ████████] 👁
         ← 选预设后自动填入,也可手动改

settings.php 新增「密码预设管理」tab/区:

┌─ 密码预设管理 ────────────────────────────────┐
│  名称              操作                        │
│  生产环境密码      [👁 查看] [🗑 删除]         │
│  测试环境密码      [👁 查看] [🗑 删除]         │
│  [+ 添加]  名称: [____] 密码: [____] [保存]   │
└────────────────────────────────────────────────┘

涉及文件

文件 改动
server/database.py PasswordPreset 模型
server/api/servers.py 4 个预设端点
web/servers.php 预设下拉 + JS 联动
web/settings.php 预设管理面板
docs/CHANGELOG.md 追加记录

预估:5 文件,~200 行。

规格自检

  • 无占位符/TODO
  • 加密/解密复用现有 infrastructureFernet + encrypt_value/decrypt_value
  • 列表 API 不返回密码明文,reveal 端点需单独调用
  • 范围聚焦:仅密码预设,不涉及其他