import { createRouter, createWebHistory } from 'vue-router'
import { useGenerateStore } from '@/stores/modules/generate'
const VerifyIDs = (num: number) => {
	return true
  const ids = [
	!!useGenerateStore().customerId,
	!!useGenerateStore().visitRecordId,
	!!useGenerateStore().styleId,
	// !!useGenerateStore().modelPhotoId,
	true,
	!!useGenerateStore().originalTryOnId,
  ];
  return ids.splice(0, num).every(id => id) ? true : "/stylist/customer";
}

/**
 * 路由缓存机制:
 * 1. 设置路由的meta属性为{ cache: true }，表示需要缓存
 * 2. App.vue中使用RouteCache组件，通过路由的name来进行匹配
 * 3. 路由的name默认是文件名,如果文件名与name不一致,通过defineOptions({ name: 'componentName' })来设置
 * 
 * 自定义验证规则：
 * meta：{ verify: （）=> boolean || string }
 * 1. boolean true 跳转 false 不跳转
 * 2. string 跳转的路由path
 */

/** 验证id
 * @param num 验证id的数量1-5
 * 1. 顾客id
 * 2. 进店记录id
 * 3. 服装id
 * 4. 模特照片id
 * 5. 原始试穿id-优先AI魔改
 * @returns boolean
 */
const router = createRouter({
  history: createWebHistory('/'),
  //   history: createWebHistory(import.meta.env.VITE_APP_URL),
  routes: [
    {
      path: '/',
      redirect: '/welcome'
    },
    {
      path: '/login',
      name: 'LoginPage',
      component: () => import('@/views/login/LoginPage.vue')
    },
    {
      path:'/reset',
      name:'ResetPage',
      component: () => import('@/views/login/ResetPage.vue')
    },
    {
      path: '/signup',
      name: 'SignupPage',
      component: () => import('@/views/login/SignupPage.vue')
    },
    {
      path: '/welcome',
      name: 'WelcomePage',
      component: () => import('@/views/login/WelcomePage.vue')
    },
	{
		path: '/homeNav',
		name: 'HomeNav',
		component: () => import('@/views/Workshop/home.vue')
	  },
    {
      path: '/stylist',
      name: 'StylistPage',
      redirect: '/stylist/index',
      component: () => import('@/views/stylist/container.vue'),
      children: [
        {
          path: 'index',
          name: 'index',
          component: () => import('@/views/stylist/index.vue'),
		  meta: { verify: ()=> VerifyIDs(2) }
        },
        {
          path: 'sex',
          name: 'sex',
          component: () => import('@/views/stylist/sex.vue'),
		  meta: { verify: ()=> VerifyIDs(2) }
        },
        {
          path: 'dressfor',
          name: 'dressfor',
          component: () => import('@/views/stylist/dressfor.vue'),
		  meta: { verify: ()=> VerifyIDs(2) }
        },
        {
          path: 'customer',
          name: 'customer',
          component: () => import('@/views/stylist/customer.vue'),
        }
      ]
    },
    {
      path: '/asistant',
      name: 'asistant',
      component: () => import('../views/asistant/index.vue'),
      meta: { cache: true, verify: ()=> VerifyIDs(2) }
    },
    {
      path: '/workshop',
      name: 'Workshop',
      component: () => import('../views/Workshop/index.vue'),
      children: [
        {
          path: '/workshop',
          redirect: '/workshop/selectStyle'
        },
        {
          path: '/workshop/selectStyle',
          name: 'SelectStyle',
          component: () => import('../views/Workshop/selectStyle.vue'),
		  meta: { verify: ()=> VerifyIDs(2) }
        },
        {
          path: '/workshop/selectModel',
          name: 'SelectModel',
          component: () => import('../views/Workshop/selectModel.vue'),
		  meta: { verify: ()=> VerifyIDs(3) }
        },
        {
          path: '/workshop/product',
          name: 'Product',
          component: () => import('../views/Workshop/product.vue'),
		  meta: { verify: ()=> VerifyIDs(4) }
        },
        {
          // 推荐try on
          path: '/workshop/recommended',
          name: 'recommended',
          component: () => import('../views/Workshop/recommended.vue'),
		  meta: { verify: ()=> VerifyIDs(5) }
        },
        {
          // 上传照片1
          path: '/workshop/uploadFace',
          name: 'uploadFace',
          component: () => import('../views/Workshop/uploadFace1.vue'),
		  meta: { verify: ()=> VerifyIDs(5) }
        },
        {
          // 上传照片2
          path: '/workshop/uploadFace2',
          name: 'uploadFace2',
          component: () => import('../views/Workshop/uploadFace2.vue'),
		  meta: { verify: ()=> VerifyIDs(5) }
        },
        {
          // 自定义创作
          path: '/workshop/customize',
          name: 'customize',
          component: () => import('../views/Workshop/customize.vue'),
		  meta: { verify: ()=> VerifyIDs(5) }
        },
        {
          // library
          path: '/workshop/library',
          name: 'library',
          component: () => import('../views/Workshop/library.vue'),
		  meta: { verify: ()=> VerifyIDs(2) }
        },
        {
          path: '/workshop/profile',
          name: 'profile',
          component: () => import('../views/Workshop/profile.vue'),
		  meta: { verify: ()=> VerifyIDs(1) }
        },
        {
          // creation
          path: '/workshop/creation',
          name: 'creation',
          component: () => import('../views/Workshop/creation/index.vue'),
		  meta: { verify: ()=> VerifyIDs(2) }
        },
        {
          // 完成创建
          path: '/workshop/end',
          name: 'end',
          component: () => import('../views/Workshop/end.vue'),
		  meta: { verify: ()=> VerifyIDs(2) }
        }
      ]
    }
  ]
})

export default router
