Skip to content

Latest commit

 

History

History
93 lines (45 loc) · 4.73 KB

File metadata and controls

93 lines (45 loc) · 4.73 KB

项目开发与文档规范(多 AI 协作 & 强制分支版)

开发哲学:最好的代码就是没有代码。次好的代码则是胶水代码。 本项目不造轮子,不重写依赖,只做编排、组合与适配。所有核心能力来自外部依赖的真实实现,代码只负责把它们粘在一起。

二、核心原则

  1. 中文环境:界面文字、注释、报错提示必须使用中文。

  2. 极简主义:代码力求简洁,严禁过度设计,任务完成后必须清理无用代码和调试信息。优先直接复用成熟依赖的完整实现,仅编写最小必要的编排与适配代码。若依赖库已提供功能,禁止自行重写同类逻辑。

三、开发与测试强制规则

  1. 测试同步:所有功能变动或 Bug 修复,必须同步更新 test-cases.md 并补齐对应的自动化测试代码。

  2. 依赖真实性

    • 所有被调用的能力必须来自依赖库的真实实现,禁止 Mock / Stub / Demo 替代、空逻辑占位

    • 禁止"只导入不用"的伪集成,禁止路径遮蔽或重名模块导致加载非目标实现

    • 禁止对依赖模块做功能裁剪、逻辑重写或降级封装

    • 导入路径必须指向真实仓库源码,禁止复制代码到本项目后二次修改

四、pd.md 维护协议

  1. 完成即更新:任务结束时,将变更记录写入 changelog/YYYY-MM-DD.md(如 changelog/2026-04-17.md),同一天多次修改追加到同一文件。(时间为北京时间)

  2. 修改日志格式

    • 格式:【HH:mm】+【简述】+【修改文件】。时间为北京时间。

    • 文件位置changelog/YYYY-MM-DD.md,每次新增条目加在文件末尾。

  3. master 整合:合并至 master 后,将 changelog/ 下的记录整合进 pd.md,新条目加在最顶部,然后删除已整合的 changelog 文件。

  4. 状态对齐:脚本说明、API 路径等必须与代码实际状态 100% 同步。

五、Git 提交与交付

  1. 规范提交:使用约定式提交格式(feat:, fix:, docs:, test:, refactor:)。

  2. 合并规则:合并至 master 分支或执行强制推送(Force Push),必须经用户确认后方可执行。合并至 worktree 基础分支同样需用户确认。

  3. 交付流程:完成本地 commit 后,只需告知用户分支名称,由用户进行最终审核与合并。

六、AI 输出约束(极度精简规则)

  1. 决策确认:凡涉及技术路径选择、方案设计、核心细节改动,必须先提问确认,获批后方可动手。凡涉及是否自行实现 vs 复用依赖的选择,同样必须先确认。

  2. 拒绝废话:输出内容仅限必要的变更清单、待办项或指令。禁止提供实现步骤说明、长篇代码解释或文件路径分析。

  3. 回复字数:回复必须简短、直接、中文。禁止生成任何长篇大论的文档或逻辑论证。

  4. 准准确性:保持抽象描述,除非我明确要求细节,否则禁止主动展示具体实现逻辑。

  5. 依赖标注:输出中必须标注哪些功能来自外部依赖,禁止生成依赖库内部实现代码。依赖库视为权威且不可修改的黑箱。

七、TypeScript 类型安全

  1. 禁止 any:所有代码禁止使用 any 类型,用 unknown + 类型收窄替代。

  2. 禁止类型断言绕过:不得使用 as anyas unknown as X 绕过类型检查。

  3. 严格模式:tsconfig 已开启 strict: true,不得降级。

八、设计原则

  1. KISS:实现需求的最窄解释,不在未明确要求时合并功能。

  2. 性能优先:避免不必要的渲染和重计算,列表使用虚拟化或分页。

  3. 消除魔法值:禁止硬编码数字和字符串,使用常量或枚举。

  4. 数据不可变:状态更新使用不可变方式,不直接修改对象/数组。

  5. 项目职责边界:本项目仅承担业务流程编排(Orchestration)、模块组合与调度、参数配置与调用组织、输入输出适配(不改变核心语义)。禁止重复实现算法、重写已有数据结构、将复杂逻辑从依赖库中拆出来自己写。

九、架构概要

  • 前端:React + Vite + Zustand + Tiptap,组件按功能分目录(notes/labels/layout/common)

  • 后端:Express + SQLite(WAL 模式),按 routes → services → db 分层

  • 共享类型shared/types.ts 为唯一类型定义源,前后端共用

  • 路径别名:前端使用 @shared/* 引用共享模块

  • API 代理:开发环境 Vite 将 /api 代理至 localhost:3001