fix: 精油编辑统一保存到 DB + 导出 Excel 增加功效列
Some checks failed
Test / unit-test (push) Successful in 7s
Test / build-check (push) Successful in 4s
PR Preview / teardown-preview (pull_request) Has been skipped
Test / e2e-test (push) Failing after 1m12s
PR Preview / test (pull_request) Successful in 7s
PR Preview / deploy-preview (pull_request) Successful in 19s
Some checks failed
Test / unit-test (push) Successful in 7s
Test / build-check (push) Successful in 4s
PR Preview / teardown-preview (pull_request) Has been skipped
Test / e2e-test (push) Failing after 1m12s
PR Preview / test (pull_request) Successful in 7s
PR Preview / deploy-preview (pull_request) Successful in 19s
- 新增 oil_cards 表,持久化知识卡片(功效/用法/方法/注意/emoji) - POST /api/oils 扩展接受 card_* 字段,在同一事务里 upsert oil_cards - GET /api/oil-cards 返回全部卡片 - 前端 getOilCard 优先查 DB,再 fallback 静态表 - saveEditOil 统一走 saveOil,不再分两套保存 - 精油价目 Excel 导出增加「功效」列 - 首次部署自动从静态 OIL_CARDS 播种到 oil_cards 表 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
// Oil knowledge cards - usage guides for common essential oils
|
||||
// Ported from original vanilla JS implementation
|
||||
import { useOilsStore } from '../stores/oils'
|
||||
|
||||
export const OIL_CARDS = {
|
||||
'野橘': { emoji: '🍊', en: 'Wild Orange', effects: '安抚镇静、驱散负能量、紧张情绪和压力\n抗氧化、消炎、抗病毒、增强免疫\n提振食欲,刺激胆汁分泌,促进消化\n促进循环', usage: '日常香薰,提振情绪、舒压,营造愉悦氛围\n饮水加入 1至2 滴,护肝抗病毒\n泡澡时滴 3至4 滴,消除疲劳,放松身心\n扫地、拖地时加入 3至5 滴,清新空气\n涂抹腹部促进消化\n涂抹肝区帮助肝脏排毒\n口腔溃疡时加入水中漱口', method: '🔹香薰 | 🔸内用 | 🔺涂抹', caution: '轻微光敏,白天涂抹注意防晒' },
|
||||
@@ -33,6 +34,17 @@ export const OIL_CARD_ALIAS = {
|
||||
}
|
||||
|
||||
export function getOilCard(name) {
|
||||
// Check DB-persisted cards first (via store)
|
||||
try {
|
||||
const store = useOilsStore()
|
||||
if (store.oilCards[name]) return store.oilCards[name]
|
||||
// Check alias in store too
|
||||
const aliased = OIL_CARD_ALIAS[name]
|
||||
if (aliased && store.oilCards[aliased]) return store.oilCards[aliased]
|
||||
} catch {
|
||||
// Store may not be initialized yet, fall through to static data
|
||||
}
|
||||
// Fall back to static OIL_CARDS
|
||||
if (OIL_CARDS[name]) return OIL_CARDS[name]
|
||||
if (OIL_CARD_ALIAS[name] && OIL_CARDS[OIL_CARD_ALIAS[name]]) return OIL_CARDS[OIL_CARD_ALIAS[name]]
|
||||
const base = name.replace(/呵护$/, '')
|
||||
|
||||
Reference in New Issue
Block a user