name: codebase-explorer description: 探索并理解Empathy Ledger代码库架构、数据流、数据库模式、服务以及组件连接方式。当需要了解事物位置、数据如何流动或系统不同部分如何关联时使用。
代码库探索技能
探索并记录Empathy Ledger代码库架构、数据流和系统关系。
使用说明
当此技能被调用时,帮助用户理解:
- 数据库模式 - 表、关系、迁移
- 数据流 - Supabase → 服务 → API路由 → 组件
- 服务层 - 业务逻辑模式
- API路由 - 端点及其用途
- 类型定义 - 每个域的类型文件位置
- 多租户架构 - 租户隔离工作原理
快速参考文件
数据库与类型
| 域 | 类型文件 | 关键表 |
|---|---|---|
| 用户/个人资料 | src/types/database/user-profile.ts |
profiles, profile_settings |
| 组织 | src/types/database/organization-tenant.ts |
organisations, organization_members, tenants |
| 项目 | src/types/database/project-management.ts |
projects, project_participants |
| 故事/内容 | src/types/database/content-media.ts |
stories, transcripts, media_assets |
| 分发 | src/types/database/story-ownership.ts |
story_distributions, consent_proofs |
| 文化安全 | src/types/database/cultural-sensitivity.ts |
cultural_safety_moderation |
| 位置 | src/types/database/location-events.ts |
locations, events |
| 分析 | src/types/database/analysis-support.ts |
transcript_analysis, themes, quotes |
Supabase客户端
| 客户端 | 文件 | 用途 |
|---|---|---|
| 浏览器 | src/lib/supabase/client.ts |
React组件 |
| 服务器SSR | src/lib/supabase/client-ssr.ts |
API路由、服务器组件 |
| 服务角色 | src/lib/supabase/service-role-client.ts |
管理操作(绕过RLS) |
核心服务 (src/lib/services/)
| 服务 | 用途 |
|---|---|
| consent.service.ts | GDPR同意证明系统 |
| distribution.service.ts | 带策略执行的故事分发 |
| revocation.service.ts | 撤销分发的内容 |
| embed.service.ts | 嵌入式故事令牌 |
| organization.service.ts | 组织管理和指标 |
| audit.service.ts | 合规性日志记录 |
| gdpr.service.ts | 数据隐私操作 |
| webhook.service.ts | 事件分发到合作伙伴 |
API路由 (src/app/api/)
| 路由 | 用途 |
|---|---|
| /api/stories | 故事CRUD |
| /api/stories/[id]/consent | 同意管理 |
| /api/stories/[id]/distributions | 分发跟踪 |
| /api/stories/[id]/revoke | 撤销 |
| /api/storytellers | 故事讲述者个人资料 |
| /api/projects | 项目管理 |
| /api/projects/[id]/transcripts | 转录本访问 |
| /api/embed/stories/[id] | 嵌入式内容 |
| /api/admin/* | 管理操作 |
数据流模式
用户操作 (React组件)
↓
fetch('/api/endpoint')
↓
API路由 (src/app/api/*)
↓
服务层 (src/lib/services/*)
↓
Supabase客户端 (RLS强制执行)
↓
PostgreSQL (supabase/migrations/*)
多租户隔离
每个查询都按租户过滤:
// 在API路由中
const profile = await supabase.from('profiles').select('tenant_id').eq('id', user.id).single()
query = query.eq('tenant_id', profile.tenant_id)
角色层级 (最高 → 最低)
- elder (100) - 文化权威
- cultural_keeper (90) - 知识保存
- admin (70) - 系统管理
- project_leader (60) - 项目管理
- storyteller (50) - 内容创作
- community_member (40) - 参与者
- guest (10) - 只读
常用探索命令
# 查找所有服务
ls src/lib/services/
# 查找功能的API路由
ls src/app/api/stories/
# 检查数据库类型
cat src/types/database/index.ts
# 查看最新迁移
ls -la supabase/migrations/ | tail -5
# 查找表的使用位置
grep -r "from('stories')" src/
# 查找功能的组件
ls src/components/stories/
输出格式
探索时提供:
- 文件位置 带可点击链接
- 关键关系 表/服务之间
- 代码片段 显示模式
- 图表 使用ASCII或markdown表格
何时使用此技能
当以下情况时调用:
- 询问“X在哪里?”
- 询问“X如何连接到Y?”
- 需要理解数据关系
- 寻找正确的服务或API路由
- 理解数据库模式
- 查找组件或类型定义
参考文档
有关完整代码示例的全面文档,请参阅:
- ARCHITECTURE_REFERENCE.md - 完整系统文档
触发条件: 用户询问代码库结构、数据流或“X如何连接到Y”