Platform polish: bulk invite, file requirements, filtering redesign, UX fixes
- F1: Set seed jury/mentors/observers to NONE status (not invited), remove passwords - F2: Add bulk invite UI with checkbox selection and floating toolbar - F3: Add getProjectRequirements backend query + requirement slots on project detail - F4: Redesign filtering section: AI criteria textarea, "What AI sees" card, field-aware eligibility rules with human-readable previews - F5: Auto-redirect to pipeline detail when only one pipeline exists - F6: Make project names clickable in pipeline intake panel - F7: Fix pipeline creation error: edition context fallback + .min(1) validation - Pipeline wizard sections: add isActive locking, info tooltips, UX improvements Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -186,7 +186,6 @@ async function main() {
|
||||
|
||||
const juryUserIds: string[] = []
|
||||
for (const j of juryMembers) {
|
||||
const passwordHash = await bcrypt.hash('Jury2026!', 12)
|
||||
const user = await prisma.user.upsert({
|
||||
where: { email: j.email },
|
||||
update: {},
|
||||
@@ -194,11 +193,9 @@ async function main() {
|
||||
email: j.email,
|
||||
name: j.name,
|
||||
role: UserRole.JURY_MEMBER,
|
||||
status: UserStatus.ACTIVE,
|
||||
status: UserStatus.NONE,
|
||||
country: j.country,
|
||||
expertiseTags: j.tags,
|
||||
passwordHash,
|
||||
mustSetPassword: true,
|
||||
bio: `Expert in ${j.tags.join(', ')}`,
|
||||
},
|
||||
})
|
||||
@@ -218,7 +215,6 @@ async function main() {
|
||||
]
|
||||
|
||||
for (const m of mentors) {
|
||||
const passwordHash = await bcrypt.hash('Mentor2026!', 12)
|
||||
await prisma.user.upsert({
|
||||
where: { email: m.email },
|
||||
update: {},
|
||||
@@ -226,11 +222,9 @@ async function main() {
|
||||
email: m.email,
|
||||
name: m.name,
|
||||
role: UserRole.MENTOR,
|
||||
status: UserStatus.ACTIVE,
|
||||
status: UserStatus.NONE,
|
||||
country: m.country,
|
||||
expertiseTags: m.tags,
|
||||
passwordHash,
|
||||
mustSetPassword: true,
|
||||
},
|
||||
})
|
||||
console.log(` ✓ Mentor: ${m.name}`)
|
||||
@@ -247,7 +241,6 @@ async function main() {
|
||||
]
|
||||
|
||||
for (const o of observers) {
|
||||
const passwordHash = await bcrypt.hash('Observer2026!', 12)
|
||||
await prisma.user.upsert({
|
||||
where: { email: o.email },
|
||||
update: {},
|
||||
@@ -255,10 +248,8 @@ async function main() {
|
||||
email: o.email,
|
||||
name: o.name,
|
||||
role: UserRole.OBSERVER,
|
||||
status: UserStatus.ACTIVE,
|
||||
status: UserStatus.NONE,
|
||||
country: o.country,
|
||||
passwordHash,
|
||||
mustSetPassword: true,
|
||||
},
|
||||
})
|
||||
console.log(` ✓ Observer: ${o.name}`)
|
||||
|
||||
Reference in New Issue
Block a user