6.4 KiB
6.4 KiB
PMFlow 项目结构说明(CLAUDE.md)
1. Agent 入口文件(你关心的“进项目先读什么”)
AGENTS.md:Codex/Coding Agent 的主规则入口(优先级最高的项目级约束)CLAUDE.md:面向 Claude 风格的项目说明文档(补充背景)- 建议:规则放
AGENTS.md,架构/目录说明放CLAUDE.md
2. 项目定位
- 项目名:
PMFlow / Neural Sync - 形态:AI 原生项目管理系统(多租户 + 角色权限 + SSTC 工作流)
- 技术栈:
- 后端:
FastAPI + SQLAlchemy + Alembic - 前端:
React + TypeScript + Vite + Tailwind + Radix + React Query
- 后端:
3. 顶层目录(精简版)
AIProjectManger/
├── AGENTS.md # Agent 执行规则(建议优先维护)
├── CLAUDE.md # 现有 Claude 说明文档
├── start.sh / stop.sh # 一键启动/停止入口
├── docker-compose*.yml # 容器编排
├── backend/ # FastAPI 后端
├── frontend/ # React 前端
├── scripts/ # 根目录运维脚本
├── tests/ # 根级测试(集成/脚本)
└── docs/ # 额外文档
4. 后端结构(backend/)
backend/
├── app/
│ ├── api/ # 路由层(含 endpoints)
│ ├── core/ # 配置、日志、核心能力
│ ├── dependencies/ # 鉴权/租户等依赖注入
│ ├── models/ # SQLAlchemy 模型
│ ├── schemas/ # Pydantic 模型
│ ├── services/ # 业务服务(AI/SSTC/集成)
│ ├── config/ # 配置与 prompt
│ └── utils/ # 工具函数
├── alembic/ # 数据库迁移
│ └── versions/
│ └── 20260310_add_feishu_outbox_reply_hash.py # 飞书 outbox 回执哈希幂等字段
├── requirements.txt # Python 依赖
├── Dockerfile
└── tests/
5. 前端结构(frontend/)
frontend/
├── src/
│ ├── api/ # 接口封装
│ ├── pages/ # 页面级组件
│ ├── components/
│ │ ├── ui/ # 基础 UI 组件
│ │ └── sstc/ # SSTC 工作流组件(已模块化拆分)
│ ├── hooks/ # 自定义 hooks
│ ├── lib/ # 通用工具
│ ├── stores/ # 状态管理
│ ├── router/ # 路由
│ └── types/ # TS 类型定义
├── package.json
└── vite.config.ts
5.1 frontend/src/components/sstc/ 目录说明(模块化拆分后)
SSTCWorkspace.tsx:SSTC 工作区主容器(组装各阶段组件)useSSTCWorkspaceOrchestration.ts:工作区编排 Hook(状态聚合、请求编排、事件路由)sstcUtils.ts:SSTC 工具函数(数据转换、状态判断、通用 helper)SSTCSignalStagePanel.tsx:信号阶段面板SSTCCharterStagePanel.tsx:宪章阶段面板SSTCTaskStagePanel.tsx:任务阶段面板SSTCExecutionBoardPanel.tsx:执行看板阶段面板SSTCReleaseStagePanel.tsx:发布阶段面板SSTCReviewStagePanel.tsx:复盘阶段面板SSTCTaskCreateDialog.tsx:任务创建弹窗SSTCReleaseCreateDialog.tsx:发布创建弹窗SSTCReviewCreateDialog.tsx:复盘创建弹窗AIVisibilityPanel.tsx:AI 可视化信息面板SSTCGlobalHeader.tsx:SSTC 全局头部SSTCStageNav.tsx:阶段导航SSTCChainView.tsx:链路视图SSTCRiskFloatPanel.tsx:风险浮层SignalContentHoverCard.tsx:信号内容悬浮卡片charterModules.ts:宪章模块配置与映射
5.2 修改前必须执行 FIND_USAGE 的 SSTC 组件清单
SSTCWorkspace.tsxuseSSTCWorkspaceOrchestration.tssstcUtils.tsSSTCCharterStagePanel.tsxSSTCSignalStagePanel.tsxSSTCTaskStagePanel.tsxSSTCExecutionBoardPanel.tsxSSTCReleaseStagePanel.tsxSSTCReviewStagePanel.tsxSSTCReleaseCreateDialog.tsxSSTCReviewCreateDialog.tsxSSTCTaskCreateDialog.tsx
6. 运行命令(高频)
根目录
./start.sh dev # 推荐:docker-dev 热更新模式
./stop.sh dev
前端
cd frontend
npm run dev
npm run build
后端(本地直跑)
cd backend
pip install -r requirements.txt
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
7. 团队维护建议(简版)
- 规则变更:只改
AGENTS.md - 结构变更:同步改
CLAUDE.md - API/契约变更:后端
schemas+ 前端types同步更新
8. 服务边界约束(禁止越界)
- 数据库写操作必须通过 Alembic migration,禁止直接
ALTER TABLE - 新增接口必须遵循响应包络:
{code, message, data},不得裸返回 - 禁止在 API 层写业务逻辑,业务逻辑归属
services/ - 禁止在前端组件内直接调用
fetch,必须通过frontend/src/api/封装层 - 前端状态管理:服务端数据用 React Query,本地 UI 状态用
useState - 飞书回执发送仅允许
main.py的 drain_loop 作为消费者,禁止在业务路径即时派发 outbox 发送任务
9. 新增代码的参考模式
- 新增后端接口:参考
backend/app/api/sstc.py的结构 - 新增前端 API 调用:参考
frontend/src/api/sstc.ts - 新增数据库表:参考
alembic/versions/最新 migration - 新增飞书事件处理:参考
backend/app/services/feishu_integration.py
10. 幂等与事务约束
- 所有入站事件必须经过
ingest_events幂等去重 - 飞书回复必须经过
feishu_reply_outbox,禁止同步直接发送 - 飞书回复发送幂等:
reply_hash = MD5(source_message_id + reply_text),同租户下status=sent的相同哈希不得重复发送 - 跨表写操作必须在同一个数据库事务内完成
11. 已知 BOUNDARY(不要幻构行为)
- 飞书回调字段可能缺失文件名/大小,仅保证
attachment_id/key/type可用 agents.defaults.timeoutSeconds在 OpenClaw 网关行为未验证,当前以LLM_REQUEST_TIMEOUT环境变量为准- World Model 静态层已接入 Redis 缓存(key:
wm:static:{tenant_id}:{project_id},TTL 600s) - 写操作后主动 invalidate,动态层不缓存