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
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
backend:
|
||||
runs-on: ubuntu-latest
|
||||
services:
|
||||
postgres:
|
||||
image: pgvector/pgvector:pg16
|
||||
env:
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_PASSWORD: postgres_dev_pw
|
||||
POSTGRES_DB: dadaotask
|
||||
ports: ["5433:5432"]
|
||||
options: >-
|
||||
--health-cmd "pg_isready -U postgres -d dadaotask"
|
||||
--health-interval 5s --health-timeout 3s --health-retries 20
|
||||
|
||||
env:
|
||||
ENV: test
|
||||
DATABASE_URL: postgresql+asyncpg://dadao_app:dadao_dev_pw@127.0.0.1:5433/dadaotask
|
||||
MIGRATION_DATABASE_URL: postgresql+asyncpg://dadao_owner:dadao_dev_pw@127.0.0.1:5433/dadaotask
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.11"
|
||||
|
||||
# 关键:先建角色再跑迁移。应用角色必须是受限角色,否则 RLS 测试会"假通过"。
|
||||
- name: 创建数据库角色
|
||||
run: |
|
||||
PGPASSWORD=postgres_dev_pw psql -h 127.0.0.1 -p 5433 -U postgres -d dadaotask \
|
||||
-v ON_ERROR_STOP=1 -f deploy/postgres/init/01-roles.sql
|
||||
|
||||
- name: 安装依赖
|
||||
working-directory: backend
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -r requirements.txt
|
||||
|
||||
- name: Lint
|
||||
working-directory: backend
|
||||
run: |
|
||||
ruff check .
|
||||
ruff format --check .
|
||||
|
||||
- name: 迁移
|
||||
working-directory: backend
|
||||
run: alembic upgrade head
|
||||
|
||||
- name: 测试
|
||||
working-directory: backend
|
||||
run: pytest -q
|
||||
Reference in New Issue
Block a user