一個全面的庫存管理系統,支持暗黑模式/亮色模式及英語/中文語系。前端使用 Vite 和 Vue3 結合 Ant Design 和 Tabulator-table 構建,後端採用 Python Django REST 框架配合 MySQL 和 Django ORM。確保資料庫交易遵循 ACID 屬性。
class LocaleRegion(models.Model):
name = models.CharField(max_length=255)
# HK,ZH,EN
code = models.CharField(max_length=255)
value = models.IntegerField()
class Meta:
db_table = "system_locale_region"
class LocaleData(models.Model):
key_word = models.CharField(max_length=254, unique=True)
value1 = models.CharField(max_length=255)
value2 = models.CharField(max_length=255)
class Meta:
db_table = "system_locale_data"
# /api/v1/locales/?lang=en
class LocalesProcessor(generics.GenericAPIView):
def get(self, request):
getLanguageCode = request.GET.get("lang", None)
locales = {}
languageModel = LocaleRegion.objects.get(code="en-US")
# Check if request language code exist in Locales
if LocaleRegion.objects.filter(code=getLanguageCode).exists():
# Get the language code
languageModel = LocaleRegion.objects.get(code=getLanguageCode)
# Get all the LocalesWords
for o in LocaleData.objects.all():
# Get the language code
keyName = "value" + str(languageModel.value)
locales[o.key_word] = getattr(o, keyName)
return Response(data={"details": locales})
Excel 匯入優化:最初使用 pandas 循環處理 Excel 數據,由於序列化器驗證,速度較慢。通過使用 Django ORM 的批量上傳,將所有 Excel 數據在一次循環中處理,將特徵(如分類、材質)提取到 set() 中先進行更新,並通過 ID 匹配回主數據,顯著提升了數據處理速度。
出貨頁面性能優化:使用 Ant Design 表單在低規格的移動掃描器上導致高 RAM 使用,頁面卡頓。了解到在循環組件中應使用簡單元素而非重型 UI 框架組件以減少開銷。實施 TypeScript 檢查以在移動屏幕上渲染簡單的 HTML 元素,並在較大屏幕上渲染 Ant Design 豐富頁面。這一經驗促使開始探索更輕量級的 UI 框架,如 TailwindCSS。