docs: 添加工程目录及技术文档
- 添加本体论、ClaudeCode、Crablet、SpecKit 等技术文档 - 添加 AgentSkills、OpenClaw、Pencil、VSCode 等工具文档 - 添加 allenai 研究文档和 README 说明
This commit is contained in:
+477
@@ -0,0 +1,477 @@
|
||||
# [GitHub Spec Kit](https://speckit.org/)
|
||||
|
||||
| 指挥 | 描述 | 用途 | 脚本 |
|
||||
|----------------|--------------------------------------------------|---------------------------------|---|
|
||||
| 第一阶段 | | | |
|
||||
| /constitution | 宪法:确立项目原则。制定项目管理原则和发展指南 | 先运行以建立项目标准 | |
|
||||
| /specify | 规格:明确定义需求。定义你想构建的内容(需求和用户故事) | 关注“做什么”和“为什么”,而不是技术栈 | create-new-feature.sh |
|
||||
| /clarify | 澄清:解决歧义。通过结构化提问澄清未明确的领域 | 除非明确跳过,否则必须先运行/plan | check-prerequisites.sh |
|
||||
| 第二阶段 | | | |
|
||||
| /plan | 规划:选择技术栈和架构。使用选定的技术栈制定技术实施计划 | 明确架构、框架和技术决策 | setup-plan.sh + update-agent-context.sh |
|
||||
| /tasks | 任务:拆分成可作的项目。生成可执行的任务列表 | 将计划拆解为可执行的步骤 | check-prerequisites.sh |
|
||||
| /analyze | 跨工件一致性与覆盖分析 | 跑过后,先跑/tasks/implement | check-prerequisites.sh |
|
||||
| /implement | 实施:生成可工作代码。执行所有任务,按计划构建功能 | 根据规范生成可工作代码 | check-prerequisites.sh |
|
||||
| 补充 | | | |
|
||||
| /checklist | 根据用户需求生成当前功能的定制检查清单 | | check-prerequisites.sh |
|
||||
| /taskstoissues | 将现有任务转化为基于现有设计产出的、具有依赖关系的可执行GitHub功能需求事项 | | check-prerequisites.sh |
|
||||
|
||||
## ipass 使用 Spec Kit
|
||||
|
||||
- 提前整理需求,创建 @/docs/specification.md
|
||||
- 始终在分支开发,功能测试通过后合并到 trunk
|
||||
|
||||
### 确立项目原则 constitution
|
||||
|
||||
- 根据交互式或预设原则输入创建/更新项目章程,并保持所有关联模板的同步更新
|
||||
|
||||
```bash
|
||||
/speckit.constitution
|
||||
- Always Use Chinese in SpecKit, Specfiy, Claude Code
|
||||
- SpecKit/Specfiy 的所有文档必须使用中文编写,包括但不限于:规格说明(spec.md)、实施计划(plan.md)、任务列表(tasks.md)、检查清单(checklists/*.md)
|
||||
- 代码注释必须使用中文,变量和函数命名使用英文,但注释说明必须使用中文,错误提示信息必须使用中文,用户文档必须使用中文
|
||||
- 当需要简化代码的时候,可以使用 `@"code-simplifier:code-simplifier (agent)"`
|
||||
- 当需要绘制架构图、甘特图、UML图、部署图、流程图、时序图、序列图等编码相关的图时,使用 'Mermaid' 格式
|
||||
- 在开发阶段,不要新启动数据库容器,使用现有的 'mysql8' 容器, 开发环境数据库用户 'root', 密码 'mysql_root_password',如果新创建数据库,则新创建一个 mysql 账号来使用新数据库,如果 'mysql8' 容器不可用,提示用户手动启动
|
||||
- `@.member/arno.md` 是供 Arno Jin 个人开发 iPass 的笔记, AI Agent/Skills/Plugins/MCP/Commands 不应该从这个笔记文件读取数据
|
||||
- `@docs/UI.md` 是iPass项目界面设计方案
|
||||
- `@docs/specification.md` 是iPass项目需求文档
|
||||
- 文档统一保存在 `@docs/` 目录,不要在其他地方保存
|
||||
- shell脚本统一保存在 `@scripts/` 目录,不要在其他地方保存
|
||||
- 执行任何命令前,必须先通过 `pwd` 确认当前工作目录是否是要执行命令所在的路径,避免路径错误
|
||||
- 脚本文件必须在开头设置 `set -e` 并记录工作目录
|
||||
- 当需要简化代码时,优先使用 `@"code-simplifier:code-simplifier (agent)"` 代理
|
||||
- 所有 Markdown `.md` 文件必须使用 2 个空格作为缩进,而非制表符 (Tab)
|
||||
- SpecKit/Specfiy 模板中的项目团队、负责人、OWNER 等占位符必须使用 `git config user.name` 获取的当前 Git 用户名填充,AI 助手在生成新文档时,必须自动查询 Git 配置并填充相关占位符,禁止使用硬编码的默认值(如 "作者姓名"、"待定" 等),如果 Git 配置未设置,必须提示用户先配置 Git 用户信息
|
||||
- 服务端不应该提供客户端设备注册API,而是应该通过 `ipass-cli device add --device-id <device-id> --name "我的MacBook"` 命令,在服务端进行客户端设备注册
|
||||
- 所有 Python 代码必须通过 `pyright` 严格类型检查:在 pyproject.toml 中启用 `pyright` 严格模式;所有函数必须具有类型注解;禁止使用 `# type: ignore`,除非在代码注释中有明确说明;类型错误阻止提交和 PR;使用存根文件 (.pyi) 定义外部类型
|
||||
|
||||
# 要求 Specify 使用中文
|
||||
/speckit.constitution Always Use Chinese in speckit
|
||||
# 执行后, Specify 已经分析了 CLAUDE.md 和 specification.md 的内容提取到了宪章中
|
||||
|
||||
# 避免读取临时文件内容
|
||||
/speckit.constitution speckit 不要读取和使用 @docs/arno.md 中的内容,这个文档是供开发者临时保存文本用的
|
||||
|
||||
# 约束行为
|
||||
/speckit.constitution 我发现创建的 @specs/001-ipass-platform/checklists/requirements.md 使用的是英文,在 SpecKit 中,不管在哪个阶段,都必须使用中文。
|
||||
|
||||
# 提供工具
|
||||
/speckit.constitution 当需要简化代码的时候,可以使用 @"code-simplifier:code-simplifier (agent)"
|
||||
/speckit.constitution 当需要绘制架构图、甘特图、UML图、部署图、流程图、时序图、序列图等编码相关的图时,使用 Mermaid 格式
|
||||
/speckit.constitution 当需要绘制架构图时,使用 Mermaid 格式
|
||||
/speckit.constitution 统一使用国内镜像源:
|
||||
1. Ubuntu 等系统使用 mirrors.tuna.tsinghua.edu.cn 镜像源
|
||||
2. npm 镜像 https://registry.npmmirror.com
|
||||
3. pip 镜像 https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
|
||||
4. Node.js 镜像 https://npmmirror.com/mirrors/node
|
||||
/speckit.constitution 不要启动单独的 mysql 容器,使用现有的 mysql8 容器, 用户 root, 密码 mysql_root_password,如果新创建数据库,则新创建一个 mysql 账号来使用新数据库
|
||||
|
||||
docker ps
|
||||
⎿ ⧉ Selected 1 lines from docker/volumes/mysql/docker-compose.yml in Visual Studio Code
|
||||
⎿ CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||
2ef05ed5ff2b arno:mysql8 "docker-entrypoint.s…" 4 hours ago Up 4 hours (healthy) mysql8
|
||||
|
||||
/speckit.constitution 使用 @docs/ui.md 作为界面标准
|
||||
/speckit.constitution 结合 ui-ux-pro-max SKILLS 来生成界面
|
||||
/speckit.constitution 执行任何命令前,先确认当前路径是否是要执行命令所在的路径。避免路径错误。
|
||||
```
|
||||
|
||||
### 明确功能 specify
|
||||
|
||||
- 根据自然语言描述创建/更新功能规格说明书
|
||||
|
||||
```bash
|
||||
/speckit.specify 根据 @docs/specification.md 中的功能需求和非功能需求,开发ipass服务端和客户端。
|
||||
# 下一步操作
|
||||
#
|
||||
# 规格已就绪,可以继续以下工作流:
|
||||
#
|
||||
# 1. 进入规划阶段: 运行 /speckit.plan 生成实施计划
|
||||
# 2. 需求澄清: 如有疑问可运行 /speckit.clarify
|
||||
# 3. 任务生成: 规划完成后运行 /speckit.tasks 生成任务列表
|
||||
#
|
||||
# 🔗 相关链接
|
||||
#
|
||||
# - Pull Request: https://gitea.szis.dev/szisos/ipass/pulls/new/001-ipass-platform
|
||||
# 需要在上述 Pull Request 做代码拉取的批准
|
||||
/speckit.specify 检查当前 @specs/001-ipass-platform/spec.md 是否符合要求
|
||||
/speckit.specify 根据 @docs/ui.md 检查是否要更新文档
|
||||
/speckit.specify 检查 @specs/1-ui-docs-update
|
||||
/speckit.specify 检查 @specs/002-ui-docs-update/spec.md 中对 ui和ux的要求是否都体现到了 @specs/003-ipass-implementation/spec.md 对 ipass-client 的界面定义上.如果没有,请补充
|
||||
```
|
||||
|
||||
### 澄清存在歧义的问题 clarify
|
||||
|
||||
- 通过提出最多5个针对性澄清问题,识别当前功能规格说明中的未明确项,并将答复内容编码回规格文档
|
||||
|
||||
```bash
|
||||
/speckit.clarify 在 @.specify/memory/constitution.md 中使用了和 @docs/specification.md 不同的加密处理方式。根据 @/docs/encryption-analysis.md 的建议对 @.specify/memory/constitution.md 和 @docs/specification.md 进行调整。
|
||||
/speckit.clarify 检查 SpecKit 相关脚本文件是否完整,如果缺失,请补充。
|
||||
/speckit.clarify 5.1 服务端 API 中 ‘设备注册’ 对应的接口 /api/v1/device/register 不应该被客户端访问到,客户端设备注册是通过 ipass-server-cli 的命令来进行的。
|
||||
/speckit.clarify 执行 '/speckit.plan' 的时候,反馈缺少 'setup-plan.sh',请补充 'setup-plan.sh',并分析是否还存在其他确实的 SpecKit 相关脚本。
|
||||
/speckit.clarify 001-ipass-platform 内容已经合并到了 trunk ,请删除本地及远程的功能分支 001-ipass-platform。
|
||||
/speckit.clarify 在执行 '/speckit.analyze' 的时候,出现以下错误。请检查是否是因为生成的脚本 @.specify/scripts/bash/check-prerequisites.sh 编写存在问题
|
||||
Bash(.specify/scripts/bash/check-prerequisites.sh --json --require-tasks --include-tasks)
|
||||
⎿ Error: Exit code 1
|
||||
未知参数: --require-tasks
|
||||
/speckit.clarify 执行以下操作:
|
||||
1. 删除 @.specify/scripts/bash/*.sh 。
|
||||
2. 复制原始的 SpecKit 脚本到 @.specify/scripts/bash/ 目录。
|
||||
3. 检查复制过来的脚本是否需要按照中文要求和项目要求进行调整。
|
||||
4. 完成上述3个任务后,在不破坏原始的 SpecKit 脚本功能的前提下,将脚本的注释和输出信息换成中文。
|
||||
|
||||
1. 创建 1-ui-docs-update 分支,切换到该分支
|
||||
2. 清空 tasks.md 中所有任务标记完成的标识
|
||||
```
|
||||
|
||||
### 规划 plan
|
||||
|
||||
- 执行实施规划工作流,使用规划模板生成设计工件
|
||||
|
||||
```bash
|
||||
/speckit.plan
|
||||
# 实施计划写入文件
|
||||
# Read agent output aae9c8f
|
||||
# ⎿ Error: File content (326.4KB) exceeds maximum allowed size (256KB).
|
||||
# Please use offset and limit parameters to read specific portions of the file, or use the GrepTool to search for specific content.
|
||||
```
|
||||
|
||||
### 拆分任务 task
|
||||
|
||||
- 基于现有设计工件,生成可执行的、依赖关系排序的功能任务清单 task.md
|
||||
|
||||
```bash
|
||||
/speckit.tasks 生成详细任务列表
|
||||
# 现在规划阶段已经完成。让我总结一下当前的状态并准备开始实施:
|
||||
#
|
||||
# ✅ 规划阶段完成
|
||||
#
|
||||
# 已完成的工作:
|
||||
#
|
||||
# 1. 规格文档 (specs/2-ipass-implementation/spec.md)
|
||||
# - 功能规格定义了 6 个用户场景
|
||||
# - 从用户视角描述"是什么"和"为什么"
|
||||
# 2. 技术设计 (specs/2-ipass-implementation/technical-design.md)
|
||||
# - 完整技术栈定义
|
||||
# - 系统架构和接口规范
|
||||
# - 从开发视角描述"如何实现"
|
||||
# 3. 实施计划 (docs/plan/2-ipass-implementation.md)
|
||||
# - 技术上下文和宪章检查
|
||||
# - 关键里程碑和 Mermaid 甘特图
|
||||
# 4. 任务列表 (specs/2-ipass-implementation/tasks.md)
|
||||
# - 87 个任务,覆盖 6 个用户场景
|
||||
# - 每个任务包含具体的文件路径和实施细节
|
||||
# - 标记了并行任务 [P] 和用户故事关联 [US1-US6]
|
||||
# - 包含 MVP 范围定义
|
||||
#
|
||||
# MVP 范围: Phase 1-4 + Phase 6 (US1) - 共 38 个任务
|
||||
#
|
||||
# 下一步: 根据任务列表开始实施,从 Phase 1 (T001-T010) 开始:
|
||||
#
|
||||
# Phase 1: 设置阶段
|
||||
# - T001: 创建项目目录结构 ipass/
|
||||
# - T002-T009: [P] 并行创建各种模块和配置文件
|
||||
# - T010: 初始化 Alembic 迁移配置
|
||||
#
|
||||
# 是否需要我开始执行任务 T001,创建项目的目录结构?
|
||||
```
|
||||
|
||||
### 分析文档中不一致的地方 analyze
|
||||
|
||||
- 执行非破坏性跨工件一致性检查与质量分析(覆盖规格文档.md、计划文档.md及任务清单.md),于任务生成后实施
|
||||
|
||||
```bash
|
||||
/speckit.analyze
|
||||
# 下一步行动
|
||||
#
|
||||
# 必须在 /speckit.implement 前解决:
|
||||
# 1. [CRITICAL] A1: 统一设备注册机制描述
|
||||
# - 在 technical-design.md 第 237 行添加引用:"详见 spec.md 第 13.1 节设计澄清记录"
|
||||
# - 强调 CLI-only 方案,删除可能的歧义
|
||||
# 2. [HIGH] A2: 修正任务数量统计
|
||||
# - 更新 tasks.md 第 12 行:"总任务数: 137"
|
||||
# 3. [HIGH] A3: 统一加密算法描述
|
||||
# - 在所有文档中明确:"AES-256-GCM (主) / XChaCha20-Poly1305 (备选,用于无硬件加速设备)"
|
||||
# 4. [HIGH] A4: 统一 Argon2id 参数单位
|
||||
# - 统一为 "128MB"(而非 "128 * 1024")
|
||||
# 5. [HIGH] A5: 添加性能测试前提
|
||||
# - 更新 spec.md 3.2 节:"在标准开发硬件(4GB RAM, 2 核 CPU)上,客户端本地操作 < 100ms"
|
||||
#
|
||||
# 建议在实施前解决:
|
||||
#
|
||||
# 6. [MEDIUM] A6-A10: 添加缺失的测试任务
|
||||
# - T138: 容量测试(10,000 条目)
|
||||
# - T139: 性能基准测试(自动化)
|
||||
# - T140: 渗透测试
|
||||
# 7. [MEDIUM] A11: 统一数据模型术语
|
||||
# - 建议:spec.md "操作日志(AuditLog)" → "同步日志(SyncLog)"
|
||||
#
|
||||
# 可选改进:
|
||||
#
|
||||
# 8. [LOW] A13-A15: 清理模糊性和重复
|
||||
# - 删除"直观的图形界面"
|
||||
# - 验证 MySQL 容器路径
|
||||
# - 合并验收标准和任务
|
||||
/speckit.analyze
|
||||
1. [CRITICAL] A1: 统一设备注册机制描述 中 technical-design.md 是设计为通过 cli 来使用,符合要求。可以增加引用:"详见 spec.md 第 13.1 节设计澄清记录"
|
||||
2. 针对发现的2、3、4、6、7问题,按照推荐的方式进行修复
|
||||
3. [HIGH] A5: 添加性能测试前提 中对性能的要求,可以不用处理。理由是本软件是一个人使用,存储的密码条数不多。请同步更新相关文档
|
||||
```
|
||||
|
||||
### 实施计划 implement
|
||||
|
||||
- 执行实施计划,处理并完成 tasks.md 中定义的所有任务
|
||||
|
||||
```bash
|
||||
/speckit.implement
|
||||
# 建议的下一步
|
||||
#
|
||||
# 1. 运行规格澄清: /speckit.clarify - 识别 spec.md 中需要澄清的领域
|
||||
# 2. 完善规格说明: 根据澄清结果更新 spec.md
|
||||
# 3. 更新 checklist: 手动或重新生成 checklist 并标记完成项
|
||||
# 4. 验证 checklist: 确保所有 16 项都通过
|
||||
# 5. 重新运行实施: /speckit.implement 继续实施
|
||||
#
|
||||
# 是否需要我帮助您运行 /speckit.clarify 来开始澄清流程?
|
||||
|
||||
/speckit.implement git 分支 2-ipass-implementation 已经合并到了 trunk 。执行实施计划,处理并完成 tasks.md 中定义的所有任务。
|
||||
# 好的,我了解了技术架构。现在让我开始实施。由于这是一个大型项目(137个任务),我将创建追踪并按阶段推进。
|
||||
#
|
||||
# ✻ Compacting conversation… (ctrl+c to interrupt · ctrl+t to hide todos · 1m 18s · ↓ 425 tokens)
|
||||
# ⎿ ☐ Phase 1: 设置阶段 (T001-T010)
|
||||
# ☐ Phase 2: 基础设施层 (T011-T020)
|
||||
# ☐ Phase 3: 服务端数据库层 (T021-T027)
|
||||
# ☐ Phase 4: US1 首次设置 (T028-T038)
|
||||
# ☐ Phase 5-15: 其他阶段 (T039-T137)
|
||||
|
||||
/speckit.implement
|
||||
1. 运行 uv pip install -r requirements.txt 安装依赖
|
||||
2. 运行 PYTHONPATH=/workspace/ipass && uv run python scripts/init_db.py 初始化数据库
|
||||
3. 继续 Phase 4 (US1 - 首次设置) 的实现
|
||||
/speckit.implement 继续实现 US1 GUI - 完整的图形界面
|
||||
|
||||
/speckit.implement 进行:
|
||||
1. 测试:运行集成测试验证完整流程
|
||||
2. US2 实现:添加第二台设备的证书导入功能
|
||||
3. US3 实现:密码管理主界面(添加、查看、编辑密码)
|
||||
|
||||
|
||||
/speckit.implement 参考 @specs/2-ipass-implementation/tasks.md 完成 US3(密码管理主界面),还需要实现:
|
||||
|
||||
优先级高
|
||||
|
||||
1. 数据访问层 (client/core/database.py)
|
||||
- PasswordEntryDAO: add, update, delete, get_all, search
|
||||
- CategoryDAO: add, update, delete, get_all, get_tree
|
||||
2. GUI 对话框
|
||||
- 添加密码对话框 (add_password.py)
|
||||
- 查看密码对话框 (view_password.py)
|
||||
- 编辑密码对话框 (edit_password.py)
|
||||
3. 密码列表界面 (main_window.py 扩展)
|
||||
- PasswordListView 显示列表
|
||||
- 搜索和过滤功能
|
||||
- 操作按钮布局
|
||||
|
||||
优先级中
|
||||
|
||||
4. 剪贴板功能 (client/gui/clipboard.py)
|
||||
- 复制到剪贴板
|
||||
- 30秒后自动清空
|
||||
5. 同步功能 (client/core/sync.py 扩展)
|
||||
- CRDT 操作记录
|
||||
- 同步客户端
|
||||
- 离线队列
|
||||
|
||||
优先级低
|
||||
|
||||
6. 服务端 API (US3 相关)
|
||||
- FastAPI 应用初始化
|
||||
- 同步 API 路由
|
||||
- 设备验证中间件
|
||||
|
||||
完成高优先级任务后提交并推送代码
|
||||
|
||||
/ralph-loop:ralph-loop /speckit.implement @specs/2-ipass-implementation/tasks.md
|
||||
```
|
||||
|
||||
### 开发
|
||||
|
||||
```bash
|
||||
/speckit.implement 虽然任务标记为完成了,但实际代码功能上缺少很多功能.例如:
|
||||
1. 不能添加分类
|
||||
2. 不能调整服务器设置
|
||||
3. 不能添加分类
|
||||
4. 不能在客户端和服务端同步数据
|
||||
5. UI界面不符合定义
|
||||
```
|
||||
/speckit.plan
|
||||
```bash
|
||||
/speckit.specify
|
||||
弹出的确认框,现在是 'OK', 'Yes', 'No' 这样的英文按钮。
|
||||
改为 '确认', '取消' 两个按钮。
|
||||
检查一下其他界面、按钮是否还存在英文文字内容。
|
||||
/speckit.clarify
|
||||
/speckit.plan
|
||||
/speckit.tasks
|
||||
/speckit.implement
|
||||
```
|
||||
|
||||
```bash
|
||||
# 004-ui-requirements-sync
|
||||
/speckit.specify
|
||||
1. 在登陆界面直接显示密码输入框、确定后进入管理界面,不需要点击“登陆”按钮弹出界面。同步调整“忘记密码”
|
||||
2. 减少弹出窗口,在界面底部增加状态条,用于显示信息,或者在界面右上角显示浮动消息,过一段时间自动隐藏。
|
||||
3. 在程序设置界面修改主题为浅色、深色,没有效果。
|
||||
/speckit.plan 先提交代码,在开始执行 plan
|
||||
/speckit.tasks
|
||||
/speckit.implement
|
||||
```
|
||||
|
||||
```bash
|
||||
# 008-ux-message-bar-logo
|
||||
/speckit.specify
|
||||
1. 移除'界面右上角显示浮动消息'的功能
|
||||
2. 统一在打开窗口的底部增加消息栏,消息和提示在消息栏显示
|
||||
3. 在登陆界面显示LOGO
|
||||
4. 界面宽度缩小后,搜索输入框和分类标题重叠了,修改限制
|
||||
/speckit.plan
|
||||
/speckit.tasks
|
||||
/speckit.implement
|
||||
/speckit.implement
|
||||
1. 运行单元测试验证功能
|
||||
2. 生成真实的 PNG LOGO
|
||||
3. 编译 Qt 资源文件
|
||||
4. 提交代码并合并到 trunk
|
||||
|
||||
/speckit.implement 分支 008-ux-message-bar-logo 上的以下4个功能请检查是没有实现还是没有正确的合并到 trunk
|
||||
1. 移除'界面右上角显示浮动消息'的功能
|
||||
2. 统一在打开窗口的底部增加消息栏,消息和提示在消息栏显示
|
||||
3. 在登陆界面显示LOGO
|
||||
4. 界面宽度缩小后,搜索输入框和分类标题重叠了,修改限制
|
||||
|
||||
/speckit.implement 服务端收到以下信息,但查看 ipass-db 没有数据
|
||||
INFO: 127.0.0.1:53380 - "GET /health HTTP/1.1" 200 OK
|
||||
[2026-01-16 14:21:34] [INFO] [server] 收到同步请求: device_id=device-09ca8d9d-955b-427b-8fc1-cc5176886d15, crdt_ops数量=4
|
||||
[2026-01-16 14:21:34] [INFO] [server] 设备验证通过: device-09ca8d9d-955b-427b-8fc1-cc5176886d15
|
||||
[2026-01-16 14:21:34] [DEBUG] [server] 转换操作: update - entry_id=5899a457-d57e-4140-912b-3265508d8481, has_data=True
|
||||
[2026-01-16 14:21:34] [DEBUG] [server] 转换操作: update - entry_id=cdb732e5-4452-4b14-83a8-97812429983a, has_data=True
|
||||
[2026-01-16 14:21:34] [DEBUG] [server] 转换操作: update - entry_id=b998838a-b22c-4976-9f8a-e7be18832532, has_data=True
|
||||
[2026-01-16 14:21:34] [DEBUG] [server] 转换操作: update - entry_id=c000cf35-3139-4c4e-ac8c-a6eb519017a6, has_data=True
|
||||
[2026-01-16 14:21:34] [INFO] [server] 成功转换 4 个操作
|
||||
[2026-01-16 14:21:34] [WARNING] [server] 跳过更新操作(条目不存在): entry_id=5899a457-d57e-4140-912b-3265508d8481
|
||||
[2026-01-16 14:21:34] [WARNING] [server] 跳过更新操作(条目不存在): entry_id=cdb732e5-4452-4b14-83a8-97812429983a
|
||||
[2026-01-16 14:21:34] [WARNING] [server] 跳过更新操作(条目不存在): entry_id=b998838a-b22c-4976-9f8a-e7be18832532
|
||||
[2026-01-16 14:21:34] [WARNING] [server] 跳过更新操作(条目不存在): entry_id=c000cf35-3139-4c4e-ac8c-a6eb519017a6
|
||||
[2026-01-16 14:21:34] [INFO] [server] 操作处理完成: 添加=0, 更新=0, 删除=0, 跳过=4
|
||||
[2026-01-16 14:21:34] [INFO] [server] 数据库提交成功
|
||||
|
||||
/speckit.implement 服务端收到以下信息,但查看 ipass-db 数据库,只同步了4条密码数据,目录数据,操作日志等都没有同步
|
||||
INFO: 127.0.0.1:52078 - "GET /health HTTP/1.1" 200 OK
|
||||
[2026-01-16 14:26:30] [INFO] [server] 收到同步请求: device_id=device-09ca8d9d-955b-427b-8fc1-cc5176886d15, crdt_ops数量=4
|
||||
[2026-01-16 14:26:30] [INFO] [server] 设备验证通过: device-09ca8d9d-955b-427b-8fc1-cc5176886d15
|
||||
[2026-01-16 14:26:30] [DEBUG] [server] 转换操作: update - entry_id=5899a457-d57e-4140-912b-3265508d8481, has_data=True
|
||||
[2026-01-16 14:26:30] [DEBUG] [server] 转换操作: update - entry_id=cdb732e5-4452-4b14-83a8-97812429983a, has_data=True
|
||||
[2026-01-16 14:26:30] [DEBUG] [server] 转换操作: update - entry_id=b998838a-b22c-4976-9f8a-e7be18832532, has_data=True
|
||||
[2026-01-16 14:26:30] [DEBUG] [server] 转换操作: update - entry_id=c000cf35-3139-4c4e-ac8c-a6eb519017a6, has_data=True
|
||||
[2026-01-16 14:26:30] [INFO] [server] 成功转换 4 个操作
|
||||
[2026-01-16 14:26:30] [INFO] [server] UPDATE 创建新条目: entry_id=5899a457-d57e-4140-912b-3265508d8481
|
||||
[2026-01-16 14:26:30] [INFO] [server] UPDATE 创建新条目: entry_id=cdb732e5-4452-4b14-83a8-97812429983a
|
||||
[2026-01-16 14:26:30] [INFO] [server] UPDATE 创建新条目: entry_id=b998838a-b22c-4976-9f8a-e7be18832532
|
||||
[2026-01-16 14:26:30] [INFO] [server] UPDATE 创建新条目: entry_id=c000cf35-3139-4c4e-ac8c-a6eb519017a6
|
||||
[2026-01-16 14:26:30] [INFO] [server] 操作处理完成: 添加=4, 更新=0, 删除=0, 跳过=0
|
||||
[2026-01-16 14:26:30] [INFO] [server] 数据库提交成功
|
||||
```
|
||||
|
||||
```bash
|
||||
# 009-unified-logging
|
||||
/speckit.specify 统一 ipass-server, ipass-server-cli, ipass-clinet 日志输出格式,并在每条日志前面显示时间,时间格式为:yyyy-MM-dd HH:MM:SS
|
||||
/speckit.plan
|
||||
/speckit.implement # 会自动执行 /speckit.tasks
|
||||
/speckit.implement 日志格式不符合要求,如下[DEBUG] 、[网络检查]、[Toast]
|
||||
[2026-01-16 14:10:57] [INFO] [client] Theme applied: system
|
||||
[2026-01-16 14:10:57] [INFO] [client] Creating main window...
|
||||
QMainWindowLayout::addItem: Please use the public QMainWindow API instead
|
||||
[2026-01-16 14:10:57] [INFO] [client] Client started successfully
|
||||
[DEBUG] 尝试加载证书: /home/arno/.ipass/data_certificate.enc
|
||||
[DEBUG] 证书加载成功
|
||||
✓ 数据库迁移完成
|
||||
✓ 数据库迁移完成
|
||||
[网络检查] 正在连接: http://localhost:8088/health
|
||||
[网络检查] 响应状态码: 200
|
||||
[网络检查] 正在连接: http://localhost:8088/health
|
||||
[网络检查] 响应状态码: 200
|
||||
[Toast] 显示消息: 登录成功, 类型: ToastType.SUCCESS, 时长: 5000ms
|
||||
[Toast] 主窗口: <client.gui.main_window.MainWindow(0xdb54e40) at 0x75dad0294180>
|
||||
[Toast] 位置: x=3099, y=20, 屏幕: 3440x1440
|
||||
```
|
||||
|
||||
```bash
|
||||
/speckit.implement 客户端数据完全没有同步到服务端
|
||||
服务的有收到同步请求
|
||||
INFO: 127.0.0.1:57552 - "POST /api/v1/sync HTTP/1.1" 200 OK
|
||||
但数据库中没有任何数据
|
||||
```
|
||||
|
||||
```bash
|
||||
/speckit.implement ipass-client 客户端出现以下日志:
|
||||
QMainWindowLayout::addItem: Please use the public QMainWindow API instead
|
||||
|
||||
/speckit.implement 同步后,在表 sync_log 中没有数据
|
||||
```
|
||||
|
||||
```bash
|
||||
# 010-category-encryption-feishu-notify
|
||||
/speckit.specify
|
||||
1. categories 同样需要使用数字证书加密保存
|
||||
2. 当成功登陆后,使用飞书群机器人向ipass群发消息,以下是相关配置和要求:
|
||||
Webhook地址: https://open.feishu.cn/open-apis/bot/v2/hook/24e49f65-80d3-4f58-8fb3-d9ae0013665d
|
||||
签名校验密钥: xwXYWz6w6Ze9O61ygB4Tne
|
||||
消息内容:[yyyy-MM-dd HH:MM:SS]xxx登陆。
|
||||
|
||||
/speckit.plan
|
||||
/speckit.tasks
|
||||
/speckit.implement
|
||||
```
|
||||
|
||||
```bash
|
||||
/speckit.specify
|
||||
1. 移除'界面右上角显示浮动消息'的功能
|
||||
2. 统一在窗口的底部增加消息栏,全部消息和提示在消息栏显示,减少弹出窗口和悬浮消息的使用
|
||||
3. 在登陆界面显示LOGO
|
||||
4. 界面宽度缩小后,搜索输入框和分类标题重叠了,修改限制
|
||||
5. 使用 ipass-server-cli init 进行初始化的时候,执行 alembic 的迁移脚本
|
||||
|
||||
/speckit.plan
|
||||
/speckit.tasks
|
||||
/speckit.implement
|
||||
```
|
||||
|
||||
```bash
|
||||
/speckit.implement
|
||||
管理分类窗口中显示的分类名称、描述是乱码
|
||||
提示:刷新分类筛选器失败: name 字段解密失败: 解密失败: argument 'nonce': Cannot convert "<class 'str'>" instance to a buffer. Did you mean to pass a bytestring instead?
|
||||
```
|
||||
|
||||
```bash
|
||||
/speckit.specify 根据上述分析报告,执行后续行动,立即实施方案 A:创建完整的 common.logging 统一日志模块(**注意:不是ipass.common.logging**),在整个系统中应用,移除/废弃 server.core.logging.移除 ipass.common.logging .
|
||||
|
||||
/speckit.plan
|
||||
/speckit.tasks
|
||||
/speckit.implement
|
||||
```
|
||||
|
||||
```bash
|
||||
/speckit.specify 以现有 trunk 分支为基础,创建功能分支,实现以下功能:
|
||||
1. 服务端 password_entries 表设计不合理,密码数据不应该和某一个设备绑定。删除设备不要删除分类数据和密码数据。
|
||||
2. 添加密码界面,下拉选择的分类中没有看到已经添加的分类,还是显示的模拟分类数据。
|
||||
3. 添加密码界面,新添加的分类应该要能在分类管理中看到。
|
||||
4. 在密码列表页双击后,点击编辑按钮,在分类中应该显示下拉框。
|
||||
5. 清理代码中的直接 print 输出,统一使用日志进行记录。
|
||||
6. 按照 @docs/specification.md 中的要求,实现**功能 2: 服务端日志查看**、**功能 14: 日志查看(客户端)**
|
||||
|
||||
/speckit.clarify 前面对删除设备的需求描述错误。删除设备不要删除分类数据和密码数据。
|
||||
|
||||
/speckit.plan
|
||||
/speckit.tasks
|
||||
/speckit.implement
|
||||
```
|
||||
Reference in New Issue
Block a user