yuzhiran
04b30d0024
feat(backend): record lastLoginAt/IP/location on every login
...
Add lastLoginAt, lastLoginIp, lastLoginLocation to User schema. recordLogin() method called from all 5 login flows (phone, email, wx, password, register). Exposed in safeUser so info endpoint returns login metadata.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-06-22 12:38:07 +08:00
yuzhiran
13b2a764ef
fix(admin): partial _id fuzzy search via $expr + $toString + $regexMatch
2026-06-22 12:14:31 +08:00
yuzhiran
70c4f28eb5
fix(admin): add wxOpenid to fuzzy search, enhance admin tab info
...
- Backend getUsers: add wxOpenid to regex search
- Backend getAdmins: return gravity, plan, wxOpenid, email fields
- Frontend admin tab: show full user info (ID copy, email, gravity, plan)
- Frontend search result: show complete user details like user list rows
2026-06-22 12:07:52 +08:00
yuzhiran
d37bbd7a61
feat(admin): fuzzy search by email/ID, display full userId in user list
...
- Backend: add email + _id to filter in getUsers() for fuzzy search
- Frontend: show full MongoDB _id in user row with tap-to-copy
- Search placeholder updated to mention email/ID
2026-06-22 11:46:14 +08:00
yuzhiran
4d54c8088c
fix: Mongoose 8 pre-save hook crash (next->async), v1.0.17 tag, test user
...
- user.schema.ts: convert pre-save from callback(next) to async - fixes
'TypeError: next is not a function' on login (Mongoose 8 compat)
- Tag v1.0.17 for 1.0.18 build cycle
- scripts/seed-test-user.ts: utility to create test accounts
- docs: PROJECT-STATUS v4.9, AGENTS.md version bump
- Add test user test@yzrcloud.cn / 123456 (role: user)
2026-06-22 11:27:21 +08:00
yuzhiran
1e8e22c9ed
docs: update project status v4.8, AGENTS.md build notes, deployment docs
...
- PROJECT-STATUS.md: v4.8 changelog (SEO, share hooks, version injection)
- AGENTS.md: update version to v1.0.17, add build notes for SEO/version/share
- DEPLOYMENT.md: update deploy instructions for robots.txt/sitemap.xml/static, version bump
v1.0.17
2026-06-21 20:09:45 +08:00
yuzhiran
d8fb8e3bba
feat: enable WeChat share/forward on all pages via onShareAppMessage + onShareTimeline
2026-06-21 18:51:35 +08:00
yuzhiran
214571688c
feat: SEO optimization - canonical URL, robots.txt, sitemap, structured data, keyword-rich titles, manifest update
2026-06-21 09:48:41 +08:00
yuzhiran
8532776fa1
refactor: remove duplicate contact button in about page
2026-06-21 09:38:24 +08:00
yuzhiran
b8667395ac
feat: unify contact button styles, dynamic version from git tag, enrich AI positions & homepage UX
2026-06-21 09:16:31 +08:00
yuzhiran
1d1c4ab590
fix: bump patch version automatically on mp upload (v1.0.16 → 1.0.17)
2026-06-21 09:03:34 +08:00
yuzhiran
19b087a589
docs: update project status to v4.7 - gravity pay-per-use, full production deployment
2026-06-21 08:58:33 +08:00
yuzhiran
310176a11b
chore: production cleanup - remove debug logs, add DB cleanup script
...
- App.vue: remove console.log on launch/show/hide, drop unused onShow/onHide imports
- interview.vue: remove verbose console.log('[ASR] upload response')
- login.vue: remove debug console.log('[wxLogin]') logs (keep error logs)
- scripts/cleanup-test-data.ts: new script to identify and remove test data
while preserving admin accounts; supports --dry-run preview mode
- All 43 backend tests pass
2026-06-20 23:08:44 +08:00
yuzhiran
ef4d22a633
feat(admin): enrich admin panel fields; add user index constraint and customer service
...
- admin controller: add updatedAt to interview/resume selects; add orderCount,
todayOrders, totalRevenue to overview
- admin.vue: enrich all tabs with more fields
- overview: order cards (count, revenue)
- users: wxOpenid, email, createdAt, interviewCount, vipExpireAt, role badge
- interviews: user email, updatedAt, summary preview
- orders: title, type, channel, paidAt, wxTransactionId, refund info
- resumes: user email, updatedAt
- share: sharer phone, shareCode, isActive, visitorId(IP), creditedAt
- admins: email, createdAt
- user.schema: add unique indexes on phone/wxOpenid/email; pre-save hook
requiring at least one contact method
- user/about: add WeChat contact button (open-type=contact) for customer service
2026-06-20 22:38:33 +08:00
yuzhiran
8ee27fdd32
feat: refactor member to pay-per-use gravity purchase; mv webview to clipboard+browser
...
- member.vue: rewrite from subscription plans (free/growth/sprint) to
H5-only pay-per-use gravity purchase with quantity selector + QR code
- user.vue: gravity card replacing quota card, add share/contribute/H5-buy
entry points, plus gravity acquisition modal (share/contribute/buy)
- share.vue: layout fix (flex column), smarter copyLink with cached URL,
WeChat timeline hint instead of open-type
- share.controller.ts: add GET /:shareCode redirect route (IP record + 302)
- interview.vue: guest mode fix, H5 buy modal, clipboard copy instead of
webview for mini-program
- App.vue: handleH5UrlParams for ?token=&buy=gravity auto-login
- composables/useGravityPurchase.ts: reusable gravity purchase composable
- remove webview.vue (no longer used), replace with clipboard+browser flow
- AGENTS.md: sync all above changes, fix duplicate numbering
2026-06-20 20:49:15 +08:00
yuzhiran
a1e1f0b3c3
docs: update project status to v4.6 - gravity unification, admin panel improvements
v1.0.16
2026-06-19 22:52:57 +08:00
yuzhiran
2fbab1072f
feat: unified gravity system - VIP members consume gravity instead of unlimited; add monthly gravity top-up cron
2026-06-19 22:43:52 +08:00
yuzhiran
c2ba810a02
fix: use onShow lifecycle to refresh login state in member center
...
1. member.vue: added onShow to refresh login state when returning from login page
2. manifest.json: bump to v1.0.15
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
v1.0.15
2026-06-18 21:23:20 +08:00
yuzhiran
3f1239c35e
fix: add network error detection and timeout for mini program JSAPI payment
...
1. member.vue: check for res.statusCode === 0 (network failure) before accessing data, add 30s timeout
2. manifest.json: bump to v1.0.14
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
v1.0.14
2026-06-18 20:54:42 +08:00
yuzhiran
1be5b34906
chore: bump version to 1.0.13
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
v1.0.13
2026-06-18 20:39:56 +08:00
yuzhiran
c58bb27575
fix: admin page reactive import + member payment toast show real error
...
1. admin.vue: 添加缺失的reactive导入,修复管理后台只显示标题不显示功能的问题
2. member.vue: 支付失败toast改为显示后端真实错误信息,而非硬编码'创建订单失败'
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-06-18 20:39:49 +08:00
yuzhiran
e0de29fdd0
fix: AI LLM backup model not producing content; add retry for thinking models
...
- Replace backup model stepfun-ai/step-3.5-flash with meta/llama-3.1-8b-instruct
(stepfun is a thinking model that uses all tokens on reasoning and
never outputs content, causing all 3 fallthroughs to fail)
- Add retry with doubled max_tokens when primary model returns empty
content (deepseek-v4-flash thinking can exhaust token budget)
- Increase backup timeout to 120s and max_tokens to min 2048
- Move callApi error handling to return null instead of throw for
cleaner fallthrough logic with timeout logging
2026-06-18 19:42:40 +08:00
yuzhiran
6a3cc8544e
fix: handle WeChat Pay public key mode in callback
...
- verifyAndDecrypt now processes decryption even when signature
verification fails (decryption key is separate from signature key)
- Notify handler uses returnRaw flag to always decrypt resource
- Loud log when pub_key.pem verification fails, directs admin
to download correct public key from merchant platform
2026-06-18 19:36:19 +08:00
yuzhiran
c161ffbc3c
feat: payment refund support + admin payment management
...
- Add refund()/queryRefund()/downloadPlatformCerts() to WechatPayService
- Add refundId field to PaymentOrder schema
- Fix WeChat Pay callback to auto-download platform certs on verification failure
- Fix syncOrder to handle sprint plan properly
- Add admin refund, refund-query, order-detail endpoints
- Add refund UI (button, modal, query) to admin.vue orders tab
- Fix member.vue MP payment: pass outTradeNo instead of prepayId to pollPayResult
2026-06-18 19:33:10 +08:00
yuzhiran
7e1bf669ab
fix: show toast when clicking login without agreeing to privacy terms
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-06-18 18:54:44 +08:00
yuzhiran
bed9dce943
chore: bump version to 1.0.12
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
v1.0.12
2026-06-18 18:48:27 +08:00
yuzhiran
4ac42f6575
fix: privacy policy compliance - checkbox must be manually checked, add WeChat privacy API
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-06-18 18:46:57 +08:00
yuzhiran
f72312ea52
docs: update with production mode, test accounts, admin auto-verify
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-06-18 18:21:48 +08:00
yuzhiran
7cf4636b8c
fix: auto-verify admin on mount (onMounted doVerify)
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-06-18 18:21:41 +08:00
yuzhiran
27e4d06da7
fix: show devCode modal in email login for non-production mode
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-06-18 18:21:34 +08:00
yuzhiran
e049be280e
fix: auto-copy avatars on build, show masked user ID on profile page
2026-06-18 17:58:54 +08:00
yuzhiran
b9651a9ff3
chore: hide company-bank and internship entries from homepage (content empty)
2026-06-18 17:44:11 +08:00
yuzhiran
54c21e2953
refactor: rewrite company-bank and internship pages
...
- bank.vue: Composition API, design tokens, 2-col grid, better UX
- internship.vue: search bar, category tabs, card list layout
2026-06-18 17:27:37 +08:00
yuzhiran
0616fd955c
fix: homepage layout optimization (2-col grid, guest CTA, daily question for guests)
...
- Unified feature grid to consistent 2-column layout
- Improved hero guest card with benefit tags
- Show daily question section for guests with login prompt
- Added AGENTS.md: H5 deployment docs, git remote, build gotchas
2026-06-18 15:53:11 +08:00
wlt
df1b37fe79
feat: add positions management admin tab + career advisor homepage entry
...
- admin.vue: new '岗位' tab with CRUD list/modal/api functions/styles
- index.vue: add AI择业顾问 entry card linking to career page
- Backend CRUD endpoints already exist, no backend changes needed
2026-06-18 15:13:29 +08:00
wlt
103dbd3b34
feat: AI岗位专区 — 5个AI岗位置顶 + 首页分组展示
...
- schema: HotPosition 新增 category 字段 (ai/traditional)
- positions: 5 AI岗位 (AI算法/大模型应用/Prompt/AI产品/AI运维) + 7传统岗位
- frontend: 首页拆分 "🔥 AI热门岗位" 置顶高亮 + "更多岗位" 折叠
- ai服务: 新增 primaryFallbackModel (sensenova-6.7-flash-lite) 降级链路
2026-06-17 13:57:18 +08:00
wlt
a5c4bcb821
feat: AI 择业顾问 MVP — 专业分析 + 岗位匹配 + 多轮对话
...
- backend: career-advice module with analyze/chat/positions endpoints
- frontend: career.vue page with profile form, AI advice, recommendation cards
- config/api/pages/user.vue: full integration into existing flow
- docs: PROJECT-STATUS v4.5, FEATURE-LIST v4.3, ROADMAP v4.3
- AGENTS.md: updated module count and career link paths
2026-06-17 10:32:23 +08:00
wlt
4cd889c081
feat: interview review module with whisper.cpp ASR + AI analysis + frontend page
...
New backend module 'interview-review' provides:
- Audio upload (50MB limit, MP3/M4A/WAV/AAC/OGG/MP4/WebM)
- Text transcript submission
- whisper.cpp local ASR integration (tiny + base models)
- AI analysis (4-dimension scoring: logic/expression/professionalism/stability)
- Speech analysis (filler words detection, pace, duration)
- Async processing pipeline with status polling
- Graceful fallback to mock ASR when whisper unavailable
New frontend page 'pages/review/review.vue' with 3 modes:
- List mode: review history with status indicators
- Upload mode: audio file upload or text paste
- Report mode: score radar, dimension bars, analysis details
Docs updated: PROJECT-STATUS.md v4.4, FEATURE-LIST.md v4.2, ROADMAP.md v4.2
2026-06-16 18:32:25 +08:00
yuzhiran
96c367e0f8
feat: latest code update
2026-06-16 13:18:36 +08:00
yuzhiran
5a49d15696
fix: login state refresh, hero layout, default avatar consistency
v1.0.11
2026-06-15 11:04:00 +08:00
yuzhiran
07c6557454
fix: return 200 instead of 201 for all login endpoints (NestJS default)
2026-06-15 10:42:31 +08:00
yuzhiran
18c50726cd
fix: WeChat login Content-Type header, ASR tiny model, re-upload mini-program v1.0.11
2026-06-15 10:00:22 +08:00
yuzhiran
4fa620f0a2
fix: whisper path + PNG face avatar
2026-06-13 11:26:46 +08:00
yuzhiran
112884a504
fix: PNG face avatar + whisper ASR
2026-06-13 11:04:52 +08:00
yuzhiran
93ab79d200
fix: css-only face avatar for mini-program, voice input + ASR
2026-06-12 21:47:17 +08:00
yuzhiran
8191cf4b41
feat: realistic face avatar + voice input + ASR endpoint
2026-06-12 15:32:04 +08:00
yuzhiran
6fe84b6ef8
feat: add resume entry card, rename interview to AI数字人面试
2026-06-12 14:45:49 +08:00
yuzhiran
087fb1d400
fix: avatar mode default on, show AI text in chat
2026-06-12 14:45:36 +08:00
yuzhiran
a622afd118
chore: bump version to 1.0.5
2026-06-12 14:15:27 +08:00
yuzhiran
2266b866cd
chore: bump version to 1.0.4
2026-06-12 12:58:34 +08:00