Files
Steven 0c53aa7062 feat(m0): 后端骨架 + Web/安卓前端骨架 + 设计文档
- backend: FastAPI 应用工厂、统一错误信封、JWT、短信登录、工作区/成员/邀请、幂等中间件
- alembic 0001: workspace/member/invitation/audit_log/app_user + RLS 策略 + 双角色 GRANT
- tests: 认证/工作区/租户隔离/幂等 四组用例(尚未在本机执行)
- web: React18+Vite 骨架(登录、工作区、邀请落地页)
- android: Compose 骨架(登录、工作区列表)
- 2.Design: PRODUCT-PLAN / ROADMAP-M0-M1 / NAMING / DEVELOPMENT
2026-10-28 02:38:53 +08:00

70 lines
2.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AGENTS.md — 达道Task 仓库工作约定
> 给所有在本仓库工作的 AI / 人类协作者的强制约定。**改动前先读完此文件。**
## 1. 项目是什么
达道Task:任务管理(todo)→ 工单协同 → 知识库,三件事一条流,LLM 贯通。
Web(React)+ 安卓(Compose)+ 后端(FastAPI),SaaS 多租户形态。
- 方案:[`2.Design/PRODUCT-PLAN.md`](2.Design/PRODUCT-PLAN.md)
- 实施清单:[`2.Design/ROADMAP-M0-M1.md`](2.Design/ROADMAP-M0-M1.md)
- 命名:[`2.Design/NAMING.md`](2.Design/NAMING.md)
## 2. 铁律(违反即回滚)
1. **改完必须提交并 push**。本地有未推送提交视为未完成。
2. **生产不得领先仓库**。部署的代码必须是仓库 HEAD,不允许"服务器上手动改一下"。
3. **前端产物只能由仓库 HEAD 构建**,不允许本地构建后上传 dist。
4. **部署后必须校验 build 标记**:`curl /version` 返回的 commit 必须等于 `git rev-parse --short HEAD`。
5. **多租户安全不讨价还价**:任何新增租户表,必须同时提交 ① `workspace_id NOT NULL` 列 ② RLS 策略 ③ 跨租户隔离测试。三者缺一,PR 直接拒。
## 3. 技术栈(不得擅自更换)
| 层 | 选型 |
|---|---|
| 后端 | FastAPI + SQLAlchemy 2.0 async + PostgreSQL 16(RLS + pgvector)+ Redis |
| 迁移 | Alembic(autogenerate 后**必须人工复核**,不准盲上) |
| Web | React 18 + TypeScript + Vite + Tailwind |
| 安卓 | Kotlin + Jetpack Compose |
| LLM | OpenAI 兼容网关;平台兜底 DeepSeek,用户可配 |
## 4. 目录
```
backend/ FastAPI 服务(app/ 业务,tests/ 测试,alembic/ 迁移)
web/ React 前端
android/ Kotlin 安卓端
deploy/ 部署脚本与 compose
2.Design/ 设计文档(大写连字符命名,如 API.md、DEPLOY.md)
```
## 5. 提交规范
```
feat(task): 支持批量改状态
fix(auth): 刷新令牌未轮换
docs(plan): 补充工单状态机
```
- 一个提交只做一件事;格式化与业务分开提交。
- `main` 受保护,功能走 `feat/*` 分支。
## 6. 本地开发
```bash
# 依赖
cd deploy && docker compose -f docker-compose.dev.yml up -d
cd backend && pip install -r requirements.txt
pytest # 必须全绿才能提交
ruff check . && ruff format --check .
```
## 7. 禁区
- 不准把密钥、token、真实用户手机号写进仓库或测试夹具。
- 不准在日志里打印 `password` / `token` / `api_key`(中间件已做脱敏,别绕开它)。
- 不准跳过租户隔离测试,哪怕"这次只是改文档"。
- 不准直接读写 `.dsh/memory-vault`(记忆库只能通过工具/API 写入)。