feat(p1): complete P1 foundation stage
Some checks failed
CI Go / test (push) Has been cancelled
CI Proto / lint (push) Has been cancelled
CI Python / test (push) Has been cancelled
CI TypeScript / test (push) Has been cancelled

- monorepo: pnpm workspace + go.work + pyproject.toml + commitlint/husky
- infra: docker-compose (minimal + full profiles) + init-sql + prometheus
- arch-scan: multi-language scanner skeleton (TS/Go/Python/Proto)
- shared-proto: buf v2 + classes.proto (ClassService CRUD contract)
- api-gateway: Go/Gin + JWT HS256 auth + reverse proxy + request ID
- classes: NestJS golden template (error system + observability + middleware + CRUD + tests)
- teacher-portal: Next.js + paper-feel UI design system
- CI/CD: 4 workflows (go/ts/py/proto)
- docs: migration guide + project_rules + coding-standards + git-workflow + ui-design-system + 004 + 9 module READMEs + known-issues + spec/plan migration + roadmap
This commit is contained in:
SpecialX
2026-07-07 23:39:37 +08:00
commit 2ba4250165
100 changed files with 15242 additions and 0 deletions

38
.github/workflows/ci-go.yml vendored Normal file
View File

@@ -0,0 +1,38 @@
name: CI Go
on:
push:
branches: [main]
paths:
- 'services/api-gateway/**'
- 'services/push-gateway/**'
- 'packages/shared-go/**'
- 'go.work'
pull_request:
branches: [main]
paths:
- 'services/api-gateway/**'
- 'services/push-gateway/**'
- 'packages/shared-go/**'
- 'go.work'
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: '1.22'
- name: golangci-lint
uses: golangci/golangci-lint-action@v6
with:
working-directory: services/api-gateway
- name: Build
working-directory: services/api-gateway
run: |
go mod download
go build ./...
- name: Test
working-directory: services/api-gateway
run: go test ./... -v -coverprofile=coverage.out

25
.github/workflows/ci-proto.yml vendored Normal file
View File

@@ -0,0 +1,25 @@
name: CI Proto
on:
push:
branches: [main]
paths:
- 'packages/shared-proto/**'
pull_request:
branches: [main]
paths:
- 'packages/shared-proto/**'
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: bufbuild/buf-setup-action@v1
- name: buf lint
working-directory: packages/shared-proto
run: buf lint
- name: buf breaking
if: github.event_name == 'pull_request'
working-directory: packages/shared-proto
run: buf breaking --against https://github.com/${{ github.repository }}.git#branch=main,subdir=packages/shared-proto

33
.github/workflows/ci-py.yml vendored Normal file
View File

@@ -0,0 +1,33 @@
name: CI Python
on:
push:
branches: [main]
paths:
- 'services/data-ana/**'
- 'services/ai/**'
- 'packages/shared-py/**'
- 'pyproject.toml'
pull_request:
branches: [main]
paths:
- 'services/data-ana/**'
- 'services/ai/**'
- 'packages/shared-py/**'
- 'pyproject.toml'
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- uses: astral-sh/setup-uv@v3
- name: Install
run: uv sync
- name: Lint (ruff)
run: uv run ruff check .
- name: Test
run: uv run pytest

43
.github/workflows/ci-ts.yml vendored Normal file
View File

@@ -0,0 +1,43 @@
name: CI TypeScript
on:
push:
branches: [main]
paths:
- 'services/classes/**'
- 'apps/**'
- 'packages/**'
- 'scripts/**'
- 'package.json'
- 'pnpm-workspace.yaml'
- 'tsconfig.base.json'
pull_request:
branches: [main]
paths:
- 'services/classes/**'
- 'apps/**'
- 'packages/**'
- 'scripts/**'
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: 9
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'
- name: Install
run: pnpm install --frozen-lockfile
- name: Lint
run: pnpm -r run lint
- name: Typecheck
run: pnpm -r run typecheck
- name: Test
run: pnpm -r run test
- name: Build
run: pnpm -r run build