Skip to content

Commit 8c4b737

Browse files
authored
Merge pull request #137 from NJUPT-SAST/codex/offline-interview-workflow
feat: complete offline interview review workflow
2 parents 5957a4e + 8972932 commit 8c4b737

63 files changed

Lines changed: 1337 additions & 1423 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.example

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ FEISHU_OAUTH_REDIRECT_URI=http://localhost:3000/api/auth/feishu
1414
# - IM v1 message/create with bot ability enabled
1515
FEISHU_EVENT_VERIFICATION_TOKEN=
1616
FEISHU_EVENT_ENCRYPT_KEY=
17+
# Local only. Production must configure INNGEST_SIGNING_KEY instead.
18+
INNGEST_DEV=1
1719
# Optional chat_id for privacy-safe interview schedule group notifications.
1820
FEISHU_INTERVIEW_CHAT_ID=
1921
NONCESTR=
@@ -50,11 +52,6 @@ EMAIL_RETRY_SCAN_LIMIT=50
5052
EMAIL_SEND_RATE_LIMIT_PER_MINUTE=120
5153
EMAIL_ATTEMPT_RETENTION_DAYS=180
5254
EMAIL_WEBHOOK_SECRET=
53-
OPENAI_API_KEY=
54-
# Optional. Defaults to https://api.openai.com/v1.
55-
OPENAI_BASE_URL=
56-
# Optional. Defaults to gpt-5-mini.
57-
OPENAI_MODEL=
5855
SENTRY_DSN=
5956
NEXT_PUBLIC_SENTRY_DSN=
6057
# Local builds keep the Sentry build plugin off to avoid optional build-manager warnings.

CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Identity and profile data come from **SAST Link**. People owns workflows, gradin
66

77
## Stack
88

9-
Next.js 16 App Router, React 19, TypeScript strict, Tailwind CSS v4, shadcn/ui, lucide-react, Jest 30, Playwright, Drizzle ORM with PostgreSQL, Inngest, React Email, Feishu/Lark SDK, Sentry, optional OpenAI-compatible server-side AI drafts.
9+
Next.js 16 App Router, React 19, TypeScript strict, Tailwind CSS v4, shadcn/ui, lucide-react, Jest 30, Playwright, Drizzle ORM with PostgreSQL, Inngest, React Email, Feishu/Lark SDK, and Sentry.
1010

1111
## Commands
1212

README.md

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ SAST People owns the recruitment and review process. User identity, profile data
2828
- Result email center with templates, batches, retries, rate limiting, provider webhooks, and attempt history.
2929
- Link role synchronization from accepted workflow results.
3030
- Link user lookup, read-only profile viewing, role editing, and account banning for workflow administration.
31-
- Optional server-side AI drafts for candidate summaries and interview evaluations (`OPENAI_*`).
3231
- Local PostgreSQL development database with seed data for repeatable demos.
3332
- Jest unit/integration tests and Playwright end-to-end coverage for critical admin and student paths.
3433

@@ -72,7 +71,7 @@ This enum replaced the older `user_flow.status` values (`pending` / `accepted` /
7271
| Data fetching | Server Components, Server Actions, SWR |
7372
| Background jobs | Inngest |
7473
| Email | react-email, nodemailer, Feishu SMTP |
75-
| Integrations | Feishu / Lark Open API, SAST Link, optional OpenAI-compatible API |
74+
| Integrations | Feishu / Lark Open API, SAST Link |
7675
| Observability | Sentry |
7776
| Testing | Jest, Testing Library, Playwright |
7877

@@ -199,12 +198,9 @@ Keep secrets in `.env.local`. Do not commit real `.env*` files.
199198
| `FEISHU_INTERVIEW_CHAT_ID` | Optional group chat for privacy-safe interview schedule cards |
200199
| `APP_ID` / `APP_SECRET` / `NONCESTR` | Feishu app credentials used by interview scheduling |
201200
| `EMAIL_*` | SMTP, retries, rate limits, webhook secret, non-production recipient guard |
202-
| `OPENAI_API_KEY` / `OPENAI_BASE_URL` / `OPENAI_MODEL` | Server-side AI drafts only |
203201
| `SENTRY_DSN` / `NEXT_PUBLIC_SENTRY_DSN` | Runtime error reporting |
204202
| `SENTRY_BUILD_PLUGIN` | Enable Sentry build plugin only when intentionally needed |
205203

206-
AI-assisted candidate summaries and interview evaluation drafts are server-side only. Do not expose OpenAI credentials with `NEXT_PUBLIC_*`.
207-
208204
### Production runtime env
209205

210206
For production Docker deployment, runtime secrets live on the server at:

action/ai/candidate.ts

Lines changed: 0 additions & 278 deletions
This file was deleted.

action/email/test-send.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,6 @@ async function createTestRenderRequest({
136136
startsAt,
137137
endsAt: new Date(startsAt.getTime() + 30 * 60 * 1000),
138138
location: "仙林校区大学生活动中心 101",
139-
meetingLink: "https://vc.feishu.cn/j/123456789",
140-
scheduleLink: "https://applink.feishu.cn/client/calendar/event/detail?calendarId=primary&eventId=demo",
141139
note: "请提前准备作品介绍。",
142140
},
143141
};

0 commit comments

Comments
 (0)