Commit Graph

110 Commits

Author SHA1 Message Date
6563a6f7d2 Grant senior_editor oil editing, PDF export, and public recipe management
Some checks failed
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 4s
Test / build-check (push) Successful in 3s
PR Preview / test (pull_request) Successful in 4s
PR Preview / deploy-preview (pull_request) Successful in 20s
Test / e2e-test (push) Failing after 1m2s
Add canManage computed (senior_editor + admin) to auth store and use it
for oil edit/delete buttons, PDF export, and public recipe section
visibility. Backend already allowed these operations for senior_editor.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 11:59:49 +00:00
2bec4a2d26 Revert recipe detail to modal overlay with tab switching
Some checks failed
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 5s
Test / build-check (push) Successful in 4s
PR Preview / test (pull_request) Successful in 5s
Test / e2e-test (push) Failing after 1m4s
PR Preview / deploy-preview (pull_request) Successful in 1m5s
Restore the original modal popup (卡片预览/编辑 tabs) instead of
the inline detail panel, and bring back category carousel, personal
recipes, and favorites sections on the search page.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 10:34:01 +00:00
f884bff452 Rewrite recipe search page to match original design
Some checks failed
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 5s
Test / build-check (push) Successful in 4s
Test / e2e-test (push) Has been cancelled
PR Preview / test (pull_request) Successful in 4s
PR Preview / deploy-preview (pull_request) Successful in 13s
- RecipeCard: simple card with name, tags, oil names, price (matching
  original .recipe-card style with hover translateY and warm shadows)
- RecipeDetailOverlay: inline panel (not modal) with editable ingredients
  table, add ingredient row, total cost bar, and card preview section
  matching the original detail-panel + #recipe-card-export layout
- RecipeSearch: simplified layout with search box and grid, detail panel
  appears inline below grid when a card is clicked
- Updated Cypress tests to match new component structure

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 22:38:35 +00:00
f88521c9be Fix CI: cd to frontend before cypress, use subshell for vite
Some checks failed
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 5s
Test / build-check (push) Successful in 4s
PR Preview / test (pull_request) Successful in 5s
PR Preview / deploy-preview (pull_request) Successful in 12s
Test / e2e-test (push) Failing after 6m15s
2026-04-06 22:20:47 +00:00
ec25aebdd9 Fix carousel: full-width image slides with transform animation
Some checks failed
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 5s
Test / build-check (push) Successful in 4s
PR Preview / test (pull_request) Successful in 5s
PR Preview / deploy-preview (pull_request) Successful in 12s
Test / e2e-test (push) Failing after 23s
Replaced horizontal scroll tags with original-style carousel:
- Full-width slides with background image + gradient overlay
- translateX transform animation (0.4s ease)
- Left/right arrow buttons (semi-transparent, blur backdrop)
- Dot indicators with active state (elongated pill)
- Category filter banner when a category is selected
- Click slide to filter recipes by category tag

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 22:01:36 +00:00
0d0a563fab Rewrite OilReference: knowledge cards, states, PDF export
Some checks failed
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 5s
Test / build-check (push) Successful in 4s
PR Preview / test (pull_request) Successful in 5s
PR Preview / deploy-preview (pull_request) Successful in 13s
Test / e2e-test (push) Failing after 23s
- Oil knowledge card modal for 21 oils (功效/用法/注意事项)
  - 📖 badge on oils that have cards
  - Green gradient header, method badges, bullet lists
- Oil states: inactive oils greyed out, card oils highlighted
- Dilution guide modal (稀释比例 by age group)
- Safety caution modal (使用禁忌)
- PDF export: printable price table in new window
- Add oil form with volume dropdown (2.5/5/10/15/115ml)
- Search filters by Chinese + English name
- composables/useOilCards.js: OIL_CARDS data + getOilCard()

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 21:58:32 +00:00
7dbcd2778e Fix BugTracker: match actual API data model
Some checks failed
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 4s
Test / build-check (push) Successful in 4s
PR Preview / test (pull_request) Successful in 5s
PR Preview / deploy-preview (pull_request) Successful in 12s
Test / e2e-test (push) Failing after 23s
- is_resolved (0/1/2/3) instead of string status
- priority (0/1/2 numbers) instead of strings
- content field instead of title/description
- display_name/username for reporter
- comment endpoint /comment (singular), body: {content}
- Fix duplicate content display in template

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 21:38:18 +00:00
8443f1a564 Fix 5 wrong API endpoints + stop swallowing JS errors in E2E
All checks were successful
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 5s
Test / build-check (push) Successful in 3s
PR Preview / test (pull_request) Successful in 4s
PR Preview / deploy-preview (pull_request) Successful in 10s
Test / e2e-test (push) Successful in 4m24s
Endpoint fixes:
- AuditLog: /api/audit-logs → /api/audit-log
- BugTracker: /api/bugs → /api/bug-reports, create → /api/bug-report
- BugTracker: fix create body (content+priority, not title/description)
- MyDiary: /api/brand-settings → /api/brand
- MyDiary: /api/me/display-name → PUT /api/me
- RecipeSearch: /api/category-modules → /api/categories

Test improvements:
- Remove blanket uncaught:exception swallow (only ignore ResizeObserver)
- Add endpoint-parity.cy.js: intercept-based test that verifies correct
  API endpoints are called and wrong ones are NOT called

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 21:30:54 +00:00
d88e202bb3 Fix critical bugs: oil prices ¥0.00, ingredient field mapping
- oils store: change Map to plain object for Vue reactivity
- recipes store: map `oil_name` from API (was only mapping `oil`/`name`)
- OilReference: fix .get() calls to bracket access
- Add price-display.cy.js regression test (3 tests)
- Add visual-check.cy.js for screenshot verification

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 20:35:01 +00:00
ee8ec23dc7 Refactor frontend to Vue 3 + Vite + Pinia + Cypress E2E
- Replace single-file 8441-line HTML with Vue 3 SPA
- Pinia stores: auth, oils, recipes, diary, ui
- Composables: useApi, useDialog, useSmartPaste, useOilTranslation
- 6 shared components: RecipeCard, RecipeDetailOverlay, TagPicker, etc.
- 9 page views: RecipeSearch, RecipeManager, Inventory, OilReference, etc.
- 14 Cypress E2E test specs (113 tests), all passing
- Multi-stage Dockerfile (Node build + Python runtime)
- Demo video generation scripts (TTS + subtitles + screen recording)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 18:35:00 +00:00