From 8b6b8e7ab7a911c9ccd5ca0167ca8d519d1df9bf Mon Sep 17 00:00:00 2001 From: linghutianhao Date: Fri, 14 Aug 2026 15:28:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E7=8E=B0=E5=9C=A8=E7=9A=84?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 5 + README.md | 14 +- blog/1970-01-01-welcome/index.md | 24 + blog/1970-01-01-welcome/touxiang.jpg | Bin 0 -> 32489 bytes blog/2019-05-28-first-blog-post.mdx | 12 - blog/2019-05-29-long-blog-post.mdx | 44 - blog/2021-08-01-mdx-blog-post.mdx | 24 - .../docusaurus-plushie-banner.jpeg | Bin 96122 -> 0 bytes blog/2021-08-26-welcome/index.mdx | 29 - blog/2025-01-01-xy/4-其他平台账号.md | 49 + blog/2025-01-01-xy/8-本地开发-不常用.md | 199 +++ blog/2026-01-01-xy/1-AMS账号.md | 217 +++ blog/2026-01-01-xy/2-数据库表.md | 452 +++++ blog/2026-01-01-xy/3-本地开发.md | 228 +++ blog/authors.yml | 30 +- blog/tags.yml | 28 +- docs/2026开发笔记/26-1开发笔记.md | 435 +++++ docs/2026开发笔记/26-2开发笔记.md | 373 ++++ docs/2026开发笔记/26-3开发笔记.md | 256 +++ docs/2026开发笔记/26-4开发笔记.md | 569 ++++++ docs/2026开发笔记/26-5开发笔记.md | 636 +++++++ docs/2026开发笔记/26-6开发笔记.md | 621 +++++++ docs/2026开发笔记/26-7开发笔记.md | 663 +++++++ docs/2026开发笔记/_category_.json | 8 + .../img/docsVersionDropdown.png | Bin docs/Docusaurus资料/_category_.json | 8 + docs/Docusaurus资料/cms构建说明.md | 250 +++ docs/Docusaurus资料/docusaurus构建说明.md | 234 +++ docs/Docusaurus资料/插件.md | 31 + docs/Docusaurus资料/搜索框.md | 18 + docs/intro.mdx | 76 +- docs/tutorial-basics/_category_.json | 8 - docs/tutorial-basics/congratulations.mdx | 23 - docs/tutorial-basics/create-a-blog-post.mdx | 34 - docs/tutorial-basics/create-a-document.mdx | 57 - docs/tutorial-basics/create-a-page.mdx | 43 - docs/tutorial-basics/deploy-your-site.mdx | 31 - docs/tutorial-basics/markdown-features.mdx | 168 -- docs/tutorial-extras/_category_.json | 7 - docs/tutorial-extras/img/localeDropdown.png | Bin 27841 -> 0 bytes docs/tutorial-extras/manage-docs-versions.mdx | 55 - docs/tutorial-extras/translate-your-site.mdx | 88 - docs/个人资料/_category_.json | 8 + docs/相寓资料/Doris说明.md | 241 +++ docs/相寓资料/_category_.json | 8 + docs/相寓资料/上线相关.md | 53 + docs/相寓资料/系统相关.md | 162 ++ docusaurus.config.ts | 115 +- package-lock.json | 1535 ++++++++++++----- package.json | 3 +- src/css/custom.css | 61 +- src/pages/about/aaa.md | 9 + src/pages/about/index.md | 9 + src/pages/helloMarkdown.md | 9 + src/pages/helloReact.tsx | 20 + start.vbs | 6 + static/admin/config.yaml | 110 ++ static/admin/index.html | 12 + static/img/code.ico | Bin 0 -> 52374 bytes static/img/taitongle.jpg | Bin 0 -> 73910 bytes tools/register-typora-protocol.reg | 14 + tools/typora-handler.wsf | 13 + .../register-typora-protocol-闪黑窗口.reg | 14 + tools/v1bak/register-typora-protocol.reg | 14 + tools/v1bak/typora-handler.js | 14 + tools/v1bak/typora-handler.vbs | 19 + 66 files changed, 7248 insertions(+), 1248 deletions(-) create mode 100644 blog/1970-01-01-welcome/index.md create mode 100644 blog/1970-01-01-welcome/touxiang.jpg delete mode 100644 blog/2019-05-28-first-blog-post.mdx delete mode 100644 blog/2019-05-29-long-blog-post.mdx delete mode 100644 blog/2021-08-01-mdx-blog-post.mdx delete mode 100644 blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg delete mode 100644 blog/2021-08-26-welcome/index.mdx create mode 100644 blog/2025-01-01-xy/4-其他平台账号.md create mode 100644 blog/2025-01-01-xy/8-本地开发-不常用.md create mode 100644 blog/2026-01-01-xy/1-AMS账号.md create mode 100644 blog/2026-01-01-xy/2-数据库表.md create mode 100644 blog/2026-01-01-xy/3-本地开发.md create mode 100644 docs/2026开发笔记/26-1开发笔记.md create mode 100644 docs/2026开发笔记/26-2开发笔记.md create mode 100644 docs/2026开发笔记/26-3开发笔记.md create mode 100644 docs/2026开发笔记/26-4开发笔记.md create mode 100644 docs/2026开发笔记/26-5开发笔记.md create mode 100644 docs/2026开发笔记/26-6开发笔记.md create mode 100644 docs/2026开发笔记/26-7开发笔记.md create mode 100644 docs/2026开发笔记/_category_.json rename docs/{tutorial-extras => 2026开发笔记}/img/docsVersionDropdown.png (100%) create mode 100644 docs/Docusaurus资料/_category_.json create mode 100644 docs/Docusaurus资料/cms构建说明.md create mode 100644 docs/Docusaurus资料/docusaurus构建说明.md create mode 100644 docs/Docusaurus资料/插件.md create mode 100644 docs/Docusaurus资料/搜索框.md delete mode 100644 docs/tutorial-basics/_category_.json delete mode 100644 docs/tutorial-basics/congratulations.mdx delete mode 100644 docs/tutorial-basics/create-a-blog-post.mdx delete mode 100644 docs/tutorial-basics/create-a-document.mdx delete mode 100644 docs/tutorial-basics/create-a-page.mdx delete mode 100644 docs/tutorial-basics/deploy-your-site.mdx delete mode 100644 docs/tutorial-basics/markdown-features.mdx delete mode 100644 docs/tutorial-extras/_category_.json delete mode 100644 docs/tutorial-extras/img/localeDropdown.png delete mode 100644 docs/tutorial-extras/manage-docs-versions.mdx delete mode 100644 docs/tutorial-extras/translate-your-site.mdx create mode 100644 docs/个人资料/_category_.json create mode 100644 docs/相寓资料/Doris说明.md create mode 100644 docs/相寓资料/_category_.json create mode 100644 docs/相寓资料/上线相关.md create mode 100644 docs/相寓资料/系统相关.md create mode 100644 src/pages/about/aaa.md create mode 100644 src/pages/about/index.md create mode 100644 src/pages/helloMarkdown.md create mode 100644 src/pages/helloReact.tsx create mode 100644 start.vbs create mode 100644 static/admin/config.yaml create mode 100644 static/admin/index.html create mode 100644 static/img/code.ico create mode 100644 static/img/taitongle.jpg create mode 100644 tools/register-typora-protocol.reg create mode 100644 tools/typora-handler.wsf create mode 100644 tools/v1bak/register-typora-protocol-闪黑窗口.reg create mode 100644 tools/v1bak/register-typora-protocol.reg create mode 100644 tools/v1bak/typora-handler.js create mode 100644 tools/v1bak/typora-handler.vbs diff --git a/.gitignore b/.gitignore index b2d6de3..9651d0b 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,8 @@ npm-debug.log* yarn-debug.log* yarn-error.log* + +.history + +config +.claude \ No newline at end of file diff --git a/README.md b/README.md index bce6eb2..b28211a 100644 --- a/README.md +++ b/README.md @@ -5,15 +5,13 @@ This website is built using [Docusaurus](https://docusaurus.io/), a modern stati ## Installation ```bash -npm install +yarn ``` -**Note**: feel free to use the package manager of your choice. - ## Local Development ```bash -npm run start +yarn start ``` This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. @@ -21,7 +19,7 @@ This command starts a local development server and opens up a browser window. Mo ## Build ```bash -npm run build +yarn build ``` This command generates static content into the `build` directory and can be served using any static contents hosting service. @@ -31,13 +29,13 @@ This command generates static content into the `build` directory and can be serv Using SSH: ```bash -USE_SSH=true npm run deploy +USE_SSH=true yarn deploy ``` Not using SSH: ```bash -GIT_USER= npm run deploy +GIT_USER= yarn deploy ``` -If you are using GitHub Pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. +If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. diff --git a/blog/1970-01-01-welcome/index.md b/blog/1970-01-01-welcome/index.md new file mode 100644 index 0000000..56f8f22 --- /dev/null +++ b/blog/1970-01-01-welcome/index.md @@ -0,0 +1,24 @@ +--- +title: Welcome +tags: + - hello + - develop +authors: + - ling +--- + +{/* truncate */} + +测试 + +```plain +aaaa11 +``` + +[官方文档](https://docusaurus.io/docs/blog) + +[blog配置](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog) + +[Decap CMS地址](https://decapcms.org/docs/docusaurus/) +![太痛了](/img/taitongle.jpg) +![我嘞个大头虾](./touxiang.jpg) diff --git a/blog/1970-01-01-welcome/touxiang.jpg b/blog/1970-01-01-welcome/touxiang.jpg new file mode 100644 index 0000000000000000000000000000000000000000..54dde111838666dac7163d417ce4c95c82fa8173 GIT binary patch literal 32489 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 literal 0 HcmV?d00001 diff --git a/blog/2019-05-28-first-blog-post.mdx b/blog/2019-05-28-first-blog-post.mdx deleted file mode 100644 index a62ee55..0000000 --- a/blog/2019-05-28-first-blog-post.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -slug: first-blog-post -title: First Blog Post -authors: [slorber, yangshun] -tags: [hola, docusaurus] ---- - -Lorem ipsum dolor sit amet... - -{/* truncate */} - -...consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet diff --git a/blog/2019-05-29-long-blog-post.mdx b/blog/2019-05-29-long-blog-post.mdx deleted file mode 100644 index 681cf0e..0000000 --- a/blog/2019-05-29-long-blog-post.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -slug: long-blog-post -title: Long Blog Post -authors: yangshun -tags: [hello, docusaurus] ---- - -This is the summary of a very long blog post, - -Use a `{/*` `truncate` `*/}` comment to limit blog post size in the list view. - -{/* truncate */} - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet diff --git a/blog/2021-08-01-mdx-blog-post.mdx b/blog/2021-08-01-mdx-blog-post.mdx deleted file mode 100644 index 0c4b4a4..0000000 --- a/blog/2021-08-01-mdx-blog-post.mdx +++ /dev/null @@ -1,24 +0,0 @@ ---- -slug: mdx-blog-post -title: MDX Blog Post -authors: [slorber] -tags: [docusaurus] ---- - -Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/). - -:::tip - -Use the power of React to create interactive blog posts. - -::: - -{/* truncate */} - -For example, use JSX to create an interactive button: - -```js - -``` - - diff --git a/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg b/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg deleted file mode 100644 index 11bda0928456b12f8e53d0ba5709212a4058d449..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96122 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 diff --git a/blog/2021-08-26-welcome/index.mdx b/blog/2021-08-26-welcome/index.mdx deleted file mode 100644 index a21bccd..0000000 --- a/blog/2021-08-26-welcome/index.mdx +++ /dev/null @@ -1,29 +0,0 @@ ---- -slug: welcome -title: Welcome -authors: [slorber, yangshun] -tags: [facebook, hello, docusaurus] ---- - -[Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog). - -Here are a few tips you might find useful. - -{/* truncate */} - -Simply add Markdown files (or folders) to the `blog` directory. - -Regular blog authors can be added to `authors.yml`. - -The blog post date can be extracted from filenames, such as: - -- `2019-05-30-welcome.md` -- `2019-05-30-welcome/index.md` - -A blog post folder can be convenient to co-locate blog post images: - -![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg) - -The blog supports tags as well! - -**And if you don't want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config. diff --git a/blog/2025-01-01-xy/4-其他平台账号.md b/blog/2025-01-01-xy/4-其他平台账号.md new file mode 100644 index 0000000..432c50d --- /dev/null +++ b/blog/2025-01-01-xy/4-其他平台账号.md @@ -0,0 +1,49 @@ +--- +title: 其他平台账号 +tags: [account] +--- + +{/* truncate */} + +### 催缴中台 + +| 角色 | userid | +| :------- | :------------ | +| 租务专员 | bjzuwu | +| | 196181 | +| 租务经理 | lhzwjl | +| 管理员 | admin | +| pw | srvmid@220930 | + +### 数据中台 +| 角色 | userid | +| :----- | :--------- | +| 管理员 | admin | +| pw | Xy@1997qwe | + +### cbs +| 城市 | userid | 备注 | +| :--------- | :------------ | :--------------------------------------- | +| 北京管理员 | lxyplm789 | 无菜单 509548 | +| 无锡管理员 | 575331 | 买卖 8300033,8341828 | +| 常州管理员 | 8070021 | | +| 天津管理员 | 159017 | 全能经纪人 杨元庆 8137386 蒋得宁 8280960 | +| 太原大账户 | 100943 | | +| 上海管理员 | 608349 | | +| 南京大账户 | 1125 | | +| 杭州管理员 | 649383 | | +| 郑州大账户 | 8284270 | | +| 苏州管理员 | 670832/202120 | cbs收房 670832 | +| pw | App!User5i5j@ | | + + +### 相寓+ + +| 城市 | 手机号 | 姓名 | +| :--- | :---------- | ------ | +| 苏州 | 13912345678 | | +| 上海 | 18812345678 | 王凤琴 | +| 南京 | 18001918991 | | +| 天津 | 13110050863 | | +| 武汉 | 15652168880 | | +| pw | 123456 | 666666 | diff --git a/blog/2025-01-01-xy/8-本地开发-不常用.md b/blog/2025-01-01-xy/8-本地开发-不常用.md new file mode 100644 index 0000000..b2a0110 --- /dev/null +++ b/blog/2025-01-01-xy/8-本地开发-不常用.md @@ -0,0 +1,199 @@ +--- +title: 本地开发-不常用 +tags: [develop] +--- + +{/* truncate */} + +### hibernate/jdbc + +```java +//hibernate查询 +findById(Long); +Dao.getHibernateTemplate().find(sql); +findByHql(StringBuffer, new ArrayList()); +.findByHql(hql); + +//hibernate分页 +Dao.findByHql(page, hql, params); + +//hibernate保存 +Dao.saveOrUpdate(对象); + +//jdbc查询 +queryForObject +_jdbcQueryForListNotAll +jdbcSqlQueryForListBean + +//jdbc分页 +_jdbcQueryForPage +jdbcQueryForPage + +//jdbc保存 +getJdbcTemplate().update + +//刷新hibernate事务 +Dao.getHibernateTemplate().getSessionFactory().getCurrentSession().flush(); + +//持久化对象变成托管状态 +appendixLackInfoDao.getHibernateTemplate().getSessionFactory().getCurrentSession().evict(appendix); +``` + + + +### 角色/管辖通用方法 + +```java +//登录人信息 +TawSystemSessionForm sessionform = (TawSystemSessionForm) HttpTool.getSession().getAttribute("sessionform"); + +//缓存查人查字典 +ID2NameService id2NameService = (ID2NameService) ApplicationContextHolder.getInstance().getBean("id2nameService"); +id2NameService.id2Name(peopleId, "org.hpin.basicsdate.dao.TawSystemUserDao"); +id2NameService.id2Name(dictTypeCode, "tawSystemDictTypeCache"); + +//获取角色 +roleIdLong roleId = MainRoleConstants.getInstance().getRoleId(MainRoleConstants.ROLEID_QJL); + +//登录人是否某角色 +MainRoleConstants.getInstance().isHjzxZyN(StaticMethod.nullObject2Long(sessionform.getRoleid())); +isSpecialUserRole(MainRoleConstants.ROLEID_GXGJ, true); + +//登录人是否有菜单权限 +PrivMgrLocator.getPrivMgr().hasPriv(sessionForm.getUserid(),"work_sf_termination"); + +//用户id查询用户信息 +tawSystemUserService.findByUserId(housePeopleGJId); +TawSystemSessionBo.getSessionForm(housePeopleGJId); + +//角色id查询角色 +nameITawSystemRoleManager mgr = (ITawSystemRoleManager)SpringTool.getBean("ItawSystemRoleManager"); + +//角色id查询角色(审核人的角色名) +String roleName = mgr.getRoleNameById(Long.parseLong(actApprovalInsInfo.getCurrentTaskRole())); +String roleName = iTawSystemRoleManager.getRoleNameById(Long.parseLong(sessionform.getRoleid())); + +//登录人和角色 查用户(上海) +tawSystemUserDao.getUserByUserIdAndRoleId(housePeopleGJId,MainRoleConstants.getInstance().getRoleId(MainRoleConstants.ROLEID_SFGJ)+""); + +//管辖范围和角色id 查所有用户 +tawSystemUserService.getUpUserByRegionsAndRoleId(ownRegionList, roleId); +(TawSystemUserRefRole)mgr.getUserRefRoleByuserid(actApprovalInsInfo.getLastModifiorName()).get(0).getRoleid(); + +//管辖范围 +sqlList conditionList = new ArrayList(); +conditionList.add("contractMainInfo.STORE_CODE"); +String regionCondition = DataQueryConditionUtil.getStoreQueryCondition(sessionForm, conditionList,DataQueryConditionUtil.TYPE12, null, null, false); + +//查询用户上级 +getUpUserByRegionAndRoleIds + +//刷新redis 条件是 不是windows就可以刷 +TawSystemDictTypeCache.afterPropertiesSet +``` + +### utils + +```java +//创建数据编号 +StaticCode.getGenerationCode(StaticCode.WTTP, changeContractBatch.getId().toString()) + +//字典list +.getDictSonsByDictid + +//日期util +DateUtils .convertDate + +//改文字编码 +URLDecoder.decode + +//拷贝对象 +PropertyUtils.copyProperties(new,old) +``` + +### 定时 + +| 标题 | 内容 | 备注 | +| ------------ | ------------------------------------------------------------ | ---- | +| 控制定时时间 | 5秒一次 0/5 * * * * ?
5分一次 0 0/5 * * * ?
9点到6点 5分一次 0 0/5 9-16 * * ?
每天两点 0 0 2 * * ? | | +| | | | + + + +### 杂 + +#### 网段被限制 + +``` +网段被限制 PermitIpInfoDao.java + 或 checkCurrentIpIsPermited 把false删掉 +登录被限制 WIWJ_PERMIT_EQUIPMENT_TABLE +``` + + + +#### 正则 + +```js +var regex= /^\d{11}$/; + if (!regex.test(agentPhoneNo)) { + alert("请输入11位的手机号码。"); + return true; + } +``` + + + +### sessionfrom存值 + +``` +id=8080806660b71ff10160b9c6b40a0583 +userid=8162544 +username=符永跃 +deptid=10201JH030102 +deptpriid=1126846 +deptname=万年花城一区租赁A店收房组 +privid= +isHavePriv=false +privname= +roleid=562 +rolename= +isadmin=false +romteaddr=10.1.74.43 +password=1191c13a9e1661ba2b38d766b642eb54 +rolelist=[org.hpin.commons.system.role.model.TawSystemSubRole@c20995ee] +contactMobile=13000000000 +memSubCompayid=0 +memSubCompscname= +memSubCompscode= +projectInfoId= +projectInfoName= +diptidTop=102 +circleCode=null +deviceID= +isOpen= +isFirstLogin=false +dqRegionId=101JH +ztRegionId=101JH03 +mdRegionId=101JH0301 +storeId=101JH030102 +storePkId=155637 +isMedia=false +storeCode=01.0839.003.004 +roleCircleMap={0=null} +isByCircleSearch=false +storeName=万年花城一区租赁A店收房组 +userdegree=0 +ownRegionIds=101JH030102 +sharedRegionIds= +isCWUser=false +isSFUser=false +isAllRegion=false +machineCode= +userUnit=562','8162544','10201JH030102 +roles= +roleNames= +validatorResults= +page=0 +``` + diff --git a/blog/2026-01-01-xy/1-AMS账号.md b/blog/2026-01-01-xy/1-AMS账号.md new file mode 100644 index 0000000..daa708e --- /dev/null +++ b/blog/2026-01-01-xy/1-AMS账号.md @@ -0,0 +1,217 @@ +--- +title: AMS账号 +tags: [account] +--- + + +### 北京 +| 角色 | 姓名 | userid | - | 角色 | 姓名 | userid | +| :------------------- | :------ | :-------- | :--- | :----------- | :----- | :------- | +| 经纪人 | 李凯旋 | 657803 | | 华熙经纪人 | 706010 | 8108920 | +| 商圈经理 | 薛梽纲 | 654593 | | 华熙商圈经理 | 705889 | 705480 | +| 区总监 | | 638054 | | 房山经纪人 | | 8399013 | +| 财务专员 | 武雪 | 692824x | | 房山商圈经理 | | 20241213 | +| 事业总 | 赵金阳 | 515926 ||||| +| 相寓总经理 | 杨春志 | 95175x ||||| +| 租赁总监 | 王孝毡 | 242160 ||||Xyams1997qwe| +| 财务主管 | 王媛娇 | 76833 ||||| +| 北京相寓副总经理 | 徐璇 | 104357 ||||| +| 租务部全管辖 | 李金玲 | 548568 ||||| +| 智能锁专员 | 蒋子妍 | 8248612 ||||| +| 智能锁主管 | | 8248612x1 ||||| +| 承租财务审核 | | 112233 ||||| +| 北京相寓呼叫专员 | 李霜 | 358380 ||||| +| 线上产品主管 | | 8212426x1 ||||| +| 中心店主管 | | 83875 ||||| +| 运营管理中心总监审核 | | 20220321 ||||| +| 法务专员 | 赵爽 | 8208006x ||||| +| 客服总监 | 陈楠3 | 106561 ||||| +| 相寓流程专员 | 邱瑞 | 548085 ||||| +| 相寓客诉部主管 | 王蕾 | 580561 ||||| +| 对内客服主管 | 周晓 | 638349x ||||| +| 相寓支持中心总监 | 杨贵学1 | 8158847 ||||| +| 爱家营业务法务经理 | 杜瑶瑶 | 8237974x ||||| + +{/* truncate */} + +### 杭州 + +| 角色 | 姓名 | userid | - | 角色 | 姓名 | userid | +| :----------------- | :------ | :----------- | :--- | :------- | :------ | :------ | +| 经纪人 | 章汉杰 | 8316455 | | 经纪人 | 朱二旺 | 8316455 | +| 业务主任 | 徐陈玲2 | 579507 | | 业务主任 | 徐陈玲2 | 686029 | +| 租赁区经理 | 张建君 | 597 ||||| +| 租赁区总监 | 潘玉明 | 93714/135294 ||||| +| 房管部审核专员 | 黄韩超 | 8215811 ||||Xyams1997qwe| +| 房管部主管 | 葛文燕 | 95155 ||||| +| 房管部经理 | 徐逸颖 | 72072 ||||| +| 房管部后续专员 | 周梅5 | 8215606 ||||| +| 租赁核算部会计 | 赵晓红3 | 8219450 ||||| +| 租赁核算部助理 | 吴洁6 | 8227735 ||||| +| 业务执行副总 | 杨海哨 | 66735 ||||| +| 法务专员 | 李小碟 | 8338601 ||||| +| 租务专员 | 196181 | 20240514 ||||| +| 工程部报销审核专员 | | 289481 ||||| +| 工程部助理 | | 632527 ||||| + +### 上海 +| 角色 | 姓名 | userid | - | 预生产 | +| :-------------------- | :---------- | :------------- | :--- | :------ | +| 相寓管家 | | 8155269 | | 8266406 | +| 相寓区域经理 | | 8190279 | | 8266406 | +| 相寓区域总监) | | 255506 | | 8266406 | +| 战区总 | 战区总 | 121212 ||| +| 应收会计(合同) | 主管 123123 | 639174 ||| +| 相寓/审核专员(交割单) | | 196181/106964X ||Xyams1997qwe| +| 相寓副总经理 | | 140267 ||| +| 事业部总监 | | xysybzj ||| +| 绩效数据专员 | | ||| +| 相寓总经理 | | 98363 ||| +| 相寓支持部经理 | 欧阳艳 | 630771X2 ||| +| 出纳专员 | | 587308 ||| + +### 无锡 +| 角色 | 姓名 | userid | | +| :----------------- | :------------ | :------------- | ------------ | +| 经纪人 | 朱俭俭 | 642063 | | +| 营业经理 | | 642063x/243340 | Xyams1997qwe | +| 区经理 | | 8039498 | | +| 管家(交割单) | 张寅 | 8172094 | | +| 审核(协议,交割单) | 相寓合同专员 | acai | | +| 相寓审核专员(退租) | 相寓审核专员1 | 8184324 | | +| 相寓合同专员 | | acai | | +| 运营督导中心总监 | | 8039384 | | +| 相寓部经理 | | 8039026 | | +| 管家主管(全管辖?) | | 8139318 | | +| 租务专员 | | 20240110 | | + +### -南京 +| 角色 | 姓名 | userid | | +| :------------------- | :--------- | :-------- | ------------ | +| 相寓管家 | 李月红 | 655950 | | +| 区域经理 | 孙满义 | 680143 | Xyams1997qwe | +| 区域总监 | | 657479 | | +| 运营总监 | | 97416 | | +| 相寓管理部总监 | | 97416 | | +| 合同审核专员 | | 575380 | | +| 财务专员 | | 575380 | | +| 租务专员 | 196181 | njzwzy | | +| 客服主管 | | 8232349x2 | | +| 绩效专员 | | 55878 | | +| 相寓运营管理专员审核 | 审精装合同 | 8357065x2 | | +| 相寓高级经理 | | 566625 | | + +### -苏州 +| 角色 | 姓名 | userid | | +| :------------- | :----- | :-------- | ------------ | +| 相寓管家 | 周富强 | 90000105 | | +| 区域经理 | 姚刚 | 90000108 | | +| 区域总监 | 张孝红 | 90000144 | Xyams1997qwe | +| 风控专员 | 程真真 | 639174 | | +| 租务专员 | 常艳红 | 98122 | | +| 相寓总经理 | | 1441 | | +| 分单专员(解约) | | 702902 | | +| 出纳 | | 8373219x2 | | +| 诉讼专员 | | sszy | | + +### -天津 +| 角色 | 姓名 | userid | - | cbs | +| :----------------- | :--- | :------- | :------- | :----------- | +| 相寓管家 | | 90000112 | 10000162 | 8164869 | +| 区域经理 | | 10000169 | | | +| 区域总监 | | 5698589 | | | +| 管家 | | 8214352 | | Xyams1997qwe | +| 管家部经理 | | 139632 | | | +| 风控(合同) | | 138136x2 | | | +| 财务专员 | | 8208200 | | | +| 相寓总经理 | | 128248x | | | +| 租赁副总经理 | | 128248x | | | +| 财务主管(跳过审批) | | 707315 | | | +| 相寓业务总监 | | 128248 | | | +| 租务专员 | | 617742 | | | +| 出纳专员 | | 8269204 | | | + +### -郑州 +| 角色 | 姓名 | userid | | +| :------------------- | :----- | :-------- | ------------ | +| 经纪人 | 张海山 | 698143 | | +| 店经理 | 刘艳杰 | 8126228 | Xyams1997qwe | +| 区经理(合同打印) | 赵志杰 | 8148011 | | +| 相寓总经理 | 张海峰 | 95406 | | +| 运营支持经理 | | 8113252x6 | | +| 管家 | 魏华 | 8145390 | | +| 财务专员 | 李佳星 | 112212 | | +| 租务专员 | | acaizwzy | | +| 租赁经理(所属人调配) | | 8113252 | | + +### 太原 +| 角色 | 姓名 | userid | - | cbs | +| :----------- | :------------- | :----------- | :------ | :------------ | +| 经纪人 | 宋忠义 | 617742 | 641740 | 8101469 | +| 租赁区副总监 | 张晓东 | 8140456 | 8197520 | App!User5i5j@ | +| 租赁区总监 | 崔健 | 574642 | | | +| 相寓副总经理 | 郝文斌 | 96163x3 | | | +| 相寓总经理 | 郝文斌 | 96163x5 | | Xyams1997qwe | +| 财务合同专员 | | 612376 | | | +| 财务结算专员 | 任国红 | 8199888 | | | +| 服务管家 | 智美平 | 8205144 | | | +| 财务主管 | 张瑞玲 | 355359 | | | +| 产品中心总监 | 董腊梅 | 283920 | | | +| 对外客服主管 | 王文超2 | 594605 | | | +| 出房维护人 | 梁鹏 | 8204893 | | | +| 租务专员 | 租务专员 | 543708 | | | +| 出房维护人 | 看委托录入的谁 | 梁鹏/8204893 | | | + +### 成都直营 +| 角色 | 姓名 | userid | | +| :------------------- | :------- | :---------- | ------------ | +| 资管经理 | 张良 | 8304529 | | +| 区域经理 | 何富 | 8134317 | Xyams1997qwe | +| 租赁总监 | 蒋成 | 649736 | | +| 财务专员 | 顾正莹 | 8380498 | | +| 租务专员 | | 8384688 | | +| 出纳专员(审核付款单) | | 8369923x1 | | +| 承租流程 : | 客户管理 | 带看单 | | +| | -录入 | -约带看详情 | | +| | -私客 | -反馈 | | +| | -约带看 | -成交 | | + +### 武汉直营 +| 角色 | 姓名 | userid | - | | +| :--------------- | :--- | :------- | :------ | ------------ | +| 综合管家 | | 9383147 | 9380482 | | +| 业务经理 | | 9381668 | 9379004 | Xyams1997qwe | +| 业务总监 | | 9381669 | | | +| 财务专员 | | acaicwzy | | | +| 租务专员 | | 20231123 | | | +| 风控专员(审合同) | | 2005 | | | +| 相寓总经理 | | 123456 | | | + +### 广州直营 +| 角色 | 姓名 | userid | | +| :--------------- | :--- | :-------- | ------------ | +| 管家 | | 900000002 | | +| 区经理(业务经理) | | 700000001 | Xyams1997qwe | +| 区总监(业务总监) | | 600000001 | | +| 相寓总经理 | | 20230721 | | +| 财务专员 | | 112233 | | +| 租务专员 | | 20237721 | | +| 店经理 | | 800000001 | | + +### 深圳park +| 深圳角色 | 姓名 | userid | | +| :--------- | :------- | :--------------- | ------------ | +| 管家 | | 90001 | | +| | 寓升大区 | 8389424x1 | Xyams1997qwe | +| | 莲塘大区 | 123456 | | +| 店经理 | | 80001 | | +| 区经理 | | 70001 | | +| 应收会计 | | 20230911 | | +| park总经理 | 202310 | 8360935/20250710 | | + +### 天津park +| 角色 | 姓名 | userid | | +| :------- | :----- | :--------- | ------------ | +| 管家 | 郭冰洁 | 8333013 | | +| 应收会计 | | 20230615 | Xyams1997qwe | +| 财务专员 | | 2023061502 | | diff --git a/blog/2026-01-01-xy/2-数据库表.md b/blog/2026-01-01-xy/2-数据库表.md new file mode 100644 index 0000000..c6762fe --- /dev/null +++ b/blog/2026-01-01-xy/2-数据库表.md @@ -0,0 +1,452 @@ +--- +title: 数据库表 +tags: [develop] +--- + +## 查生产用 + +### 委托合同 + +```sql +-- 合同信息 +select * from wk_sf_contract where contractcode = 'YW10495945'; +select * from wk_sf_contract where ownerphoneno = '19268402308'; + +-- 履历 +select * from WIWJ_CONTRACT_TRACKING where contractid = 10897558 and CONTRACTTYPE = 'SF' order by ACTIONDATE desc; + +-- 周期 +select * from wk_sf_cycle where contractid = 10040639; +select * from wk_sf_cycle_price where contractid = 10040639; + +select * from WK_SF_CYCLE_PRICE_BACKUPS; + +-- 共有人 +select * from WK_SF_CONTRACT_OWNER where OWNERNAME like '% %'; + +-- 打印日志 +select * from WIWJ_AGREEMENT_PRINT_HISTORY where VERSIONKEY = 'SFXY08133183'; +select * from WIWJ_PRINT_HISTORY_SUMMARY where BUSINESSCODE = 'SFXY08133183'; + +select * from WIWJ_FILEPATH_TEMPSAVE where FILEPATHSIGNATURE = '/program/xydocbase1/bjtest/sfAgreement/20241107/AFWT10555147ZY_1001200010020/signatrue/AFWT10555147ZY_1001200010020_1_20241107164916.pdf'; + +-- 锁 +select * from WIWJ_SEE_SIGN_WAIT_INFO where house_id = ; +select * from WIWJ_LOCK_INFO where isDel = 1 AND is_control = 1 AND contract_code = ? order by createtime asc; + +-- 新续关系 +select * from WIWJ_SF_CONTRACT_XY_NEW_REL where contractid = '10770742'; + +-- 手机号历史 +select * from WIWJ_CONTRACT_PHONE_HIS; + +-- 附件 +select * from WIWJ_APPENDIX; +select * from WIWJ_APPENDIX_LACK_INFO; +select * from WIWJ_APPENDIX_LOG where CONTRACT_ID = 10448729 and CONTRACT_TYPE = 'SF' order by CREATETIME desc; + +-- 签章 +select * from WIWJ_SIGN_RULE where CODE in ('030037','9754'); + +-- 绑定 +select * from WIWJ_USER_REL_CONTRACT where CITY_CODE = 'hangzhou' and CONTRACTTYPE = 'SF'; +INSERT INTO WIWJ_USER_REL_CONTRACT(ID, USERID, CONTRACTID, ISDEL, CREATETIME, LASTMODIFIEDTIME, CONTRACTTYPE, CITY_CODE) + VALUES (USER_REL_CONTRACT_SEQ.NEXTVAL, (SELECT ID FROM CUSTOMER_USER WHERE MOBILE = '18835995130'), '10304863', '1', sysdate, sysdate, 'SF', 'hangzhou'); +``` + +### 系统 + +```sql +-- 人 角色 管辖 +select * from taw_system_user where userid = '527036'; +select * from TAW_SYSTEM_USERREFROLE where USERID = '328601'; + +select * from WIWJ_USER_REGION_REL where USER_ID = '527036' and IS_DEL = '1'; +select * from WIWJ_USER_REGION_REL urr +left join TAW_SYSTEM_USERREFROLE ur on urr.USER_ID = ur.USERID +where ROLEID = '565' and is_del = '1'; + +select REGION_NAME,DQ_REGION_CODE from wiwj_management_region where REGION_TYPE = '3'; + +-- 敏感词 +select * from WIWJ_USER_ACCESS_HISTORY where user_id ='8439098' and TARGET_TYPE = 'viewHouseDetail' and trunc(ACCESS_DATE_DAY) = '2026-04-25'; + + +-- 审批流 +select userid from VIEW_APVL_USERROLEFLOW +where DATA_CODE='XW10322406' +order by FLOWID desc; + +select v.* FROM APPROVAL_TOAPPR_VIEW_NEW v +LEFT JOIN ACT_APPROVAL_INS_INFO info ON v.TARGETID = info.TARGETID +WHERE info.TARGETCODE = 'AFWT10154186ZY'; + +select apvl.* from WIWJ_APVLFLOW apvl where apvl.APVLFLOW_DEF_ID = '200011001' and apvl.DATA_ID = '862908' ;--CREATE_TIME 2026-04-27 11:38:11 START_TIME 2026-04-27 11:38:11 END_TIME 2026-04-27 13:24:07 +select * from(select * from WIWJ_APVLNODE_RUNNING union all select * from WIWJ_APVLNODE_OVER) war +where war.apvlflow_id like '% %'; + +select * from( +sf.product_item as productItem, + )view1 + where + view1.flowdefid = '1000600010115' +and view1.CURRENT_NODE_NAME = '租赁总监审核' +and view1.productItem != 'PRODUCT_000004' + + +select * from ACT_DETAIL_APPRPROC_DEF where PROCVARIABLEVALUE like '1000600010007%' and DEFENABLE = 'ENABLE'; + +select * from ACT_DETAIL_APPRPROC_DEF where PROCVARIABLEVALUE like '10006000100070001%'; +select * from ACT_DETAIL_APPRPROC_DEF order by id desc;--8091 +select SEQ_DETAIL_APPRPROC_DEF.nextval from dual; + + +-- 中台视图 +VIEW_APP_MYGJ_% + + +-- cbs交互日志 +select CITY_CODE,count(0) from SYNC_BUILDINGHOUSE_LOG where INTERFACE_CODE = 'CX01' and trunc(UPDATE_TIME) > '2025-01-20' group by CITY_CODE; + +select *from WIWJ_SYNC_BUILDINGHOUSE_LOG where CHANNELNAME = 'HR01' and REQUEST like '%%' order by TRANSFERDATETIME desc; +``` + +### 委托协议 + +```sql +select * from wiwj_agreement_info where CONFERNO = 'SFXY08465955'; +select * from wiwj_agreement_info where CONTRACTTYPE = 'SF' and contractsid = '10660041' order by CREATETIME; + +select * from wiwj_agreement_detail_info where CONFERID = 'SFXY08465955'; + select ph.*,agr.* + from wiwj_agreement_info agr + left join wiwj_agreement_detail_info detail on agr.id = detail.CONFERID + left join WIWJ_AGREEMENT_PRINT_HISTORY ph on ph.VERSIONKEY = agr.CONFERNO + where detail.NAME = 'cycleLetDaysChange' --referenceRentChange + and detail.VALUE = 'Y' + and agr.ISPRINT = '1' + ; +``` + +### 房源 + +```sql +-- 房源 +select BUILDINGHOUSEID from wk_jc_house_info where id = 1000263706; +select * from WK_JC_BUILDING_HOUSE where id = 6307038298; +WK_JC_PROJECT + +select * from WIWJ_HOUSEINFO_LOG where id in (3744206,3744210,3745103,3746402); +delete from WIWJ_HOUSEINFO_LOG where id in (3744206,3744210,3745103,3746402); + +-- 房间 +select * from WIWJ_SF_ROOM_PRICE where sfcontractid = '10033448'; + +select * from WIWJ_SF_ROOM_PERIOD_PRICE where MODIFY_CAUSE is null and ROOM_PRICE like '%.%' order by GMT_CREATE desc; +select * from WIWJ_SF_ROOM_PERIOD_PRICE where MODIFY_CAUSE = 'init' and ROOM_PRICE like '%.%' order by GMT_CREATE desc;--22年1月 +select * from WIWJ_SF_ROOM_PERIOD_PRICE where MODIFY_CAUSE = 'agr_change_add' and ROOM_PRICE like '%.%' order by GMT_CREATE desc;--有 +select * from WIWJ_SF_ROOM_PERIOD_PRICE where MODIFY_CAUSE = 'add' and ROOM_PRICE like '%.%' order by GMT_CREATE desc; +select * from WIWJ_SF_ROOM_PERIOD_PRICE where MODIFY_CAUSE = 'del' and ROOM_PRICE like '%.%' order by GMT_CREATE desc; + + +-- 评估单 +select * from wk_sf_contract sf +--LEFT JOIN WIWJ_ESTIMATE_PRODUCT_REL epr ON epr.id = sf.product_code +where sf.CountPeople is null and sf.checkstate = '1011702' order by sf.createtime desc; + +WIWJ_ESTIMATE_PRODUCT_REL +WIWJ_ESTIMATE +-- 超时但没过期 +SELECT * FROM WIWJ_EVALUATE WHERE EVALUATE_CODE = 'PGD01978458'; +UPDATE WIWJ_EVALUATE SET GMT_CREATE = TIMESTAMP '2026-06-29 10:02:35' WHERE EVALUATE_CODE = 'PGD01978458'; + +-- 推荐表 +select * from wiwj_owner_recommend where cbs_house_id = '503903621'; +``` + +### 承租 + +```sql +-- 待租 +select * from WIWJ_HOUSEVR_INFO order by PHOTO_TIME desc;--where houseid = '1000050664' +select * from WIWJ_VR_REMIND_INFO; +``` + +### app + +```sql +-- 用户 认证 +select * from CUSTOMER_USER where MOBILE = '19268402308'; +select * from WIWJ_USER_AUTHINFO where id in(2242676); + +-- 消息 +select * from WK_PUSHMESSAGE where userid = '6134510' and trunc(CREATETIME) = trunc(sysdate); +``` + +### 解约 + +```sql +select * from WIWJ_SFJY_APPLICATION where APPLICATION_CODE = 'WTTZSQ0000024048'; +select TERMINATIONDATE from WK_SF_JY_TERMINATION where TERMINATIONCODE = 'WTJY100168566'; +``` + +### 其他 + +``` +WIWJ_PROPERTY_REPRINT_APPLY 上海-交割单再次打印申请 +wiwj_contract_print_history 合同打印履历 +WIWJ_FILEPATH_TEMPSAVE 文件路径保存 +``` + +{/* truncate */} + +## 统计表 + + + +| 物理名 | 别名 | 中文名 | 说明 | +| :----------------------------- | :-------------------------- | :------------------------------------- | :----------------------------- | +| 小区与管辖 | | | | +| WK_JC_PROJECT_INFO | ProjectInfo | 小区表 | | +| WK_JC_BUILDING_HOUSE | BuildingHouse | 小区信息详情表 | | +| WK_JC_BUILDING_INFO | BuildingInfo | 楼盘库bid对应表 | | +| WIWJ_REGION_PROJECT_REL | RegionProjectRel | 小区和管辖区域关系表 | | +| WIWJ_PROJECT_REGION_SHARE_REL | ProjectRegionShareRel | 共享小区与管辖区域关系表 | | +| WIWJ_MANAGEMENT_REGION | TawSystemManagementRegion | 店组管辖区域(小区对应的责任信息表) | | +| | | | | +| 房源 | | | | +| WK_JC_HOUSE_INFO | HouseInfo | 房源表 | | +| WK_JC_BUSINESS_CIRCLE | | 小区商圈表 | | +| WK_JC_OWNER_LINK_HOUSE | OwnerLinkHouse | 业主房屋关联表 | | +| WK_JC_OWNER_INFO | OwnerInfo | 业主表 | | +| WIWJ_PRICE_INFO_UPDATE | priceInfoUpdate | 价格调整表 | | +| WIWJ_OWNER_PHONE_INFO | OwnerPhoneInfo | 业主电话表 | | +| WK_JC_OWNER_HOUSE_HISTORY | OwnerLinkHouseHistory | 业主履历表 | | +| WK_JC_OWNER_HOUSE_HISTORY | OwnerLinkHouseHistory | 房源业主履历中间表 | | +| WK_JC_HOUSE_INFO_HISTORY | HouseInfoHistory | 房源履历表 | | +| WIWJ_CONTACT_RESULT | WiwjContactResult | 沟通记录表 | | +| WIWJ_ORDER_REASON | OrderReason | 操作记录 (房源日志) | (1.房源操作记录) | +| WIWJ_HOUSEINFO_LOG | | 新版房源日志 | | +| | | | | +| 评估单 | | | | +| WIWJ_ESTIMATE | | 评估单产品表 | 新版评估单弃用 | +| WIWJ_ESTIMATE_ALLOCATION_DATA | EstimateAllocationData | 局装,原装基础数据表 | 新版评估单新表 | +| WIWJ_ESTIMATE_ALLOCATION_REL | EstimateAllocationRel | 局装,原装的真实数据 | 新版评估单新表 | +| WIWJ_ESTIMATE_ROOMS | EstimateRooms | 产品房间 | 新版评估单新表 | +| WIWJ_DECORATION_BASE_DATA | DecorationBaseData | 标装(整装)预估装配基础数据 | 新版评估单新表 | +| WIWJ_ESTIMATE_DECORATION_REL | EstimateDecorationRel | 标装(整装)其他装修项目 | 新版评估单新表 | +| WIWJ_ESTIMATE_DECORATION_DATA | EstimateDecorationData | 标装(整装)基础数据 | 新版评估单新表 | +| | | | | +| 评估单产品 | | | | +| WIWJ_ESTIMATE_PRODUCT_REL | EstimateProductRel | 评估单产品详情表 | 新版评估单成为产品单主表 | +| WIWJ_ESTIMATE_DECORATION | EstimateDecoration | 评估单产品装配表 | | +| WIWJ_ESTIMATE_ROOM_PRICE | EstimateRoomPrice | 评估单产品房间价格表 | | +| WIWJ_ESTIMATE_PRODUCT_REL_BAK | | 产品预估详情bak表 | | +| WIWJ_ESTIMATE_DECORATION_BAK | EstimateProductRelBak | 产品装配bak表 | 新版评估单也在用 | +| WIWJ_ESTIMATE_AUDIT_LOG | estimateAuditLog | 产品审核log表 | | +| WIWJ_PRODUCT_ITEM | ProductItem | 产品模板表 | 分组整租模板 | +| | | | | +| 合同 | | | | +| WK_SF_CONTRACT | ContractMainInfo | 收房合同表 | pre是实际结束日 | +| WIWJ_OWNER_GRADING | OwnerGrading | 合同业主 | 只存代理委托和共有人 | +| WK_SF_CONTRACT_OWNER | SFContractOwner | 共有人表 | | +| WK_SF_HOUSE_CERTIFICATE | SFHouseCertificate | 其他房产证表 | | +| WK_SF_CYCLE | CycleInfo | 合同免租周期表(周期) | | +| WK_SF_CYCLE_PRICE | CyclePriceInfo | 合同租金表(价格周期) | | +| WIWJ_HOUSEINFOLINKROOMS_INFO | HouseInfoLinkRooms | 房屋关联房间表 | 相辅相成 | +| WIWJ_SF_ROOM_PRICE | SFContracRoomPrice | 房间表 | | +| WIWJ_SF_ROOM_PRICE_CHANGE_LOG | SfRoomPriceChangeLog | 合同房间履历表 | | +| WTBLACKLIST | WTBlackList | 委托黑名单表 | | +| WIWJ_BLACK_HISTORY | | 黑名单历史表 | | +| WIWJ_CONTRACT_TRACKING | ContractTracking | 合同记录追踪表(合同履历表) | | +| WIWJ_DEDUCTION_ORDER | DeductionOrder | 扣款单表(维修基金) | | +| WK_PAYMENT_DEDUCT_INFO | paymentDeductInfo | 付款计划和扣款单中间表 | | +| WK_PAYMENT_ORDER | PaymentOrder | 付款计划表 | | +| WIWJ_SIGNPIC_RE_SF_CONTRACT | | 签字图片表 | | +| WIWJ_PROPERTY_FILING_APPLY | PropertyFilingApply | 产权备案申请表 | | +| WIWJ_ATTACHMENT_FILE | AttachmentFile | 附件文件表 | | +| WIWJ_ATTACHMENT_SETTING | | 附件模板表 | 有数量 | +| WIWJ_FILEPATH_TEMPSAVE | FilePathTempSave | 合同生成表 | | +| WIWJ_LET_RESUME | LetResumeInfo | 招租失败履历表 | | +| WIWJ_SIGN | | 签约表 | 出房签约表 | +| WIWJ_SF_SUPPLE_AGREEMENT | SfSuppleAgreement | 补充协议(3个字段 id 合同id 内容) | | +| WIWJ_SF_CONTRACT_BASE_PRICE | ContractBasePrice | 什么基准价 | | +| TAW_COMMON_LOGOPERATOR | tawCommonLogOperator | 合同日志表 | | +| WIWJ_PRINT_HISTORY_SUMMARY | PrintHistorySummary | 合同打印次数表 | | +| WK_JC_TEMPLATE_INFO | TemplateInfo | 装修类型模板表 | | +| | | | | +| 附件 | | | | +| WIWJ_APPENDIX | Appendix | 附件表 | 附件模板 | +| WIWJ_APPENDIX_LACK_INFO | AppendixLackInfo | 附件缺件表 | | +| WIWJ_APPENDIX_LOG | AppendixLog | 附件日志表 | | +| WIWJ_IDENTIFY_ACCOUNT_HIS | IdentifyAccountHistory | 银行卡什么表.. | | +| WIWJ_ATTACHMENT_ADDRESSEE | ContractAttachmentAddressee | 附件收件表 | | +| WIWJ_XY_INN_HOUSE | HouseInfoFilter | 过滤房源 | INN,限量,顺义大区,甲醛房 | +| WIWJ_SIGN | Sign | 签约表 | | +| WK_SF_CONTRACT_CHECK_LINK | ContractCheckLink | 合同检查关联表 | | +| WIWJ_ANNUAL_REVENUE_CYCLE | AnnualRevenueCycle | 分益租周期表 | | +| WK_SF_PRICE_FIXING | PriceFixing | 房源定价表 | | +| WIWJ_USER_ACTION_LOG | UserActionLog | app用户访问日志 | | +| WIWJ_USER_REL_CONTRACT | UserRelContract | 合同绑定app用户关联表 | | +| WIWJ_INN_CYCLE | InnCycle | Inn周期 | 可能是承租 | +| WIWJ_SK_PLAN | SkPlan | 收款单 | (不是park PK)向业主收钱 | +| WIWJ_EXPIRATION_REMINDER | ExpirationReminder | 到期提醒表 | | +| WIWJ_SF_ROOM_PERIOD_PRICE | SfRoomPeriodPrice | 合同房间价格履历 | 房间价格周期 | +| | | | | +| 协议 | | | | +| wiwj_agreement_info | AgreementInfo | 协议详情表 | 协议主表(当时为什么写的详情) | +| wiwj_agreement_detail_info | AgreementDetailInfo | 协议表(一条数据拆分成几十条信息) | 协议详情表(当时为什么写的主表) | +| WIWJ_AGREEMENT_TRACKING | AgreementTracking | 协议日志 | | +| taw_system_dicttype | TawSystemDictType | 收房协议模板列表(字典表.....) | 字典表..... | +| WIWJ_CONTRACT_AGREEMENT_FILE | ContractAgreementFile | 协议附件表 | | +| WIWJ_AGREEMENT_LACK_INFO | AppendixAgreementLackInfo | 附件协议关联表(附件缺件表) | | +| WIWJ_AGREEMENT_PRINT_HISTORY | PrintAgreementHistory | 协议打印历史 | 算次数用 | +| WIWJ_PRINT_HISTORY_SUMMARY | PrintHistorySummary | 打印历史(本页写第二次) | 跟合同用的打印是一个 | +| WK_SF_CYCLE_PRICE_BACKUPS | CyclePriceBackupsInfo | 价格周期备份表 | | +| WK_SF_XYYX_PRICE_BACKUPS | SigningAmountBackupsInfo | 基准租金价格变更留存表 | | +| | | | | +| 交割单 | | | | +| WIWJ_PROPERTY_SETTLEMENT_INFO | PropertySettlement | 交割单表 | 三种交割单 新,续签,退租 | +| WIWJ_SF_PROPERTY_ITEM | SFPropertyItem | 交割单详情列表 | 数据所在 | +| WIWJ_PROJECT_SKACCOUNT_INFO | ProjectSkaccountInfo | 整个小区的物业信息 | | +| WIWJ_PROPERTY_PIC | PropertyPic | 交割单图片表 | | +| WIWJ_PROPERTY_BASEDATA | PropertyBaseData | 交割单物品基础数据模板 | 物品模板 | +| WIWJ_PROPERTY_ITEM_STANDARD | PropertyItemStandard | 交割单基础物品规格数据模板 | 物品规格模板 | +| WIWJ_SF_RENTAUDIT_CASE | SfRentauditCase | 交割单错误原因表 | | +| wiwj_SF_CHARGE_TYPE | SFPropertyChargeType | 收款单位二级联动数据 | 一二级信息 | +| WIWJ_SF_PROPERTY_ITEM_LOG | SFPropertyItemLog | 交割单日志表(物品修改记录表) | | +| WIWJ_SF_PROPERTY_ITEM_HISTORY | SFPropertyItemHistory | 交割单历史数据 | | +| WIWJ_PROPERTY_PIC_HISTORY | PropertyPicHistory | 交割单历史图片 | | +| WIWJ_ACCOUNT_NUMBER_INFO | AccountNumberInfo | 户号信息表 | | +| WK_SF_COST_ONE | CostOne | 费用一 表 | | +| wiwj_contract_print_history | PrintHistory | 物业/合同打印次数表 | 50交割 51承租 空 合同 | +| WIWJ_SIGNPIC_RE_PROPERTY | SignpicReProperty | 承租交割单录入及租客APP确认 | | +| WIWJ_PROPERTY_SETTLEMENT_HIS | PropertySettlementHistory | 新版交割单履历 | (上海市打印历史) | +| WIWJ_PRINT_HISTORY_SUMMARY | PrintHistorySummary | 打印历史(本页写第三次) | 跟合同用的打印是一个 | +| WIWJ_PROPERTY_ITEM_APPLY | PropertyItemApply | 户号变更申请表 | | +| WIWJ_PROPERTY_CHECK_LOG | propertyCheckLog | 交割单审核记录 | | +| WIWJ_SF_RENTAUDIT_ITEM | SfRentauditItem | 收房租务审核字典表 | | +| WIWJ_PROPERTY_ITEM_APPLY_LOG | PropertyItemApplyLog | 户号变更履历 | | +| WIWJ_PROPERTY_MANAGE_ITEM | PropertyManageItem | 在管期间操作表(交割单物品审核表) | | +| WIWJ_PROPERTY_MANAGE_PIC | PropertyManagePic | 在管期间操作图片表 | | +| WIWJ_PROPERTY_REPRINT_APPLY | | 上海-交割单再次打印申请 | | +| | | | | +| 退租申请 | | | | +| WIWJ_SFJY_APPLICATION | SfjyApplication | 收房退租申请表 | | +| WIWJ_ANNUAL_REVENUE_CYCLE | AnnualRevenueCycle | 年度收益周期表(分益租周期表) | | +| WIWJ_CFJY_APPLICATION | CfjyApplication | 出房退租申请 | | +| WIWJ_SF_JYAPPLY_PRINT_HISTORY | SfjyApplyPrintHistory | 解约打印历史表 | | +| | | | | +| 解约协议 | | | | +| WK_SF_JY_TERMINATION | SFJYTermination | 解约表 | 收房解约表 | +| WIWJ_PRINT_HISTORY_SUMMARY | PrintHistorySummary | 打印历史(本页写第四次) | 跟合同用的打印是一个 | +| WIWJ_SF_TERMINATION_APPLY_REL | TerminationApplyRelSF | 解约协议和退租申请关系表 | | +| WK_SF_JY_CLEANING_LIST | SFJYCleaningList | 收房解约结算单 | | +| WK_SF_JY_CLEANING_DETAIL | SFJYCleaningDetail | 收房解约结算单明细 | | +| WIWJ_ADVANCE_DEDUCTION | AdvanceDeduction | 生活费用可扣金额(承租预扣款信息表) | | +| WIWJ_SF_JY_PROPERTY_ITEM | SFJyPropertyItem | 解约交割单详情 | | +| WIWJ_REFUND_ORDER | RefundOrder | 退款订单列表 | | +| WK_SF_JY_COST_INFORMATION_ONE | SFJYCostInformationOne | 收房解约费用信息 | | +| WIWJ_SF_JY_PROPERTY_ITEM_HIS | SFJYPropertyItemHistory | 解约交割履历 | | +| | | | | +| 系统相关 | | | | +| taw_system_priv_menuitem | | 菜单表 | | +| taw_system_priv_operation | | 菜单中间表 | | +| TAW_SYSTEM_USER | | 用户表 | 下边常量 | +| wiwj_ehr_user_info | | ehr表用户表 | | +| TAW_SYSTEM_DICTTYPE | | 字典表 | | +| WIWJ_STATUS_INFO | StatusInfo | 状态表 | | +| TAW_SYSTEM_AREA | | 行政区划 | | +| TAW_SYSTEM_ROLE | TawSystemRole | 角色表 | | +| TAW_SYSTEM_USERREFROLE | TawSystemUserRefRole | 用户和角色关系表 | | +| WIWJ_USER_REGION_REL | UserRegionRel | 用户和管辖范围关系表 | | +| | | | | +| 到期管理 | | | | +| WIWJ_EXPIRATION_REMINDER | | 到期提醒表 | | +| WIWJ_CONTACT_RESULT_DETAIL_SF | ContactResultDetailSf | 合同到期沟通记录 收房 | | +| | | | | +| 交互日志 | | | | +| WIWJ_SYNC_BUILDINGHOUSE_LOG | | cbs | | +| WIWJ_SYNC_HOUSE_LOG | | crm | | +| | | | | +| APP用户相关 | | | | +| CUSTOMER_USER | CustomerUser | app用户表 | 建行创建用户(app用户) | +| WIWJ_USER_AUTHINFO | UserAuthInfo | 实名认证表 | | +| WIWJ_SHORTMESSAGE | | 短信表 | | +| WK_PUSHMESSAGE_HZ | | app消息 通知 | | +| WK_PUSHMESSAGE | | app消息 通知 | | +| ALLUSERS | | 历史用户 | | +| WIWJ_SIGNPIC_RE_SF_CONTRACT | SignpicReSfContract | 业主签字图片所在 | | +| | | | | +| 审批流 | | | | +| WIWJ_APVLFLOW | ApvlFlow | 审批流表 | | +| WIWJ_APVLFLOW_DEF | | 审批流基础表 | | +| ACT_APPROVAL_INS_INFO | ActApprovalInsInfo | 非收房审批流信息表 | | +| ACT_APPROVAL_PROCDEF | | 非收房审批流基础表 | | +| ACT_DETAIL_APPRPROC_DEF | | 非收房子审批流基础表 | | +| act_ru_variable | | 流程变量表 | | +| act_ru_task | | 流程进度表 | | +| act_hi_taskinst | | 流程历史 | | +| | | | | +| crm推荐 | | | | +| WIWJ_OWNER_RECOMMEND | | 业主推荐表 | | +| | | | | +| 承租 | | | | +| WIWJ_HOUSE_VACANT_INFO | | 待租表 | | +| WIWJ_HOUSING_DISCOUNT_APPLY | | 杭州-待租优惠信息表 | | +| | | | | +| 调配 | | | | +| WIWJ_CHANGE_CONTRACT_BATCH | ChangeContractBatch | 合同调配 | | +| | | | | +| APP中台 | | | | +| WIWJ_CITY_CONFIG | | 中台接口地址 | | +| WIWJ_WT_INFO | | 北京相寓app业主手动委托 | | +| | | | | +| park楼栋关联信息 | | | | +| WK_JC_business_circle | | 村镇 | | +| WK_JC_APARTMENT_INFO | | 公寓 | | +| WK_JC_PROJECT_INFO | | 楼栋 | | +| WK_JC_house_INFO | | | | +| | | | | +| 私盘公盘 | | | | +| WIWJ_DEPOSIT_MESSAGE | Deposit | 委托表(私盘) | | +| WIWJ_BLACK_APPLY | BlackApply | 委托黑名单限制申请表 | 新版评估单新表 | +| WIWJ_DEPOSIT_LINK_HOUSEKEEPER | DepositLinkHousekeeper | 委托管家表 | | +| WIWJ_EVALUATE | Evaluate | 评估单 | | +| WIWJ_EVALUATE_DETAIL | EvaluateDetail | 评估单详细表 | | +| WIWJ_EVALUATE_CONFIGURATION | EvaluateConfiguration | 评估单详细装配评估表 | | +| WIWJ_EVALUATE_IMAGE | EvaluateImage | 评估单图片表 | | +| WIWJ_EVALUATE_ROOM | EvaluateRoom | 评估单面积表 | | +| | | | | +| 杂 | | | | +| WK_PAYMENT_FROM_SKPLAN | PaymentFromSkplan | 收款单和付款计划关联表 | | +| WIWJ_SF_DEDUCTIONS_PERFORMANCE | | 扣业绩 | | +| WIWJ_SK_PLAN_OPERATE_HIS | SkPlanOperateHis | 收款计划履历 | | +| WIWJ_FILEPATH_TEMPSAVE | FilePathTempSave | 文件路径保存 | | +| WIWJ_JJR_WHITELIST | | 经纪人白名单 | | +| WIWJ_EVALUATE_ITEM | | 房源整体列表 | | +| WIWJ_EVALUATE_SELECT | | 房源整体详细列表(多选框)(分组加权标准) | | +| WIWJ_CONFIGURATION_SELECT | | 装配评估表 | | +| WIWJ_EVALUATE_DISPATCH | EvaluateDispatch | 评估推荐单列表 | 过时 | +| WIWJ_PRODUCT_CONFIGURE_REGION | ProductConfigureRegion | 不可录入评估单的大区表 | | +| WIWJ_MKTPRICE_BASEPRICE | | 小区基准价表 | Basepricemid | +| WIWJ_MKTPRICE_PROJ_MONINDEX | | | 分组和整租都用 | +| WIWJ_MKTPRICE_PROJ_HOUSE_TYPE | | | 整租用 | +| WIWJ_MKTPRICE_HOUSE_AREA | | 最大最小面积 | 整租用 | +| WIWJ_JC_BANK_BRANCH_INFO | | 银行表 | | +| WIWJ_WORK_CALENDAR | | 节假日历 | | +| WIWJ_OWNER_FOLLOWUP_RECORD | | 业主追踪表 | 应该不用了(用了 换签) | +| WIWJ_CLEANING_ORDER | WiwjCleaningOrder | 空气治理房源 | | +| WIWJ_AIRCONTROL_TRACK | AircontrolTrack | 无需空气治理房 | | +| WIWJ_DECORATION | Decoration | 装修单 | | +| V_LIST_ORDER_DEPOSIT_WITH_SUB | OrderDepositWithSub | 私盘列表 | 视图 | +| USERS2_TEMP | User2Temp | 导表 | | +| WIWJ_SEE_SIGN_RESULT | SeeSignResult | 实勘表(删图片用) | where houseId = '26725833' | +| WIWJ_USER_ACCESS_HISTORY | UserAccessHistory | 敏感信息 | | +| WIWJ_WT_INFO | | 全国北京库业主app推荐信息 | | +| WIWJ_SF_BLACK_APPLY | SFBlackApply | 上海黑名单申请 | | +| WIWJ_SF_PRODUCT_ITEM | | 郑州成都不知道啥表 | | +| WIWJ_MKTPRICE_BASEPRICE_IMPORT | | 成都直营评估单新增修改表 | | +| WIWJ_MKTPRICE_PZPRICE | | | | +| WIWJ_HIDE_CALL_INFO | | | 隐号拨打回调记录 | +| CHANGESYSAGENTID | | 杭州合同更改所属人 | 存储过程 | diff --git a/blog/2026-01-01-xy/3-本地开发.md b/blog/2026-01-01-xy/3-本地开发.md new file mode 100644 index 0000000..676c14b --- /dev/null +++ b/blog/2026-01-01-xy/3-本地开发.md @@ -0,0 +1,228 @@ +--- +title: 本地开发 +tags: + - develop +--- + +{/* truncate */} + + + +## 查询数据sql + +### 审批人 + +```sql +-- 新版 +select userid from VIEW_APVL_USERROLEFLOW +where DATA_CODE='WTJY01286494' +order by FLOWID desc; + +-- 旧版 +select v.* FROM APPROVAL_TOAPPR_VIEW_NEW v +LEFT JOIN ACT_APPROVAL_INS_INFO info ON v.TARGETID = info.TARGETID +WHERE info.TARGETCODE = 'AFWT10154186ZY'; +``` + +### 菜单权限 + +```sql + +select distinct decode(sub.subrolename,null,ref.rolename,sub.subrolename) as ROLENAME,oper.* from taw_system_priv_operation oper +left join taw_system_priv_menuitem mi on mi.code = oper.code +left join taw_system_priv_assign assi on assi.privid=mi.menuid +left join taw_system_sub_role sub on sub.id =assi.objectid +left join taw_system_userrefrole ref on to_char(ref.roleid) = assi.objectid +where oper.url='confirm_let_fail'; + +-- 菜单名字 +select * from taw_system_priv_operation where code = '36' ; + +-- 角色名跟菜单名不对应时使用 +-- 填入实际角色,查询配置菜单时的角色名 +select rolepriv.name from taw_system_sub_role sub +left join taw_system_priv_assign assi on sub.id =assi.objectid + left join taw_system_priv_menu rolepriv on rolepriv.PRIVID = assi.PRIVID +where sub.SUBROLENAME = '管家'; + +-- 旧版 +select sub.subrolename,oper.* from taw_system_priv_operation oper +left join taw_system_priv_menuitem mi on mi.code = oper.code +left join taw_system_priv_assign assi on assi.privid=mi.menuid +left join taw_system_sub_role sub on sub.id =assi.objectid +where oper.url='contract_sf_del'; +``` + +### + +## 修改数据sql + +### 委托合同 + +```sql +-- 修改业主信息 +select ownername,ownerphoneno,certificatestype,certificatescode from wk_sf_contract where contractcode = 'AFWT100024229ZY'; +update wk_sf_contract set ownername = 'lhth',ownerphoneno = '18835995130',certificatestype = '1013302',certificatescode = '124124124' where contractcode = 'AFWT100024229ZY'; + +-- 修改付款方式月付/季付 +select PAYMENTTYPE from wk_sf_contract where contractcode = 'AFWT100025143ZY'; +update wk_sf_contract set PAYMENTTYPE = '10100070002' where contractcode = 'AFWT100025143ZY'; + +-- 生产修改财务审核状态为待审核 +update wk_sf_contract set checkstate = '1011703' where contractcode = 'AFWT10168121ZY'; + +-- 生产清空非代理人签约时的 代理人信息 +select AGENTPEOPLE, agentcertificatetype, AGENTCERTIFICATENO from wk_sf_contract where contractcode = 'XW10518115'; +update wk_sf_contract set AGENTPEOPLE = null, agentcertificatetype = null, AGENTCERTIFICATENO = null where contractcode = 'XW10518115'; + +-- 修改打印版本 +SELECT CONTRACTPRINTVERSION,PREFERRED_VERSION FROM wk_sf_contract WHERE contractcode = 'AFWT100025143ZY'; +update wk_sf_contract set CONTRACTPRINTVERSION = 'yxV1.0',PREFERRED_VERSION='1' WHERE contractcode = 'AFWT100025143ZY'; + +-- 电子改纸质 +-- 太原为1000100820001 纸质 +select signing_route from wk_sf_contract where contractcode = 'YW10035806'; +update wk_sf_contract set signing_route = '1000100790001' where contractcode = 'YW10035806'; + +-- 改成营业执照 +update wk_sf_contract set certificatestype = '101330001' where contractcode = 'YW10035806'; +``` + +### 添加app关联合同 + +```sql +-- 按手机号插入 +INSERT INTO WIWJ_USER_REL_CONTRACT(ID, USERID, CONTRACTID, ISDEL, + CREATETIME, LASTMODIFIEDTIME, CONTRACTTYPE, CITY_CODE) +VALUES (USER_REL_CONTRACT_SEQ.NEXTVAL, (SELECT ID FROM CUSTOMER_USER WHERE +MOBILE = '18835995130'), '10146082', '1', sysdate, sysdate, 'SF', 'sh'); + +-- 按用户id插入 198的id是:23545 +insert into WIWJ_USER_REL_CONTRACT +(ID,USERID,CONTRACTID,ISDEL,CREATETIME,LASTMODIFIEDTIME,CONTRACTTYPE,CITY_CODE) +values (USER_REL_CONTRACT_SEQ.nextval,1301,10140101,1,sysdate,sysdate,'SF','sh'); + +-- 查所有城市的字符 +select CITY_CODE,count(0) from WIWJ_USER_REL_CONTRACT group by CITY_CODE order by count(0) desc; +-- 查绑定的合同 +select * from WIWJ_USER_REL_CONTRACT where CITY_CODE = 'sh' and CONTRACTTYPE = 'SF' and userid = '1301' order by CREATETIME desc; +``` + +### 承租合同 + +```sql +-- 签约类型 +update wk_cf_contract set SERVICETYPE = 1 -- 1佣金 2服务费 +where LESSEECONTRACTCODE = '合同号' ; + +-- 修改电话,证件号 +select TENANTPHONE,tenantCredentialType,TENANTCREDENTAILNO,TENANTNAME from WK_CF_CONTRACT where lesseecontractcode = 'AFCZ111549960ZY'; + +update WK_CF_CONTRACT set TENANTPHONE = '15903239785',tenantCredentialType= '101330001', TENANTCREDENTAILNO = '33553', + TENANTNAME='牛牛牛' where lesseecontractcode = 'AFCZ111549960ZY'; + +-- 修改实际结束日 +select * from wk_cf_contract where lesseecontractcode = 'AFCZ100040827ZY' ; +update wk_cf_contract set REAL_END_DATE = '2027-10-27' where lesseecontractcode = 'AFCZ100040827ZY' ; +``` + +### 附件 + +```sql +-- 查询附件版本的合同 +select contractcode from wk_sf_contract where ATTACHMENT_VERSION = 'v2.0' and CHECKSTATE != '1011702' and isdel = 1 and rownum < 10; + +-- 查询共有人的附件信息 +select housepeoplegjid,contractcode,checkstate,signatory,sf.id from wk_sf_contract sf + left join WIWJ_APPENDIX_LACK_INFO LACK on sf.id = lack.contractid + where attachment_version='v3.0' and isprint='1' and contractstate <> '1000100070003' and checkstate='1011702' and signing_Route = '1000100790001' and CertificatesType ='1013301' and signatory = '1000300170010' + and lack.id is not null; +``` + +### 协议 + +```sql +-- 查询自动带出的协议合同 +select c.* from wiwj_agreement_info a + left join wk_sf_contract c on a.CONTRACTSID = c.id + where a.XYFROMKEY = 0 + and c.checkstate != '1011702' and c.CONTRACTSTATE not in ('1000100070003','1000100070006') + order by c.createtime desc; + +select c.* from wiwj_agreement_info a + left join wk_Cf_contract c on a.CONTRACTSID = c.id + where a.XYFROMKEY = 0 and a.CONTRACTTYPE = 'CF' + and c.checkstate != '1000200090002' and c.CONTRACTSTATE not in ('1000200010003','1000200010009','1000200010004') + order by c.createtime desc; + +-- 删除资产管理协议的其中一部分 , 所以要查在途的 +select * +from wiwj_agreement_info agr +where exists( + select 1 from wiwj_agreement_detail_info detail + where detail.name = 'paymentTypeChange' + and detail.value = 'Y' + and agr.id = detail.CONFERID +) +and agr.CONTRACTTYPE = 'SF' +and agr.PRINTCHECKSTATUS in ('1000200660001','1000200660003','1000200660004') +; +``` + +### 付款计划 + +```sql +-- 修改付款计划为已完成(含优选) +select * from WK_PAYMENT_ORDER where contractid = '100025143' and CONTRACTTYPE = 'SF' +and CFCONTRACTIDOFSXZ = '100040825' +order by PAYMENTSOURCE,STARTDATE; +select * from WK_PAYMENT_DEDUCT_INFO where PAYMENT_ID = '126507283' ; +select * from WIWJ_DEDUCTION_ORDER where contract_id = '10696539' and CONTRACT_TYPE = 'SF'; + + +update WK_PAYMENT_ORDER set PAYMENTSTATE = '1000100110006' where contractid = '100025143' and CONTRACTTYPE = 'SF' and CFCONTRACTIDOFSXZ = '100040828'; +update WK_PAYMENT_ORDER set PAYMENTSTATE = '1000100110006' where ORDERCODE in( +'FK0100296377', +'FK0100296381', +'FK0100296382', +'FK0100296383', +'FK0100296374' +); +``` + +### 收款计划 + +```sql +-- 修改收款单已完成 +select * from WIWJ_SK_PLAN where RELATION_ID = 11267751; +update WIWJ_SK_PLAN set status = '1000200430010' ,audit_status = '1000900090001' where RELATION_ID = 11267751; +``` + +## 其他 + +### --承租解约交割单起始数为空,加上数据 + +```sql +select * from WK_CF_JY_CLEANING_DETAIL where id = 37179868; +update WK_CF_JY_CLEANING_DETAIL set startnum= 1 where id = 37179868; +select * from WK_CF_JY_CLEANING_DETAIL jyd + left join WK_CF_JY_CLEANING_LIST jy on jy.id= jyd.CLEANINGLISTID + left join WK_CF_JY_TERMINATION jyxy on jyxy.id =jy.TERMINATIONID where jyxy.CONTRACTID=(select id from WK_CF_CONTRACT where LESSEECONTRACTCODE = 'AFCZ11262260ZY'); +``` + +## 接口 + +``` +app签字 V4AppSfContractAction.completeContractSignature +app附件上传 V4AppSfContractAction.commitAttachMentInfo +``` + +## 定时 + +指定执行地址 http://10.1.67.76:19999/ + +``` +优选生成付款计划 CreateSfPaymentOrderSchedule.work doCreateSfPaymentOrderScheduleTask +优选生成招租保证金 CreateRentEarnestMoneySchedule.work doCreateRentEarnestMoneyScheduleTask +``` + diff --git a/blog/authors.yml b/blog/authors.yml index 0fd3987..a61765a 100644 --- a/blog/authors.yml +++ b/blog/authors.yml @@ -1,25 +1,11 @@ -yangshun: - name: Yangshun Tay - title: Ex-Meta Staff Engineer, Co-founder GreatFrontEnd - url: https://linkedin.com/in/yangshun - image_url: https://github.com/yangshun.png +ling: + name: ling + title: title + url: ./touxiang.jpg + image_url: ./touxiang.jpg page: true socials: - x: yangshunz - linkedin: yangshun + # x: yangshunz + # linkedin: yangshun github: yangshun - newsletter: https://www.greatfrontend.com - -slorber: - name: Sébastien Lorber - title: Docusaurus maintainer - url: https://sebastienlorber.com - image_url: https://github.com/slorber.png - page: - # customize the url of the author page at /blog/authors/ - permalink: '/all-sebastien-lorber-articles' - socials: - x: sebastienlorber - linkedin: sebastienlorber - github: slorber - newsletter: https://thisweekinreact.com + # newsletter: https://www.greatfrontend.com diff --git a/blog/tags.yml b/blog/tags.yml index bfaa778..b068005 100644 --- a/blog/tags.yml +++ b/blog/tags.yml @@ -1,19 +1,19 @@ -facebook: - label: Facebook - permalink: /facebook - description: Facebook tag description - hello: label: Hello permalink: /hello - description: Hello tag description + description: 初始页 -docusaurus: - label: Docusaurus - permalink: /docusaurus - description: Docusaurus tag description +account: + label: account + permalink: /account + description: 账号 -hola: - label: Hola - permalink: /hola - description: Hola tag description +config: + label: config + permalink: /config + description: 配置 + +develop: + label: develop + permalink: /develop + description: 开发 \ No newline at end of file diff --git a/docs/2026开发笔记/26-1开发笔记.md b/docs/2026开发笔记/26-1开发笔记.md new file mode 100644 index 0000000..55258d9 --- /dev/null +++ b/docs/2026开发笔记/26-1开发笔记.md @@ -0,0 +1,435 @@ +--- +sidebar_position: 1 +title: 26-1开发笔记 +--- +# 笔记1月 + + +#### 115663 【1月初上线】【相寓优选规则调整】相寓优选2.0规则调整 + +#### 115684 【需求】【相寓优选】杭州相寓优选产品委托无纸化签约过程页面相关修改 + +#### 115682 【需求】 【相寓优选】杭州相寓优选产品, 委托合同详情相关修改 + + + +// *******115663 UPDATE BY LHTH 2026-1-5 START ******* +// *******115663 UPDATE BY LHTH 2026-1-5 END ******* + +{'<'}%-- *******115663 UPDATE BY LHTH 2026-1-5 START *******--%> +{'<'}%-- *******115663 UPDATE BY LHTH 2026-1-5 END *******--%> + + + + + + +3、委托合同详情页增加 服务费(杭州特有每年收取的)、管理费(每个月收取的)收取说明 [委托合同签约规则文档-1.3.7] + + + +7、合同模板修改 [范] + + + + + +1、招租期天数设定规则修改 [委托合同编辑页面一览表-招租期天数] + +2、招租期截止日、招租期剩余天数计算规则更改 [委托合同签约规则文档-1.3.7] + +4、维修基金变更,相寓优选2.0产品不收取。 [委托合同签约规则文档-1.3.7.2] + +5、延长期变更为默认90天,不用收房人选择 [委托合同签约规则文档-1.3.13] + +6、承租最高租金字段,上浮10%的比例变更为5% [字典值] + +风李䶮风李䶮风李䶮风李䶮李䶮风李䶮风李䶮风李䶮风李䶮风李䶮风李䶮风李䶮风李䶮李䶮风李䶮风李䶮 + + + +##### 委托合同详情页 - 委托合同签约规则文档 + +###### 1.3.7 委托合同详情 + +``` +托管招租期 +招租期剩余天数”字段显示 +.... +``` + +###### 1.3.7.2 维修基金扣除规则 + +``` +相寓优选2.0产品不收取维修基金,故不生成维修基金的扣款单。 +``` + +###### 1.3.13 委托合同延期 + +``` +承租合同延期时间: 相寓优选2.0产品,承租最多延委托预计结束日+90天(自然日) +当产品为相寓优选2.0:延长期期间需要收取资产管理费,具体收取规则见付款计划处 +``` + + + +##### 委托合同编辑页 - 委托合同编辑页面一览表 + +###### 合同主体信息 + +``` +承租最高金额 5% 字典值 +招租期天数 天数按需求给 +延长期(月) 不展示 +``` + + + +##### 资产管理费天数 + +``` +招租保证金生成时点,关联扣款单 + +付款计划生成规则: 押金收齐,防止多次生成 , 生成全部周期,生成承租周期的付款计划 + 承租跨委托(比如上份还剩不到6个月吧,续签了一个),承租生成的啥是否适配委托? +首次招租成功 挂扣消防器材的付款单(如未付款) + +承租延期生成付款计划和资产管理费扣款 + 付款金额=延期金额 , 延期的付款计划单独生成 ,比如第一次1个月2天 第二次1个月2天 , 一共4条 + 资产管理费扣款 根据天数计算 也是每次延期单独生成 + +延期承租中退 ?委托还能有下一份的情况? 删除实际结束日之后的付款计划,如卡在一条付款计划中间,也删除 + +资产管理费/资产服务费扣款单生成 生成付款计划时生成 + 资产管理费 1月3天的 月付季付哪里控制?季付3合1,如果第三个月不足月什么情况,跨两个委托年度的话 就各算各的,不足月的按公式算 , 还要关联付款单 + 资产服务费 承租合同月租金的一半 每个委托年度一个 , + +维修基金 生成的地方都删掉 + +承租解约 撤单以及 前边没有撤单的承租 要删三个付款单 + 其他情况 重新计算资产管理费(3天的那个) + +分类增加资产服务费,删除维修基金,资产管理费补扣,返还 怎么出呢 + +扣款单挂扣排序 +``` + + + +##### 招租期天数 + +``` +编辑页 +``` + + + +##### 维修基金 + +``` +详情页 +``` + + + +##### 延长期 + +``` +详情页 +``` + + + +##### 付款计划 + +``` +付款计划规则 +``` + + + +##### 委托合同模板 + +``` +一套新的 +``` + + + +##### 承租解约短信/APP通知 + +``` +内容变更 4种 +``` + + + +##### 承租签约短信/APP通知 + +``` +内容变更 +``` + + + +##### 补需求 招租截止日 + +1. 签约时 招租截止日 = 委托合同开始日+首个招租期天数-1 + +2. 承租签约审核通过时 清空招租截止日 + +3. 承租解约 当前承租之后有有效承租 招租截止日不变(清空状态) + +4. 承租解约 非3 , 如实际结束日+1 ≥ 委托实际结束日 -3月 , 招租截止日显示临期 + +5. 1承租解约 非3非4 , 如撤单 且没有已付款的付款计划 且无其他有效承租 , 招租截止日 = 委托合同开始日+首个招租期天数-1 + +​ 2承租解约 非3非4 , 如撤单 有已付款的付款计划 且无其他有效承租 , 招租截止日 = 承租实际结束日+当前委托年度每年招租期天数 + +​ 3承租解约 非3非4 , 如撤单 , 无其他有效承租 但是其他承租有已付款的付款计划 , 招租截止日 = 其他承租实际结束日+当前委托年度每年招租期天数 + +​ 4承租解约 非3非4 , 如撤单 , 有其他有效承租 , 招租截止日 = 最后一份有效承租实际结束日+当前委托年度每年招租期天数 + +6. 承租解约 非3非4 , 如非撤单 , 招租截止日 = 承租实际结束日+当前委托年度每年招租期天数 + + + + + +只拿首年的天数去算了 + + + + + + + + + + + + + + + + + + + +set.*SF_CONTRACT_TYPE_JYZ + +set.*1000100070005 + + + + + + + +北京 +TENP_CONTRACT_SIGN_STATE +WIWJ_SF_CONTRACT_XY_NEW_REL +WK_SF_CONTRACT +WK_SF_CONTRACT_OWNER +WIWJ_ESTIMATE_PRODUCT_REL +WIWJ_CONTRACT_TRACKING + + + +上海 +Sh_TENP_CONTRACT_SIGN_STATE +Sh_WIWJ_SF_CONTRACT_XY_NEW_REL +Sh_WK_SF_CONTRACT +Sh_WK_SF_CONTRACT_OWNER +Sh_WIWJ_CONTRACT_TRACKING +SH_WK_SF_CYCLE_PRICE + + + + + +--- + +页面变更新续关系 + +先签下一份委托,再承租延期 + +下一份是优选 但是延期导致重期 + +上份是招租失败且新签 + +合同重期-更名协议 + +合同重期-房源编号变更 + +合同更名协议 + +禅道改数据 + +变更房源编号 + +上线后的数据 + +--- + +#### 116499 【需求】相寓优选2.0临期3个月如有无缝续签委托进入招租期 + + + + + + + +招租截止日 + +当前日期后有有效承租不展示 + +##### 首次招租期 + +##### 托管招租期 + +1. 后边无承租 按3(1) 3(2) + +2. 委托审核通过 + +​ 条件 : 无缝续签 , 无招租截止日(临期半年内续签和3个月内到期) , 无有效承租(这里是都解约完成) , 3个月内是对的 , 委托上份合同状态是已续约(已解约没有截止日 , 解约中?) + +3. 协议变更开始日 + +##### 生成公式 : 3>2>1 + +1. 如在首年 招租截止日=承租结束日+当年招租天数-(委托开始日 到 承租实际结束日的空置天数) + + 非首年 招租截止日=承租结束日+当年招租天数-(周期开始日 到 承租实际结束日的空置天数) + +​ 空置天数具体计算 承租开始日-统计开始日 , 承租开始日-(上个承租实际结束日+1) + +2. 招租截止日跨委托年度了 , 招租截止日=下一年度开始日+招租天数-1 , 如是最后一年 , 走123 + +3. 招租截止日跨无缝续签委托且是优选2.0 招租截止日=下份委托的招租截止日 不签协议的话 最多60来天 (延期) + +##### 保证金生成 + +1. 公式1最后一年可能会导致 结束日>招租截止日 , 截止日为空是半年内还有承租 + + + + + + + + + + + + + + + +--- + +#### 116739 【需求】【26年2月初上线】武汉、成都相寓优选计算招租期规则更改 + + + +// *******116739 UPDATE BY LHTH 2026-1-23 START ******* +// *******116739 UPDATE BY LHTH 2026-1-23 END ******* + + + + + +--- + +#### 116517 【需求】【26年2月初上线】相寓优选2.0使用的《北京相寓资产管理服务合同》补充协议新增“变更首次招租期开始日”的逻辑 + + + +// *******116517 UPDATE BY LHTH 2026-1-28 START ******* +// *******116517 UPDATE BY LHTH 2026-1-28 END ******* + +{'<'}%-- *******116517 UPDATE BY LHTH 2026-1-28 START *******--%> +{'<'}%-- *******116517 UPDATE BY LHTH 2026-1-28 END *******--%> + + + + + +``` +orderDepositWithSubService.judgeProductId(contractMainInfo.getProductCode(), StaticVariable.SF_CONTRACT_PRODUCT_XYYX, null) +``` + + + + + + + +--- + +#### 115479 【需求】【26年3月初上线】相寓优选2.0产品,资产管理费收取规则修改,根据签订租金不同收取标准不同 + + + +// *******115479 UPDATE BY LHTH 2026-1-30 START ******* +// *******115479 UPDATE BY LHTH 2026-1-30 END ******* + + + +4.2 表格 + +4.8.1 + +4.8.2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/2026开发笔记/26-2开发笔记.md b/docs/2026开发笔记/26-2开发笔记.md new file mode 100644 index 0000000..be32091 --- /dev/null +++ b/docs/2026开发笔记/26-2开发笔记.md @@ -0,0 +1,373 @@ +--- +sidebar_position: 2 +title: 26-2开发笔记 +--- +# 笔记2月 +// *******116517 UPDATE BY LHTH 2026-2-2 START ******* +// *******116517 UPDATE BY LHTH 2026-2-2 END ******* + +{'<'}%-- *******116517 UPDATE BY LHTH 2026-2-2 START *******--%> +{'<'}%-- *******116517 UPDATE BY LHTH 2026-2-2 END *******--%> + +--- + +#### 116702 测试 + +#### 116753 【需求】【26年2月初上线】【关联116702】相寓优选招租失败委托时间结束日缩回规则更改 + +先签一个 临期不开招租期的委托 签了无缝续签委托(优选?) , 给旧委托招租期赋值 + + + +如招租截止日>委托实际结束日 第二份合同如果是优选 , 不能支付招租保证金 + + + +##### 托管招租期生成时点1: 承租解约 + +##### 生成时点2: 委托签约审核通过 / 生成时点3: 协议修改开始日 + +A 续签且无缝 + +B 无招租截止日(因C 所以只有临期) + +C 无有效承租 + +D 最后一个承租实际结束日在尾空3个月(延期?) + +E 原合同状态是已续约 + + + +3.1 解约触发 临期 且没有无缝续签的合同 不生成招租截止日 + +3.2 解约触发 不临期 / 有无缝续签的合同 + +A 招租截止日>合同实际结束日 则用计算的结果 + +B 招租截止日>合同实际结束日 且有无缝续签优选委托 截止日=新委托的截止日 + +(看B 没B则用计算的结果) + +4 承租审核通过 还要清空上份委托的截止日 + + + + + + + +签优选协议时 + + + + + + + + + + + +招租失败定时 : 不刷合同结束日到招租截止日 + + + + + +--- + +#### 117010 【需求】【全国】Work端录入委托合同时优化 + + + + + +只能签署整年 : + +上海, 成都直营, 武汉直营, 广州直营, 南京 + + + +部分产品只能签署整年 : + +北京 : 相寓优选 (在评估单页面录入, 合同录入页无法更改) + +杭州 : 相寓优选和相寓精选 (在评估单页面录入, 合同录入页无法更改) + +太原 : 相寓优选 (在评估单页面录入, 合同录入页无法更改) + +苏州 : 相寓优选 + +天津 : 相寓优选 + +郑州 : 相寓优选 + + + +可签署月的 : + +无锡 + + + + + + + + + + + + + +// *******117252 UPDATE BY LHTH 2026-2-4 START ******* +// *******117252 UPDATE BY LHTH 2026-2-4 END ******* + + + + + + + +select rentuse,planned_use,preenddate from wk_sf_contract where contractcode = 'AFWT10452284ZY';--2023-08-27 00:00:00 + +update wk_sf_contract set rentuse='1000300200003',planned_use='1000100860003',preenddate='2026-01-27' where contractcode = 'AFWT10452284ZY'; + + + + + +select rentuse,planned_use,preenddate,CountPeople from wk_sf_contract where contractcode = 'AFWT10560033ZY'; + +select * from taw_system_dicttype where dictid = '1000901020001'; + + + + + + + + + + + + + + + +--- + +#### 117318 【需求】《郑州相寓资产管理服务合同》补充协议-进行资产管理服务期限变更时结束日计算规则更改 + + + +// *******117318 UPDATE BY LHTH 2026-2-5 START ******* +// *******117318 UPDATE BY LHTH 2026-2-5 END ******* + + + + + +首年整 + +首年不足年 + +else + +​ 非首年没有月 + +​ 非首年有月 , 非最后一年 + +​ 非首年优越 , 最后不足年的一年 + + + + + + + +--- + +#### 测试 + +##### 115479 **【需求】【26年3月初上线】相寓优选2.0产品,资产管理费收取规则修改,根据签订租金不同收取标准不同** + +- [x] 1管理费收取(签约,延期)金额 +- [x] 2模板 +- [x] 3签协议无变化 +- [x] 4 114968新加的字段展示 +- [x] 5延期收取同合同 **AFWT100024130ZY** 新小于1000元 + +​ **AFWT100024042ZY**旧小于1000元 + +​ **AFWT100024135ZY**新大于1000元 + +上线前{'<'}1000的 + +- [x] pc 上线后{'<'}1000的 : 管理服务费133元/月 + +- [x] pc 上线后>=1000的 : 管理服务费首年4天/月 非首年4天/月 + +- [x] work 上线后{'<'}1000的 : 管理服务费133元/月 + +- [x] work 上线后>=1000的 : 管理服务费首年4天/月 非首年4天/月 + +- [x] app{'<'}1000 : 管理服务费标准133元/月 + +- [x] app>=1000 : 管理服务费标准4天/月 + +##### 115914 **【需求】 【26年2月上线】【相寓优选】太原相寓优选产品, 委托合同详情相关修改** + +- [x] 合同详情字段修改 + +- [x] 取值说明看新字段吧 (禅道写看月租金) +- [x] 旧版无问题 没修改字段名 + + + + + + + +--- + +#### 116894 【需求】相寓优选产品,委托合同详情页面增加“标准招租天数”字段 + +// *******116894 UPDATE BY LHTH 2026-2-25 START ******* +// *******116894 UPDATE BY LHTH 2026-2-25 END ******* + +{'<'}%-- *******116894 UPDATE BY LHTH 2026-2-25 START *******--%> +{'<'}%-- *******116894 UPDATE BY LHTH 2026-2-25 END *******--%> + + + +#### 116877 【需求】委托合同详情页面修改 + +// *******116877 UPDATE BY LHTH 2026-2-25 START ******* +// *******116877 UPDATE BY LHTH 2026-2-25 END ******* + + + + + + + +--- + +#### 116442 【需求】上海相寓优选2.0合同, 合同详情和合同主体页面 去掉 最低月租金的展示。 + +// *******116442 UPDATE BY LHTH 2026-2-26 START ******* +// *******116442 UPDATE BY LHTH 2026-2-26 END ******* + + + +#### 116382 【需求】委托相寓优选2.0 的基准租金、最高租金及最低租金调整优化 + + + +// *******116382 UPDATE BY LHTH 2026-2-26 START ******* +// *******116382 UPDATE BY LHTH 2026-2-26 END ******* + +{'<'}%-- *******116382 UPDATE BY LHTH 2026-2-26 START *******--%> +{'<'}%-- *******116382 UPDATE BY LHTH 2026-2-26 END *******--%> + + + + + +``` +minFloatRatio +``` + + + +1. + +- [x] pc + +- [x] work +- [ ] 上线前未打印的 +- [ ] 上线前提交打印审核 上线后驳回的 +- [ ] 上线前的合同 换签(忽略) + +2. + +- [x] pc +- [x] work + +3. + +- [x] pc +- [x] work + +4. + +- [x] 合同模板 + + + +协议 + +1. + +- [x] pc页面 +- [x] work页面 + +2. + +- [x] 模板 +- [x] work预览 + +3. + +- [x] 变更后的最低金额=基准租金 + +4. + +- [x] 去掉校验 最低最高租金需要一致 + + + + + +--- + +#### 117703 【需求】【26年3月初上线】委托产品类型为“相寓优选2.0”时,不能发起《爱家营-相寓空置期租金免除补充协议》 + + + +// *******117703 UPDATE BY LHTH 2026-2-28 START ******* +// *******117703 UPDATE BY LHTH 2026-2-28 END ******* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/2026开发笔记/26-3开发笔记.md b/docs/2026开发笔记/26-3开发笔记.md new file mode 100644 index 0000000..36e7f49 --- /dev/null +++ b/docs/2026开发笔记/26-3开发笔记.md @@ -0,0 +1,256 @@ +--- +sidebar_position: 3 +title: 26-3开发笔记 +--- +# 笔记3月 +#### 117209 【需求】相寓优选2.0使用的《苏州相寓资产管理服务合同》补充协议新增“变更首次招租期开始日”的逻辑 + +// *******117209 UPDATE BY LHTH 2026-3-2 START ******* +// *******117209 UPDATE BY LHTH 2026-3-2 END ******* + +#### 116826 【需求】相寓优选2.0使用的《南京相寓资产管理服务合同》补充协议新增“变更首次招租期开始日”的逻辑 + +// *******116826 UPDATE BY LHTH 2026-3-2 START ******* +// *******116826 UPDATE BY LHTH 2026-3-2 END ******* + +#### 117368 【需求】相寓优选2.0使用的《天津相寓资产管理服务合同》补充协议新增“变更首次招租期开始日”的逻辑 + +// *******117368 UPDATE BY LHTH 2026-3-2 START ******* +// *******117368 UPDATE BY LHTH 2026-3-2 END ******* + +#### 117251 【需求】相寓优选2.0使用的《相寓资产管理服务合同》补充协议新增“变更首次招租期开始日”的逻辑 + +// *******117251 UPDATE BY LHTH 2026-3-2 START ******* +// *******117251 UPDATE BY LHTH 2026-3-2 END ******* + + + + + +// *******117209,116826,117368,117251 UPDATE BY LHTH 2026-3-2 START ******* +// *******117209,116826,117368,117251 UPDATE BY LHTH 2026-3-2 END ******* + +{'<'}%-- *******117209,116826,117368,117251 UPDATE BY LHTH 2026-3-2 START *******--%> +{'<'}%-- *******117209,116826,117368,117251 UPDATE BY LHTH 2026-3-2 END *******--%> + + + + + + + + + +--- + +#### 117210 【需求】相寓优选2.0资产管理费扣款规则调整及相关合同模板调整 + +#### 117213 【需求】相寓优选2.0临期3个月如有无缝续签委托进入招租期 + +苏州 117210,117213 + +南京 117188,117191 + +天津 117372,117373 + +郑州 117258,117262 + + + + + +--- + +#### 117047 【需求】变更打招租失败标签的逻辑 + + + +// *******117047 UPDATE BY LHTH 2026-3-10 START ******* +// *******117047 UPDATE BY LHTH 2026-3-10 END ******* + + + + + +有委托 且 无承租 展示 + +无委托 且 有承租 不展示 + + + + + +--- + +#### 117573 【需求】相寓优选2.0使用的《相寓资产管理服务合同》补充协议新增“变更首次招租期开始日”的逻辑 + + + +// *******117573 UPDATE BY LHTH 2026-3-12 START ******* +// *******117573 UPDATE BY LHTH 2026-3-12 END ******* + +{'<'}%-- *******117573 UPDATE BY LHTH 2026-3-12 START *******--%> +{'<'}%-- *******117573 UPDATE BY LHTH 2026-3-12 END *******--%> + + + +思源宋体 Regular + +SourceHanSerifCN-Regular.ttf + + + +--- + +#### 117597 【需求】【全国】相寓优选2.0协议签署补充协议增加招租期天数时,判断当前在哪个招租期逻辑更改 + + + +// *******117597 UPDATE BY LHTH 2026-3-17 START ******* +// *******117597 UPDATE BY LHTH 2026-3-17 END ******* + + + +- [x] 优先用委托合同招租期截止日判断在哪个委托年度内 +- [ ] 如果招租期截止日>委托合同实际结束日则视为最后一个履约年度 +- [x] 如果委托合同招租期截止日为空,则使用协议录入日期 (成都、武汉 不行) + + + +排除招租失败已缩回的 + +必须有周期 - 排除没有签过承租的 + +- [x] 有承租 截止日是空 , 用当前时间 + +测试方法 : 第一年和第二年都看下 + +- [x] 无承租 且倒数3个月 截止日是空 , 用当前时间 + +测试方法 : 解约到临期 + +- [x] 无承租 且倒数3个月 且有无缝续签的合同 招租截止日是下一份委托的截止日 + +测试方法 : 续签一个合同 , 将旧合同解约到临期范围 + +- [x] 无承租 按招租截止日看 比如承租1月20到期 还剩20天 结束日是2月10号 + +测试方法 : + + + +招租是空 + + + + + +当前日期大于招租期开始日 + + + + + + + +--- + +#### 116935 【需求】委托交割续签增加优选2次收房判断 + +#### 116930 【需求】委托交割续签增加优选2次收房判断 + +##### 杭州 + +无缝续签规则 自动审核 + +优选续优选 , 上份合同和原合同字段+无缝 + + + +##### 其他城市 + +普通续普通 , 满足口径+无缝 + +普通续优选 , 满足口径+无缝 + +优选续普通 , + +优选续优选 , + + + +##### 字面解析 + +lastcontractcode有就是续签 , 如果是首次招租失败导致的新签看PROPERTY_LASTCONTRACTCODE , 有任一满足且达成 + 无缝AUTO_CREATE_PROPERTY_FLAG + + + + + +自动生成的交割单 不需要审核 ? +自动审核 和 不自动审核录入交割单代入数据 ? + +##### 字段说明 + +lastcontractcode 和 PROPERTY_LASTCONTRACTCODE -- 保存合同时更新 + +AUTO_CREATE_PROPERTY_FLAG -- 推送/打印时更新 + + + +##### 操作地点 + +type页的带数据的时候 看新续 + +定时生成的时候 看新续 + + + +--- + +#### 118499 【需求】相寓优选2.0《北京相寓资产管理服务合同》补充协议-《首次招租期变更》部分风控审批流调整 + + + +// *******118499 UPDATE BY LHTH 2026-3-27 START ******* +// *******118499 UPDATE BY LHTH 2026-3-27 END ******* + +{'<'}%-- *******118499 UPDATE BY LHTH 2026-3-27 START *******--%> +{'<'}%-- *******118499 UPDATE BY LHTH 2026-3-27 END *******--%> + + + +注意点 + +- [x] 审核通过后看履历的审核人 +- [x] work财务审核页面返回按钮是否好使 +- [x] 审核通过的逻辑是否对 +- [x] work消息 + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/2026开发笔记/26-4开发笔记.md b/docs/2026开发笔记/26-4开发笔记.md new file mode 100644 index 0000000..c29764f --- /dev/null +++ b/docs/2026开发笔记/26-4开发笔记.md @@ -0,0 +1,569 @@ +--- +sidebar_position: 4 +title: 26-4开发笔记 +--- +# 笔记4月 +#### 117807 【优化】委托房间价格周期表数据存储优化 + +// *******117807 UPDATE BY LHTH 2026-3-30 START ******* +// *******117807 UPDATE BY LHTH 2026-3-30 END ******* + +{'<'}%-- *******117807 UPDATE BY LHTH 2026-3-30 START *******--%> +{'<'}%-- *******117807 UPDATE BY LHTH 2026-3-30 END *******--%> + + + +- [x] work/AMS初始化页面是否要更新房间信息 直营分支agreement_detail_INSERT_DATA.sql + +- [x] 后台同页面一样的计算系数 +- [x] 保存房间信息的保留和红冲 +- [x] 定时任务的保留和红冲 +- [x] 协议的保留和红冲 +- [x] (可能是修改房间的)保留和红冲 +- [ ] 64976 【问题】房间分间价格变为0后无法恢复原来的定价 + + + + + + + + + + + +--- + +117776 【需求】【成都直营】相寓优选2.0资产管理费扣款规则调整及相关合同模板调整 + +117779 【需求】【成都直营】相寓优选2.0临期3个月如有无缝续签委托进入招租期 + +117939 【需求】【武汉直营】相寓优选2.0资产管理费扣款规则调整及相关合同模板调整 + +117943 【需求】【武汉直营】相寓优选2.0临期3个月如有无缝续签委托进入招租期 + + + + + +--- + +#### 117770 【需求】【成都直营】相寓优选2.0使用的《成都相寓资产管理服务合同》补充协议新增“变更首次招租期开始日”的逻辑 + +#### 117934 【需求】【武汉直营】相寓优选2.0使用的《相寓资产管理服务合同》补充协议新增“变更首次招租期开始日”的逻辑 + + + +// *******117770,117934 UPDATE BY LHTH 2026-4-8 START ******* +// *******117770,117934 UPDATE BY LHTH 2026-4-8 END ******* + +{'<'}%-- *******117770,117934 UPDATE BY LHTH 2026-4-8 START *******--%> +{'<'}%-- *******117770,117934 UPDATE BY LHTH 2026-4-8 END *******--%> + + + +思源宋体 Regular + +SourceHanSerifCN-Regular.ttf + + + +--- + +#### 118634 【优化】委托合同编辑页面,如果证件类型为营业执照,业主证件编号录入时支持录入汉字 + +// *******118634 UPDATE BY LHTH 2026-4-10 START ******* +// *******118634 UPDATE BY LHTH 2026-4-10 END ******* + +{'<'}%-- *******118634 UPDATE BY LHTH 2026-4-10 START *******--%> +{'<'}%-- *******118634 UPDATE BY LHTH 2026-4-10 END *******--%> + + + +人中编函[1989]65号/()asdASD-李䶮风 + +人中编函[1989]65号/()asdASD-李风 + +[1989]65/()asdASD- + +198965/()asdASD- + + + +lastRealEndDate 最后一份其他承租 + +如果当前是撤单 且之前没有其他承租 这个日期是委托开始日 + +非撤单 最后一份是自己 + + + + + + + +--- + +#### 119054 【上海预生产】《上海相寓资产管理服务合同》补充协议,页面优化* + + + +// *******119054 UPDATE BY LHTH 2026-4-14 START ******* +// *******119054 UPDATE BY LHTH 2026-4-14 END ******* +{'<'}%-- *******119054 UPDATE BY LHTH 2026-4-14 START *******--%> +{'<'}%-- *******119054 UPDATE BY LHTH 2026-4-14 END *******--%> + + + +http://10.1.67.76:8080/api/agreement/modifyAgreement?contractId=100035240&token=e2be8c7436bcbce4476fac2c2f33ec7d&agreementId=7732398&bntFlag=N + + + +--- + +#### 119079 【北京测试--关联118499】【work】鸿蒙 《北京相寓资产管理服务合同》补充协议在work审核页面,附件信息里的驳回原因框可以滑动变换大小 + +{'<'}%-- *******119079 UPDATE BY LHTH 2026-4-14 START *******--%> +{'<'}%-- *******119079 UPDATE BY LHTH 2026-4-14 END *******--%> + + + +--- + +#### 118978 增加非收房分支修改房源楼层的功能 + +// *******118978 UPDATE BY LHTH 2026-4-15 START ******* +// *******118978 UPDATE BY LHTH 2026-4-15 END ******* + +{'<'}%-- *******118978 UPDATE BY LHTH 2026-4-15 START *******--%> +{'<'}%-- *******118978 UPDATE BY LHTH 2026-4-15 END *******--%> + + + + + +权限 houseNew_floor_edit + +输入框 + + + +--- + +#### 118702 【需求】委托代理人可以在相寓app及短信收到房屋出租及房屋退租的信息提示 + +// *******118702 UPDATE BY LHTH 2026-4-17 START ******* +// *******118702 UPDATE BY LHTH 2026-4-17 END ******* + +{'<'}%-- *******118702 UPDATE BY LHTH 2026-4-17 START *******--%> +{'<'}%-- *******118702 UPDATE BY LHTH 2026-4-17 END *******--%> + + + +- [x] 加标记按钮 -- 风控审核之后的状态 +- [x] 加取消标记按钮 +- [x] 承租解约短信/app通知 承租签约短信/app通知 +- [x] 续签清字段 pc和work都清理 +- [x] 菜单 + + + +--- + +#### 119031 【成都-需求】相寓优选2.0首次招租期天数调整及招租保证金金额调整 + +// *******119031 UPDATE BY LHTH 2026-4-21 START ******* +// *******119031 UPDATE BY LHTH 2026-4-21 END ******* + + + +测试 + +- [x] 招租天数调整30->45 +- [x] 招租保证金变成80% +- [ ] 上线前创建 30天 +- [ ] 上线前换签 30天 +- [ ] 上线前换签再换签 45天 +- [ ] 上线前未打印 45天 +- [ ] 上线后创建 45天 + + + +已打印审核通过 + +此时打印的是旧版 + + + +换签一下 打印的还是旧版 + + + +因为我用了新版存完数据 , 再打印 , 保证金都是后生成的 + + + + + +承租签约生成 委托的保证金 + +work合同保存 给招租时间 + +合同审核通过 生成招租保证金 + +新旧合同的区分方法 + +AMS同保存 给招租时间 + +``` +招租天数字典 10001010700030001 +上线分割日字典 1000101160001 +``` + + + +--- + +#### 119232 【需求】相寓优选2.0产品首年、非首年招租期天数调整 + +// *******119232 UPDATE BY LHTH 2026-4-22 START ******* +// *******119232 UPDATE BY LHTH 2026-4-22 END ******* + +{'<'}%-- *******119232 UPDATE BY LHTH 2026-4-22 START *******--%> +{'<'}%-- *******119232 UPDATE BY LHTH 2026-4-22 END *******--%> + + + +历史数据 : + +- [x] 已提审/审核通过 刷数据 +- [x] 未提交审核/审核驳回 不刷,点提审按钮校验 +- [x] 已失效 刷不刷? + +非历史数据 : + +- [x] 按照价格出不同天数 + +合同AMS : + +- [x] 招租期天数取评估单的值--合同 +- [ ] 招租期天数取评估单的值--周期 +- [x] 合同模板 + +- [ ] 合同保存校验 , 招租期天数为或者是0 , “无法获取到招租期天数,请重新评估后收房。” + +ams 提交财务审核 + + + +- [ ] 编辑页取字段 + +合同work : + +- [x] 招租期天数取评估单的值--合同 + +- [ ] 合同保存校验 , 招租期天数为或者是0 , “无法获取到招租期天数,请重新评估后收房。” +- [ ] 编辑页取字段 + + + + + +--- + +#### 119112 【需求】委托合同详情页面关闭修改产品功能 + +// *******119112 UPDATE BY LHTH 2026-4-28 START ******* +// *******119112 UPDATE BY LHTH 2026-4-28 END ******* + +{'<'}%-- *******119112 UPDATE BY LHTH 2026-4-28 START *******--%> +{'<'}%-- *******119112 UPDATE BY LHTH 2026-4-28 END *******--%> + + + + + +--- + +#### 119570 【需求】数据绩效专员 开通work权限 + +// *******119570 UPDATE BY LHTH 2026-4-29 START ******* +// *******119570 UPDATE BY LHTH 2026-4-29 END ******* + + + + + + + +- #### 112 + +- [ ] 21:17:33.330 /api/houseKeeper/houseManager/checkContractSign + +- [ ] 21:17:37.648 /api/work/estimate/product/detailEditEstimateProduct + +21:17:44.557 /api/workSeesignWait/getSeeSignWaitInfoCount + +21:17:44.610 /api/houseKeeper/houseManager/applyCfbcxyListPageNum + +21:17:44.678 /api/houseKeeper/houseManager/applyTzsqListPageNum + +21:17:45.443 /api/houseKeeper/houseManager/auditEstimateListPageNum + +- #### 113 + +- [ ] 21:17:26.369 /api/houseKeeper/houseManager/unreadMsgCnt + +- [ ] 21:17:31.598 /api/houseKeeper/houseManager/evaluateInofList + +- [ ] 21:17:34.555 /api/houseKeeper/houseManager/productList + +21:17:42.996 /api/houseKeeper/houseManager/getAuditCount + +21:17:44.368 /api/skPlanWaitPay/getremindeSkPlanCount + +​ /skPlanWaitPay/skPlanWaitPayCount + +21:17:44.534 /api/houseKeeper/houseManager/getRentOrderWbjCount + +21:17:44.697 /api/houseKeeper/houseManager/applyCfjyxyListPageNum + +21:17:45.378 ... + +- #### 114 + +21:17:42.677 /api/houseKeeper/houseManager/unreadMsgCnt + +21:17:44.315 ... + +- #### 115 + +- [ ] 21:17:26.696 /api/houseKeeper/houseManager/getAuditCount + +- [ ] 21:17:38.629 /api/work/sfContractAppAction/getAuditProcessTracking + +21:17:43.872 /api/houseKeeper/houseManager/appBacklogPage + +21:17:44.507 /api/houseKeeper/houseManager/getQtCount + +21:17:44.874 /api/houseKeeper/houseManager/getCwTotalCount + +21:17:47.369 ... + + + + + +打开首页 + +- [x] 21:17:26.369 /api/houseKeeper/houseManager/unreadMsgCnt + +- [x] 21:17:26.696 /api/houseKeeper/houseManager/getAuditCount + +打开列表 + +- [x] 21:17:31.598 /api/houseKeeper/houseManager/evaluateInofList + +评估单产品列表 + +- [x] 21:17:33.330 /api/houseKeeper/houseManager/checkContractSign + +- [x] 21:17:34.555 /api/houseKeeper/houseManager/productList + +产品详情 + +- [x] 21:17:37.648 /api/work/estimate/product/detailEditEstimateProduct + +流程追踪 + +- [ ] 21:17:38.629 /api/work/sfContractAppAction/getAuditProcessTracking + +21:17:42.996 /api/houseKeeper/houseManager/getAuditCount + +21:17:42.677 /api/houseKeeper/houseManager/unreadMsgCnt + + + +经纪人 + +editButtonShow 修改按钮 Y + +seeButtonShow 查看按钮 N + +submitButtonShow 提审按钮 Y + +区域经理 + +editButtonShow 修改按钮 N + +seeButtonShow 查看按钮 Y + +submitButtonShow 提审按钮 N + + + +默认Y + +非这些 已签约 失效 签约中 + + + + + +--- + +#### 119153 【生产问题】org.hpin.sfManage.service.ContractMainInfoService 后台报异常 + +{'<'}%-- *******119153 UPDATE BY LHTH 2026-4-29 START *******--%> +{'<'}%-- *******119153 UPDATE BY LHTH 2026-4-29 END *******--%> + +``` +maxlength="" +``` + +1234567890 + +杭州 + +``` +合同编号 21 +房源编号 22 +物业地址 57 +户型(室)12 +免租期天数 13 +委托月租金 18 +业主姓名 50 +业主手机号 33 +业主证件号 47 +``` + +杭州成交管理-委托 + +``` +户型(室)12 +免租期天数 13 +委托月租金 18 +``` + +北京 + +``` +合同编号 25 +房源编号 22 +业主姓名 45 +``` + +直营 + +``` +合同编号 25 +房源编号 22 +业主姓名 31 +``` + +上海 + +``` +合同编号 25 +房源编号 22 +业主姓名 38 +``` + +无锡 + +``` +合同编号 25 +房源编号 22 +业主姓名 38 +管家姓名 17 +``` + +非收房 + +``` +合同编号 25 +房源编号 22 +业主姓名 50 +管家姓名天津,南京 22 +``` + +太原 + +``` +合同编号 26 +房源编号 22 +业主姓名 38 +管家姓名 27 +两书一合同编号 空 AI说一般20 ,所以给30 +``` + + + + + + + +SELECT + (select max(length(contractcode)) from wk_sf_contract) AS 合同编号 + ,(select max(length(housecode)) from wk_jc_house_info) AS 房源编号 + ,(select max(length(ownername)) from wk_sf_contract) AS 业主姓名 + ,(select max(length(ownerphoneno)) from wk_sf_contract) AS 业主手机号 + --,(select max(length(BASERENT)) from wk_sf_contract) AS 杭州委托月租金 + --,(select max(length(vacantSumDay)) from wk_sf_cycle) AS 杭州免租天数 + --,(select max(length(CERTIFICATESCODE)) from wk_sf_contract) AS 杭州业主证件号 + --,(select max(length(adminAddress)) from wk_jc_house_info) AS 杭州物业地址 + --,(select max(length(fewRoom)) from wk_sf_contract) AS 杭州户型 + --,(select max(length(username)) from taw_system_user) AS 太原无锡天津南京管家姓名 + --,(select max(length(SPEC_CODE)) from wk_sf_contract) AS 太原两书一合同编号 +FROM dual; + + + + + +--- + +#### 119565 【5月初上线】杭州优选上待租时候自动定价以及调价规则调整 + +// *******119565 UPDATE BY LHTH 2026-4-30 START ******* +// *******119565 UPDATE BY LHTH 2026-4-30 END ******* + + + + + + + +// *******119550 UPDATE BY LHTH 2026-5-7 START ******* +// *******119550 UPDATE BY LHTH 2026-5-7 END ******* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/2026开发笔记/26-5开发笔记.md b/docs/2026开发笔记/26-5开发笔记.md new file mode 100644 index 0000000..6666bc8 --- /dev/null +++ b/docs/2026开发笔记/26-5开发笔记.md @@ -0,0 +1,636 @@ +--- +sidebar_position: 5 +title: 26-5开发笔记 +--- +# 笔记5月 +#### 成都优选规则变更 + +- [ ] 部分代码撤回 + +- [ ] 首次招租期天数调整 -- 首年是字典 后续在公共方法里 + +​ 原 : 首年45 次年45 单次30 + +​ 现 : 每次45 + +- [ ] 招租保证金调整 + +​ 原 : 50% -> 80%(没上线) + +​ 现 : 100% + +- [ ] 租金上下浮动比例调整 + +​ 原 : 5% + +​ 现 : 10% 校验提示应该不会弹出 + +- [ ] 招租服务费调整 -- 财务 + +​ 原 : 含托管招租期 + +​ 现 : 不含托管招租期 是招租期不收取费用 + +- [ ] 新增600元/年 维修基金 +- [ ] 固定延长期为3个月 +- [ ] 提前12个月可以续签 , 到期3个月内可解约 + +- [ ] 切割方案 新的打印版本 是要求之前的合同强制换签 + +​ 换签 作废 后算新的 + +- [ ] 短信模板 + + + + + +- [ ] 招租期天数调整 -- 首年是字典 托管在公共方法里 +- [ ] 招租保证金调整 -- 模板 和 生成时点 +- [ ] 租金上下浮动比例调整 -- 字典 +- [ ] 招租服务费调整 -- +- [ ] 新增600元/年 维修基金 -- 首个承租审核通过 +- [x] 固定延长期为3个月 -- 页面 work +- [x] 提前12个月可以续签 -- 后台判断 +- [x] X 到期3个月内可解约 -- 解约.. +- [ ] 招租结束日计算 -- 公共方法 + +- [x] 部分代码撤回 +- [x] X 新合同模板 +- [x] X 协议相关功能 +- [x] 切割方式 -- 优选版本 +- [ ] 短信模板 + + + + + +招租保证金生成 : 1.签完委托 2.定时 空置 且 保证金付款 {'<'}= 保证金返还 + +保证金删除 : 1. 无缝续签的 2.合同签约通过 , 删非已付款的 + +保证金返还 : 1.承租交三金 招租保证金 > 保证金返还 2.这是无缝续签的 + +返还房租 : 承租实际结束日{'<'}房租已付日(承租提前解约) + +模拟 : + +签约生成的保证金未付款 -> 承租交三金 -> 付款=返还=0 -> 删除招租保证金 -> 承租解约 -> 空置时点 付款=返还=0 -> 生成保证金 + +签约生成的保证金已付款 -> 承租交三金 -> 付款>返还=0 -> 生成保证金返还 -> 承租解约 -> 空置时点 付款=返还 -> 生成保证金 + +承租签约 + + + + + + + + + + + + + + + + + + + + + + +普通合同 + +- [ ] 服务费 +- [ ] 固定延长期为3个月 -- 承租签约和签协议的校验 +- [ ] 提前12个月可以续签 -- 后台增加判断 +- [ ] 到期3个月内可解约 -- 解约.. + +协议相关 + + + +文档问题+修改点 + +模板 协议 + + + +委托周期 第一年2025.1.1-2025.12.30 第二年 2026.1.1-2026.12.30 + +承租2025.12.20解约 剩10天到第二个周期 ,假设还有30天招租期 , 招租截止日大于第一个周期 , 所以招租结束日是2026.1.30 + +- [ ] 2025.12.21 签协议增加2天招租期 , 实际修改 第一个周期的招租天数32天 , 招租截止日为2026.1.30 , 待租查询的结果是2026.1.30 + +​ 如用承租结束日算 招租截止日为2026.2.1 , 待租查询的结果是2026.2.1 + +​ 如用周期开始日算 招租截止日为2026.1.30 , 待租查询的结果是2026.1.30 + +- [ ] 2026.1.1 签协议增加2天招租期 , 实际修改 第二个周期的招租天数32天 , 招租截止日为2026.2.1 , 待租查询的结果是2026.1.30 + +​ 如用承租结束日算 招租截止日为2026.2.1 , 待租查询的结果是2026.2.1 + +​ 如用周期开始日算 招租截止日为2026.2.1 , 待租查询的结果是2026.2.1 + +- [ ] 如果以上两种情况都增加了两天的情况 , 招租截止日为2026.2.1 , 待租查询的结果是2026.1.30 + +​ 如用承租结束日算 招租截止日为2026.2.1 , 待租查询的结果是2026.2.3 + +​ 如用周期开始日算 招租截止日为2026.2.1 , 待租查询的结果是2026.2.1 + + + + + + + + + + + + + +A 当前承租非撤单 + +B 当前承租撤单 且 没有其他有效承租 且 没有已付款的付款计划 + +注 当前承租撤单 且 没有其他有效承租 且 有已付款的付款计划 + +如果 当前承租撤单 且 有其他有效承租呢? + + + + + +resetLetEndDate调用地点 + +1. 承租签约完成 改啥? +2. 承租解约 +3. 委托协议 +4. 因下一份合同无缝续签 委托审核通过,协议更改合同开始日(包括非优选) + + + +--- + +#### 测试 119450 【6月初上线】【成都需求】相寓优选2.0委托需求 + + + + + +委托合同编辑页面-相寓优选2.0延长期、招租天数、最高最低租金浮动比例修改(PC、WORK) + +续签-相寓优选2.0续签规则校验修改(PC、WORK) + +短信通知-相寓优选2.0承租签约、承租解约短信/APP通知修改 + +--- + +#### 119614 【需求】优选2.0委托合同可提前1年操作续签 + + + +// *******119614 UPDATE BY LHTH 2026-5-8 START ******* +// *******119614 UPDATE BY LHTH 2026-5-8 END ******* + + + +--- + +#### 119720 【5月初上线】【需求】相寓优选委托续签由提前6个月续签修改为提前9个月续签 + + + +// *******119720 UPDATE BY LHTH 2026-5-9 START ******* +// *******119720 UPDATE BY LHTH 2026-5-9 END ******* + + + + + +--- + +#### 119450 【6月初上线】【成都需求】相寓优选2.0委托需求 + + + +// *******119450 UPDATE BY LHTH 2026-5-12 START ******* +// *******119450 UPDATE BY LHTH 2026-5-12 END ******* + + + +一二三四五六七八九十 + +1234567890 + + + +--- + +#### 119752 【6月初上线】【成都需求】相寓优选2.0委托需求-委托补充协议部分 + + + +// *******119752 UPDATE BY LHTH 2026-5-14 START ******* +// *******119752 UPDATE BY LHTH 2026-5-14 END ******* + +{'<'}%-- *******119752 UPDATE BY LHTH 2026-5-14 START *******--%> +{'<'}%-- *******119752 UPDATE BY LHTH 2026-5-14 END *******--%> + + + +首次招租期去掉 + +``` +letDaysBefore +letDaysAfter +``` + +托管招租期去掉 + +``` +cycleLetDaysBefore +cycleLetDaysAfter +``` + +下方文案删除 + +``` +yearEffect +mmEffect +ddEffect +``` + + + +俩按钮取消逻辑 1 o + +首个招租期 更改招租开始日 逻辑 o + +托管天数变更字段 逻辑 o + +首个天数变更字段 逻辑 o + + + + + + + +#### + +#### 旧版成都 + +##### 首个招租期变更-增加天数 + +``` +合同LET_DAYS 和 LET_END_DATE +``` + +##### 托管招租期变更 + +``` +合同LET_DAYS(只在第一年改) 和 周期LET_DAYS 和 LET_END_DATE +``` + + + +#### 新版成都 + +##### 首个招租期变更-增加天数 + +``` +LET_END_DATE +``` + +##### 托管招租期变更 + +``` +LET_END_DATE +``` + + + + + + + +--- + +#### 119934 【广州park】【需求】数据看板新增海山项目 + +houseKeeper/queryProjectList + +看板 houseKeeper/queryDataBoardList + + + + + +--- + +#### 120154 【生产问题】FY1000166590签约问题 + + + +// *******120154 UPDATE BY LHTH 2026-5-22 START ******* +// *******120154 UPDATE BY LHTH 2026-5-22 END ******* + + + +太原20260108-20260310 这段时间有问题 + +```sql +signatory是1000300370001 1000300370004 1000300370006 1000300370007 +但是有 AgentPeople AgentCertificateType AgentCertificateNo +AgentPhoneNo AgentMail AgentAddress + +select contractcode,createtime,contractstate,CHECKSTATE,agentpeople,agentcertificatetype,agentcertificateno,agent_address,agent_mail,agent_phone_no +from wk_sf_contract where signatory in ('1000300370001','1000300370004','1000300370006','1000300370007') and (AgentPeople is not null or AgentPeople is not null or AgentPeople is not null) order by createtime; +``` + +杭州20260119-现在 这段时间有问题 + +```sql +signatory是1000300170007 1000300170010 + +select contractcode,createtime,contractstate,CHECKSTATE,agentpeople,agentcertificatetype,agentcertificateno,agent_address,agent_mail,agent_phone_no +from wk_sf_contract where signatory in ('1000300170007','1000300170010') and (AgentPeople is not null or AgentPeople is not null or AgentPeople is not null) order by createtime; +``` + + + +--- + +#### 120144 【需求】【26年6月初上线】关于委托提前续签签约周期限制的更改 + + + +// *******120144 UPDATE BY LHTH 2026-5-26 START ******* +// *******120144 UPDATE BY LHTH 2026-5-26 END ******* + + + + + +--- + +#### 120176 【优化】委托合同产权地址可录入字符调整 + + + +{'<'}%-- *******120176 UPDATE BY LHTH 2026-5-26 START *******--%> +{'<'}%-- *******120176 UPDATE BY LHTH 2026-5-26 END *******--%> + + + + + +--- + +#### 120265 【需求】【收房团队】房源相关功能与相寓+对接 + +// *******120265 UPDATE BY LHTH 2026-5-27 START ******* +// *******120265 UPDATE BY LHTH 2026-5-27 END ******* + +{'<'}%-- *******120265 UPDATE BY LHTH 2026-5-27 START *******--%> +{'<'}%-- *******120265 UPDATE BY LHTH 2026-5-27 END *******--%> + + + +// *******120265 UPDATE BY LHTH 2026-6-11 START ******* +// *******120265 UPDATE BY LHTH 2026-6-11 END ******* + + + +- [ ] 推荐列表有work吗? + +- [x] 房源管理菜单关闭 + +1. 私盘 公盘 录入 本来就关着 看生产吧 +2. 华熙有一个菜单列表的判断 , 可以删代码 + +- [ ] 推荐列表 + +1. 关闭旧推荐列表 , 新建crm推荐列表菜单 +2. 我记得要刷哪个字段 -- 看飞哥 +3. 日志表WIWJ_SYNC_HOUSE_LOG -- 谁加? +4. 还有个查不到人 去查ehr的 -- 标签给Y + +- [x] 推荐信息查询-运营团队 + +​ 关闭旧运营推荐列表 , 新建crm运营推荐列表菜单 --ok + +- [x] CRM对接-推荐房源校验接口(CX01) + +​ 加字典值,再看一下跟AMS的方法一不一样 + +- [x] CRM对接-房源联系人推荐信息同步接口(CRM02) + +​ 城市字典值 , 其他不用改 + + + +##### 委托补充协议签署权限调整 + +- [ ] 开通相寓管家录入权限 + +- [ ] 修改委托所属人之后 , 走流程看哪里不行 +- [ ] 之前的上级是否需要关闭? + + + +- [x] 101改回104 + + + + + +--- + +#### 120283 【需求】【收房团队】委托补充协议签署权限调整 + + + +// *******120283 UPDATE BY LHTH 2026-5-29 START ******* +// *******120283 UPDATE BY LHTH 2026-5-29 END ******* + +{'<'}%-- *******120283 UPDATE BY LHTH 2026-5-29 START *******--%> +{'<'}%-- *******120283 UPDATE BY LHTH 2026-5-29 END *******--%> + + + + + +--- + +#### 120482 【需求】【26年5月31日替换】相寓优选2.0产品首年、非首年招租期天数调整 + + + +// *******120482 UPDATE BY LHTH 2026-5-28 START ******* +// *******120482 UPDATE BY LHTH 2026-5-28 END ******* + +{'<'}%-- *******120482 UPDATE BY LHTH 2026-5-28 START *******--%> +{'<'}%-- *******120482 UPDATE BY LHTH 2026-5-28 END *******--%> + + + + + +##### work + +初始化: 大于30天的 小于5000租金 给30 + +下拉列表: 是优选且租金不为空(和0) 小于5000给30 小于8000给30,45 大于8000给30,45,60 + +最大租金: 小于5000给30 小于8000给30,45 大于8000给30,45,60 + + + + + + + + + + + + + + + + + +1002000050001 + + + + + + + + + +##### 带显卡 + +主板+cpu : i3-12100F 或者 i5-12400F 或者 r5-5600 带wifi的1300元左右 +显卡 : 6500XT 900-1000元 +内存 : 8g*2 600元左右 +固态 : 512g 500元左右 +电源 : 500w 200元左右 +散热 : 百元内 +机箱 : 百元 +总计 : 3700 + + + +##### 不带显卡 + +主板+cpu : i3-12100 或者 r5-5600G 带wifi的1400元左右 +内存 : 8g*2 600元左右 +固态 : 512g 500元左右 +电源 : 300w 100-200元 +散热 : 百元内 +机箱 : 百元 +合计 : 2900 + + + + + + + + + + + +Websocket is already in CLOSING or CLOsED state. 关闭后还在发消息 + +Uncaught InvalidstateError: Failed to execute 'send' on 'WebSocket':Still in CONNECTING state. 正在连接中就发送消息 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +100:初始化列表 + 绑定用户信息->给所有用户发自己上线的信息(未脱敏)->修改登录状态->重置会员信息->查询发送者是自己的聊天记录,查询接收者是自己的聊天记录->合并两个聊天记录并排序(500条以上不排)->查所有未读的聊天记录->返回聊天列表和未读数量 +0:修改未读消息为已读 +1:发消息 +3:获取历史消息->无创建时间查最后10条->有创建时间按时间往上查10条 +4:陌生人查询 删掉了 +5:删除联系人->物理删除这俩人的聊天记录 +6:退出登录->修改自己为已离线 close_status=1 is_online=0 +20:管理员修改用户信息 +99886:修改为隐身 +99885:修改为上线 +99881:心跳 +客户端断开 + + + +100: + ->10 查不到人 + ->4 给所有人发上线通知 + ->0 给自己的聊天列表和未读数量 +1: + ->7 余额不足 + ->1 消息发给自己 + ->1 消息发给别人 +3: + ->3 给自己历史消息 +4: + ->5 不知道删掉了 +5: + ->6 删除聊天记录成功信息 +6: + ->4 给所有人发离线通知 +20: + ->20 给用户发送他的信息,成功后需要给管理员传回信息 +99886: + ->4 给所有人发离线通知 +99885: + ->4 给所有人发上线通知 +99881: + ->99881 心跳 +客户端断开: + ->4 给所有人发上线/离线通知 + + + + + + + + + + + diff --git a/docs/2026开发笔记/26-6开发笔记.md b/docs/2026开发笔记/26-6开发笔记.md new file mode 100644 index 0000000..b52ac8c --- /dev/null +++ b/docs/2026开发笔记/26-6开发笔记.md @@ -0,0 +1,621 @@ +--- +sidebar_position: 6 +title: 26-6开发笔记 +--- +# 笔记6月 + +#### 120631 【收房团队】AMS和CBS接口调整 + +// *******120631 UPDATE BY LHTH 2026-6-2 START ******* +// *******120631 UPDATE BY LHTH 2026-6-2 END ******* + + + + + +#### + +--- + +#### 119075 【生产问题】XW10458541审核通过,付款计划状态还是待审核--重复提交校验 + +// *******119075 UPDATE BY LHTH 2026-6-5 START ******* +// *******119075 UPDATE BY LHTH 2026-6-5 END ******* + + + + + +{'<'}%-- *******120631 UPDATE BY LHTH 2026-6-4 START *******--%> +{'<'}%-- *******120631 UPDATE BY LHTH 2026-6-4 END *******--%> + + + + + +``` +cropay.com +paypal.com +baypay.com +ipasspay.biz +``` + + + + + + + + + +--- + +#### 120862 【收房团队】委托产品取得方式调整 + +// *******120862 UPDATE BY LHTH 2026-6-9 START ******* +// *******120862 UPDATE BY LHTH 2026-6-9 END ******* + +{'<'}%-- *******120862 UPDATE BY LHTH 2026-6-9 START *******--%> +{'<'}%-- *******120862 UPDATE BY LHTH 2026-6-9 END *******--%> + +``` +EstimateProductRel +WIWJ_ESTIMATE_PRODUCT_REL +``` + + + + + + + + + + + + + +--- + +#### 合同pdf下载 /mobileAPI/v4_0/owner/contracts/contractViewPage + +``` +isShowButton +{电子签}且{财务待审核 或 审核已通过} +``` + +协议pdf下载 /mobileAPI/v4_0/agreement/agreementList + +``` +showDownBtn +{电子签}且{财务审核已通过} +``` + +交割单pdf下载 /mobileAPI/v4_0/property/isShowUpLoadButton + +``` +Y/N +上海: {审核已通过} +杭州: {审核已通过}且{来源非AIHOME} +``` + +解约pdf下载 /mobileAPI/v4_0/owner/contracts/contractViewPage + +``` +downloadButton +{电子签}且{审核已通过} +``` + +pdf下载时点 +合同: 财务待审核 或 审核已通过 +协议: 财务审核已通过 +交割单: 审核已通过 +解约: 审核已通过 + + + + + + + +--- + +#### 120883 【需求】告知催缴中台是否为优选合同 + + + +```sql +create or replace FUNCTION IS_CONTRACT_XYYX ( + p_city_code IN VARCHAR2, + p_ams_contract_id IN NUMBER +) RETURN VARCHAR2 --120883 LHTH 2026-6-9 add +IS + v_result VARCHAR2(1) := 'N'; + v_product_id VARCHAR2(50); +BEGIN + BEGIN + SELECT CASE + WHEN p_city_code = 'beijing' THEN + (SELECT epr.PRODUCT_ID FROM bjtest1.WIWJ_ESTIMATE_PRODUCT_REL epr, wk_sf_contract sf + WHERE epr.id = sf.product_code AND sf.CITY_ID = p_city_code AND sf.AMS_ID = p_ams_contract_id AND ROWNUM = 1) + WHEN p_city_code = 'taiyuan' THEN + (SELECT epr.PRODUCT_ID FROM tycs.WIWJ_ESTIMATE_PRODUCT_REL epr, wk_sf_contract sf + WHERE epr.id = sf.product_code AND sf.CITY_ID = p_city_code AND sf.AMS_ID = p_ams_contract_id AND ROWNUM = 1) + WHEN p_city_code = 'hangzhou' THEN + (SELECT sf.product_id FROM wk_sf_contract sf WHERE sf.CITY_ID = p_city_code AND sf.AMS_ID = p_ams_contract_id AND ROWNUM = 1) + WHEN p_city_code IN ('chengdu2', 'wuhan2', 'shanghai', 'suzhou', 'nanjing', 'tianjin', 'zhengzhou') THEN + (SELECT sf.product_item FROM wk_sf_contract sf WHERE sf.CITY_ID = p_city_code AND sf.AMS_ID = p_ams_contract_id AND ROWNUM = 1) + END INTO v_product_id + FROM DUAL; + EXCEPTION + WHEN NO_DATA_FOUND THEN + v_product_id := NULL; + END; + + v_result := CASE + WHEN p_city_code = 'taiyuan' AND v_product_id = 'PRODUCT_000007' THEN 'Y' + WHEN p_city_code = 'beijing' AND v_product_id = 'PRODUCT_000068' THEN 'Y' + WHEN p_city_code = 'hangzhou' AND v_product_id = 'PRODUCT_000075' THEN 'Y' + WHEN p_city_code IN ('chengdu2', 'wuhan2') AND v_product_id = 'PRODUCT_000004' THEN 'Y' + WHEN p_city_code IN ('shanghai', 'suzhou', 'nanjing', 'tianjin', 'zhengzhou') + AND v_product_id IN ('1000100590010', '1000100590009') THEN 'Y' + ELSE 'N' + END; + + RETURN v_result; +END; + +----------------------------------------------------------------------- +select CITY_ID,count(0) from wk_sf_contract group by CITY_ID; +select * from WIWJ_ESTIMATE_PRODUCT_REL; +select * from wk_sf_contract where product_item is not null; +----------------------------------------------------------------------- +``` + +``` +INSERT INTO COM_CONTRACT_XYYX_CONFIG VALUES('beijing','PRODUCT_000068'); +INSERT INTO COM_CONTRACT_XYYX_CONFIG VALUES('hangzhou','PRODUCT_000075'); +INSERT INTO COM_CONTRACT_XYYX_CONFIG VALUES('taiyuan','PRODUCT_000007'); +INSERT INTO COM_CONTRACT_XYYX_CONFIG VALUES('chengdu2','PRODUCT_000004'); +INSERT INTO COM_CONTRACT_XYYX_CONFIG VALUES('wuhan2','PRODUCT_000004'); +INSERT INTO COM_CONTRACT_XYYX_CONFIG VALUES('shanghai','1000100590009'); +INSERT INTO COM_CONTRACT_XYYX_CONFIG VALUES('shanghai','1000100590010'); +INSERT INTO COM_CONTRACT_XYYX_CONFIG VALUES('suzhou','1000100590010'); +INSERT INTO COM_CONTRACT_XYYX_CONFIG VALUES('nanjing','1000100590010'); +INSERT INTO COM_CONTRACT_XYYX_CONFIG VALUES('tianjin','1000100590009'); +INSERT INTO COM_CONTRACT_XYYX_CONFIG VALUES('tianjin','1000100590010'); +INSERT INTO COM_CONTRACT_XYYX_CONFIG VALUES('zhengzhou','1000100590010'); +``` + + + +--- + +#### 120493 【需求】因无纸化签约合规要求, 无纸化签约相关的修改 + +// *******120493 UPDATE BY LHTH 2026-6-13 START ******* +// *******120493 UPDATE BY LHTH 2026-6-13 END ******* + +- [x] 实名认证相关--承租 +- [ ] 签字前一页判断 : 实名认证跳转 +- [ ] 签字前一页判断 : 实名认证信息是否与合同内容一致 一致则刷脸 ,不一致提示且返回列表页 +- [ ] 签字前一页判断 : 非身份证/永久留居身份证/港澳台往来内地通行证 不可电子签,提示“当前证件类型不支持电子签,如需继续签署,请联系您的管家”, 页面停留在当前页面。 + +--- + +#### 120772 【合规性】所有使用电子签名及盖章的地方改用e签宝服务 + +// *******120772 UPDATE BY LHTH 2026-6-13 START ******* +// *******120772 UPDATE BY LHTH 2026-6-13 END ******* + +- [x] 签字最顶部校验 用户id -- 协议有 + +- [x] 签字和签章顺序调换 + +- [x] 签字修改为用最新的方法 + +- [x] 要catch异常 + +- [x] 大字11,白字8, 有横线的 比如框是20 那就比框高2 , 框是17,就比框高5 + +- [x] 大字11,白字8, 无横线的 白字最左下角在大字的中间就行 + +- [ ] 改过思源字体的 需要用思源的白字 + + + + + +前置 : app中台 一次性sql插入(一个是用户表id,222是固定的) + +```sql +insert into XY_CUSTOMER_FLOW_REL (ID, CUSTOMER_ID, FLOW_ID, CREATE_TIME, LAST_MODIFY_TIME) +values (SEQ_CUSTOMER_FLOW_REL.NEXTVAL, '1301', '222', null, null); + +insert into XY_CUSTOMER_FLOW_REL (ID, CUSTOMER_ID, FLOW_ID, CREATE_TIME, LAST_MODIFY_TIME) +values (SEQ_CUSTOMER_FLOW_REL.NEXTVAL, '23545', '222', null, null); +``` + + + +##### 上线顺序:北京、杭州、上海、苏州、天津、南京、郑州、太原、无锡、成都直营、武汉直营、广州直营、广州PARK + + + +##### 杭州测试协议 + +```properties +收款账户变更协议 +收款账户变更协议新版 +委托和解协议 +委托和解协议新版 +租赁房屋空气质量承诺书 +《杭州相寓资产管理服务合同》补充协议 +《杭州相寓资产管理服务合同》补充协议新版 +《杭州相寓资产管理服务合同》补充协议相寓优选 +《杭州相寓资产管理服务合同》补充协议相寓优选新版 +``` + +##### 上海测试协议 + +```properties +收款账户变更协议 +《上海相寓资产管理服务合同》补充协议 +相寓业主解约通知书--只有业主 +``` + +##### 天津 + +```properties +收款账户变更协议 +《相寓资产管理服务合同》补充协议 1.1.1/1.2.1 +《相寓资产管理服务合同》补充协议 新版 +``` + +##### 南京 + +```properties +收款账户变更协议 +《相寓资产管理服务合同》补充协议 +委托和解协议 +``` + +##### 郑州 + +```properties +收款账户变更协议 历史v2 +《相寓资产管理服务合同》补充协议 +``` + +##### 苏州 + +```properties +收款账户变更协议 +《相寓资产管理服务合同》补充协议 优选 +《相寓资产管理服务合同》补充协议 非优选 +``` + +##### 太原 + +```properties +收款账户变更协议 +《相寓资产管理服务合同》补充协议 优选 +《相寓资产管理服务合同》补充协议 非优选 +``` + +##### 无锡 + +```properties +收款账户变更协议 +变更补充协议 +相寓空置期租金免除补充协议 +``` + +##### 成都直营 + +```properties +收款账户变更协议 +《相寓资产管理服务合同》补充协议 优选 +《相寓资产管理服务合同》补充协议 非优选 +相寓疫情防控期间租金支付补充协议 +``` + +##### 广州直营 + +```properties +收款账户变更协议 +《相寓资产管理服务合同》补充协议 +相寓疫情防控期间租金支付补充协议 +``` + +##### 武汉直营 + +```properties +收款账户变更协议 +《相寓资产管理服务合同》补充协议 优选 +《相寓资产管理服务合同》补充协议 非优选 +``` + + + +--- + +#### 120265 【需求】【收房团队】房源相关功能与相寓+对接 + + + +// *******120265 UPDATE BY LHTH 2026-6-15 START ******* +// *******120265 UPDATE BY LHTH 2026-6-15 END ******* + + + +房源: 只有房源编号 + +小区: 只填小区 + +楼栋: 填小区和buildhouseid + + + +传房源过来 + +--- + +#### 121140 【相寓app】【委托合同列表】港澳台已经认证的委托合同,对应的认证信息是三种类型的任意一种没有自动绑定到委托合同列表去展示出来 + + + +// *******121140 UPDATE BY LHTH 2026-6-16 START ******* +// *******121140 UPDATE BY LHTH 2026-6-16 END ******* + +``` +合同: + 1013304 + +实名认证: + 1013397 + 1013398 + 1013399 +``` + + + + + + + + + +--- + +写用例注意 + +护照不能电子签了 + +pc+work互相提审, 一级和二级页面校验,按钮重复点击 + +收房审批 注意驳回后增量和减量后 审批页展示(work+ams) + +每次驳回注意新表的存值 + +委托数据对比 work和ams单独提交的情况,各种节点都要看 + +附件要代入这里的附件,共有人的情况 只给业主带 , 旧合同以及打印完成未生成附件的情况下 附件不能代入 + + + + + + + +VIEW_CF_CONTRACT_USER_REL_ + + + + + + + + + + + + + + + + + + + + + +令某 + +男 + +汉 + +1985/07/12 + +北京市昌平区 + +110101198507123456 + +北京市昌平区公安局 + +2020.01.01-2030.01.01 + + + +--- + +#### 120687 【生产问题】org.common.core.web.ErrorInterceptor 后台报异常(- ORA-12899: value too large for column "HANGZHOUNEW"."WIWJ_AGREEMENT_DETAIL_INFO"."VALUE" (actual: 3785, maximum: 1000)) + +// *******120687 UPDATE BY LHTH 2026-6-18 START ******* +// *******120687 UPDATE BY LHTH 2026-6-18 END ******* + +{'<'}%-- *******120687 UPDATE BY LHTH 2026-6-18 START *******--%> +{'<'}%-- *******120687 UPDATE BY LHTH 2026-6-18 END *******--%> + + + +- [x] 现委托人:30汉字 +- [x] 产权人变更为:30汉字 +- [x] 储蓄卡开户人:30汉字 +- [x] 证件编号:30数字 +- [x] 证件号码:30数字 +- [x] 储蓄卡账号:30数字 +- [x] 乙方通讯地址:60汉字 +- [x] 产权地址变更为:60汉字 + +``` +aaaaaaaaaabbbbbbbbbbcccccccccod +aaaaaaaaaabbbbbbbbbbccccccccco +aaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbcccccccccoaaaaaaaaaabbbbbbbbbbccccccccco +``` + +旧版有个邮编 + +乙方联系电话:(座机) -- 30 + +(其他联系电话) -- 30 + +``` +9999999.99 +手机是11 +``` + + + + + + + +--- + +#### 121258 【南京测试】分租的递增合同里递增协议少个签章 + + + +// *******121258 UPDATE BY LHTH 2026-6-20 START ******* +// *******121258 UPDATE BY LHTH 2026-6-20 END ******* + + + +--- + +#### 121256 【优化】委托合同录入判断续签条件优化 + +// *******121256 UPDATE BY LHTH 2026-6-22 START ******* +// *******121256 UPDATE BY LHTH 2026-6-22 END ******* + + + +##### 优选续直选 + +优选是续签 : 评估为续签 , 校验 + +优选是新签且有价格周期 : 评估为续签 , 校验 + +优选是新签且无价格周期 : 评估为新签 , 不校验 + +##### 优选续优选 + +走原需求逻辑 + +##### 直选续直选 + +走原逻辑 + + + +评估单新签 + +业主续共有人 , 业主信息不一致 , 业主跟第二份共有人信息一致 + + + + + + + + + +#### 优选续非优选 / 非优选续非优选 + +评估单选择新签 -> 校验1-5判断合同为新签 -> 正常签约 + +评估单选择新签 -> 校验1-5判断合同为续签 -> 提示校验内容,卡流程 + +评估单选择续签 -> 校验1-3判断合同为新签 -> 正常签约 + +评估单选择续签 -> 校验1-3判断合同为续签 -> 正常签约 + +#### 优选续优选 + +评估单不能选择新续签 -> + + + +AMS保存/打印/推送APP -> 先校验后保存 -> 没保存上 + +work保存/推送APP -> 先保存, 被校验住抛异常, 事务回滚 -> 没保存上 + + + +--- + +#### 120933 【需求】精装相寓产品开通委托合同补充协议录入 + + + +--- + +#### 120948 【需求】《上海相寓资产管理服务合同》协议审批流变更 + +// *******120948 UPDATE BY LHTH 2026-6-29 START ******* +// *******120948 UPDATE BY LHTH 2026-6-29 END ******* + + + + + +--- + +#### 120449 【需求】关于AMS系统去掉管家管辖范围逻辑的需求 + + + +// *******120449 UPDATE BY LHTH 2026-6-30 START ******* +// *******120449 UPDATE BY LHTH 2026-6-30 END ******* + +{'<'}%-- *******120449 UPDATE BY LHTH 2026-6-30 START *******--%> +{'<'}%-- *******120449 UPDATE BY LHTH 2026-6-30 END *******--%> + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/2026开发笔记/26-7开发笔记.md b/docs/2026开发笔记/26-7开发笔记.md new file mode 100644 index 0000000..9243623 --- /dev/null +++ b/docs/2026开发笔记/26-7开发笔记.md @@ -0,0 +1,663 @@ +--- +sidebar_position: 7 +--- + +# 笔记7月 + + + +啊 + +#### 120538 【生产问题】YW10482086录不了《杭州相寓资产管理服务合同》补充协议 + +``` +// *******120538 UPDATE BY LHTH 2026-7-1 START ******* +// *******120538 UPDATE BY LHTH 2026-7-1 END ******* + +<%-- *******120538 UPDATE BY LHTH 2026-7-1 START *******--%> +<%-- *******120538 UPDATE BY LHTH 2026-7-1 END *******--%> +``` + + + + + + + +--- + +#### 120611 【成都】普通相寓合同规则调整 + +``` +// *******120611 UPDATE BY LHTH 2026-7-2 START ******* +// *******120611 UPDATE BY LHTH 2026-7-2 END ******* +``` + + + + + +第一页不改 + +- [x] 内容全改 + +附件一不改 + +- [x] 附件二改 + +附件三不改 + +附件四不改 + +- [ ] 附件五改 + +附件六不改 + +- [ ] 附件七改 + + + + + +--- + +#### 120859 【需求】相寓优选产品托管招租期不收取资产管理费 + +``` +// *******120859 UPDATE BY LHTH 2026-7-6 START ******* +// *******120859 UPDATE BY LHTH 2026-7-6 END ******* + +<%-- *******120859 UPDATE BY LHTH 2026-7-6 START *******--%> +<%-- *******120859 UPDATE BY LHTH 2026-7-6 END *******--%> +``` + + + +``` +// *******121517 UPDATE BY LHTH 2026-7-7 START ******* +// *******121517 UPDATE BY LHTH 2026-7-7 END ******* +``` + + + + + +--- + +#### 121626 【成都直营】【需求】优选委托补充协议可签署时点变更,同杭州需求120538 + +``` +// *******121626 UPDATE BY LHTH 2026-7-7 START ******* +// *******121626 UPDATE BY LHTH 2026-7-7 END ******* +``` + + + +--- + +#### 121355 采暖费测试 + + + +还得新旧都测 + +/houseManage/housePrivate!showEvaluateEstimateLogTab.action?cbsHouseCode=547114825&buildingHouseId=75906969 + +原 + +``` +1.物业费 + 同付款计划一起生成 + 合同1: 2026-7-1 - 2026-7-31 + 合同2: 2026-8-10 - 2026-9-9 + 物业费1: 2026-7-1 - 2026-7-31 + 物业费2: 2026-8-1 - 2026-9-9 +2.采暖费 + 同付款计划一起生成 + 预计付款日1:开始日在采暖季 用首期房租预计付款日 + 预计付款日2:招租期期间有采暖费 + 固定付款日3:承租每个月周期的开始日 +``` + +现 + +``` +1.物业费 + 同付款计划一起生成 + 合同1: 2026-7-1 - 2026-7-31 + 合同2: 2026-8-10 - 2026-9-9 + 物业费1: 2026-7-1 - 2026-7-31 + 物业费2: 2026-8-10 - 2026-9-9 +2.采暖费 + 同付款计划一起生成 +``` + + + +解约删除未付款的付款单, 如果承租实际结束日在这条付款计划的中间 也得删 + +且 承租编号=当前解约的承租 + + + +--- + +#### 121707 【需求】【全国】相寓优选2.0增加手动操作招租失败权限 + +``` +// *******121707 UPDATE BY LHTH 2026-7-14 START ******* +// *******121707 UPDATE BY LHTH 2026-7-14 END ******* +``` + +``` +<%-- *******121707 UPDATE BY LHTH 2026-7-14 START *******--%> +<%-- *******121707 UPDATE BY LHTH 2026-7-14 END *******--%> +``` + + + +1. 确认招租失败 按钮 , 经纪人 , 经纪人上级 -- 按钮,菜单 + +2. 非解约中 且 招租失败标签 且 招租截止日小于委托实际结束日 √ + + --非解约中 √ + + --招租截止日\<委托实际结束日 √ + + ----优选2 √ + + ----招租截止日有值 √ + + ----当前日期>招租截止日 √ + + ----不存在承租实际结束日>当前日期 的非撤单 且 非作废 且 提交过风控审核 的承租合同 √ + + ----非已解约,非已续约 √ + + ``` + “招租失败”标签显示,符合下述所有条件时显示: + 1)委托合同产品为“相寓优选2.0” + 2)招租截止日有值且当前日期>招租期截止日 + 3)不存在承租实际结束日>当前日期的有效承租 + 注:有效承租合同:非撤单且非作废且提交过风控审核的承租合同 + 4)委托合同状态非已解约、已续约 + ``` + +3. 点击后触发招租失败定时任务处理 , 排除a条件 , 筛选合同是自己 -- 旧方法 √ + +4. “操作成功,委托合同实际结束日已变更。” , “操作失败,失败原因为\{获取失败原因,如果为多个使用;分开}” --新action方法 + +5. 部分城市告知cbs -- 北京有,杭州有,太原有,南京苏州天津有 郑州无,直营无? + +6. 成功后写合同履历 "手动操作招租失败,委托合同实际结束日已变更" -- 履历 √ + + + + + +太原:《相寓资产管理服务合同》补充协议 {收房维护人 , 租赁区副总监} + +南京:《南京相寓资产管理服务合同》补充协议 {相寓主管 , 相寓区域经理} + +苏州:《苏州相寓资产管理服务合同》补充协议 {相寓主管 , 相寓经理} + +天津:《天津相寓资产管理服务合同》补充协议 {相寓主管 , 相寓区域经理} + +郑州:《郑州相寓资产管理服务合同》补充协议 {经纪人 , 店经理} + +北京:《北京相寓资产管理服务合同》补充协议 {经纪人 , 商圈经理} + +杭州:《杭州相寓资产管理服务合同》补充协议 {租赁经纪人 , 业务主任} + +武汉直营:《武汉相寓资产管理服务合同》补充协议 {综合管家 , 业务经理} + +成都直营:《成都相寓资产管理服务合同》补充协议 {资源经理(原经纪人) , 区域经理(原店经理)} + + + + + +--- + +#### 121485 【需求】委托黑名单流程优化 + +``` +// *******121485 UPDATE BY LHTH 2026-7-16 START ******* +// *******121485 UPDATE BY LHTH 2026-7-16 END ******* +``` + +``` +<%-- *******121485 UPDATE BY LHTH 2026-7-16 START *******--%> +<%-- *******121485 UPDATE BY LHTH 2026-7-16 END *******--%> +``` + +listContractBlackInfo 列表 + +invalidBlackInfo.jsp 列表无效 HouseInfoAction.saveInvalidBlack + +addWTBlackPage.jsp 列表新增 HouseInfoAction.saveBlackInfo + +wtBlackApplyPage.jsp 加入/解除 申请(work只有申请) HouseInfoAction.commitBlackApply + +驳回后修改页是哪个? + + + +申请类型 1:新增;2:解除 + +屏蔽类型 1:房源;2:楼栋;3:小区 4承租 + +- [x] 加入黑名单审批流变更 +- [x] 看生产页面分配给谁了 /basicsdate/houseInfo!listContractBlackInfo.action +- [x] 列表数据展示范围 : 要开给管家和经理 , 可以查看自己提交的数据 +- [x] 看申请页权限分配给谁了 /basicsdate/houseInfo!wtBlackApplyPage.action?operateKbn=I +- [x] 申请页面 管家只能屏蔽房源 , 经理只能屏蔽小区和楼栋 +- [x] 申请校验 管家时 判断是否在管辖范围内 + +表 + +WTBLACKLIST + +WIWJ_SF_BLACK_APPLY + + + +默认有效数据查询时间 : 2132 ms + +填写申请人查询时间 : 17503ms + +填写申请人查询时间(修改后) : 17733 ms + + + +sql: + +黑名单关联房源可查出 房源,小区,楼号 + +黑名单关联楼栋可查出 小区,楼号 + +黑名单关联小区可查出 小区 + + + +页面查询: + +小区>楼号>房源 + +小区要筛选房源,小区,楼号 + +楼栋要筛选房源,楼号 + +房源要筛选房源 + + + + + + + + + +添加的话 用UpdateUser 解除也看 : 关联WIWJ_SF_BLACK_APPLY + +- [ ] 可以提交新增和解除 , 如果别人新增了 , 我解除了 , 是不是我俩都能看到 , +- [ ] 现状审核完成后直接把审核人存进了黑名单的保存人 , 旧数据也要看的话 得刷数据 + +- [x] 这个页面的三个按钮: 新增,查看,无效 -- 全去掉 + +- [x] 屏蔽类型 加入要限制 , 解除也要限制 + +- [ ] 批处理是否会卡 + + + +##### 本地: + +typora修改文件 -> Docusaurus热加载 -> 最新页面(git手动/自动提交) + +Decap修改文件 -> Docusaurus热加载 -> 最新页面(git手动/自动提交) + +##### 云端 + +Decap修改文件 -> Docusaurus热加载/build -> 最新页面(git手动/自动提交) + +Decap提交git -> git回调Docusaurus -> Docusaurus热加载/build -> 最新页面 + + + +```sql +select wb.id,decode(wb.housecode,null,decode(wb.bid,null,'小区','楼栋'),'房源') blackType, + decode(wb.housecode,null,decode(wb.bid,null,pi3.projectname,tp2.projectname),tp.projectname) proname, + decode(wb.housecode,null,decode(wb.bid,null,'',tp2.bname),tp.hbname) bname, + wb.housecode, + describe, + decode(isvalid,'Y','有效','无效') isvalid,tp.houseid, + ADD_REASON +from WTBLACKLIST wb +left join (select hi.id houseid, hi.housecode,pi.projectname,pi.id hpid,bi.name hbname,bi.id hbid + from wk_jc_house_info hi + left join wk_jc_building_house bh on to_char(bh.id)=hi.buildinghouseid + left join wk_jc_building_info bi on bi.id = bh.bid + left join wk_jc_project_info pi on pi.id = hi.projectinfoid + ) tp on tp.housecode = wb.housecode +left join ( + select bi2.id bbid,bi2.name bname,pi2.id bpid,pi2.projectname + from wk_jc_building_info bi2 + left join wk_jc_project_info pi2 on pi2.id = bi2.sid + ) tp2 on tp2.bbid=wb.bid +left join wk_jc_project_info pi3 on pi3.id = wb.projectinfoid +where 1=1 +``` + +``` +--错误示例 +" SELECT" +" wb.id, wb.housecode, wb.describe, wb.add_reason," +" CASE WHEN wb.housecode IS NOT NULL THEN '房源' WHEN wb.bid IS NOT NULL THEN '楼栋' WHEN wb.projectinfoid IS NOT NULL THEN '小区' ELSE '' END AS blacktype," +" CASE WHEN wb.housecode IS NOT NULL THEN pi.projectname WHEN wb.bid IS NOT NULL THEN pi2.projectname WHEN wb.projectinfoid IS NOT NULL THEN pi3.projectname ELSE '' END AS proname," +" CASE WHEN wb.housecode IS NOT NULL THEN bi.name WHEN wb.bid IS NOT NULL THEN bi2.name ELSE '' END AS bname," +" DECODE(wb.isvalid, 'Y', '有效', '无效') isvalid, hi.id AS houseid" +" FROM wtblacklist wb" +" --房源" +" LEFT JOIN wk_jc_house_info hi ON hi.housecode = wb.housecode" +" LEFT JOIN wk_jc_project_info pi ON pi.id = hi.projectinfoid" +" LEFT JOIN wk_jc_building_house bh ON TO_CHAR(bh.id) = hi.buildinghouseid" +" LEFT JOIN wk_jc_building_info bi ON bi.id = bh.bid" +" --楼栋" +" LEFT JOIN wk_jc_building_info bi2 ON bi2.id = wb.bid" +" LEFT JOIN wk_jc_project_info pi2 ON pi2.id = bi2.sid" +" --小区" +" LEFT JOIN wk_jc_project_info pi3 ON pi3.id = wb.projectinfoid" +" WHERE 1=1" +``` + +测试不加索引 +全量 4秒 +筛选 17秒 + +测试加索引 +全量 2秒 +筛选 0.2秒 + +select count(0) from wk_jc_building_house; +CREATE INDEX WK_JC_BUILDING_HOUSE_IDX01 ON wk_jc_building_house(TO_CHAR(id)); +DROP INDEX WK_JC_BUILDING_HOUSE_IDX01; + +生产无索引 +全量 8秒 +筛选 3秒 + +--- + +#### 122148 【优化】Work端委托补充协议打印申请审核时点击查看协议文本需要查看协议文本内容 + +``` +// *******121485 UPDATE BY LHTH 2026-7-16 START ******* +// *******121485 UPDATE BY LHTH 2026-7-16 END ******* +``` + +getNoSignPdfElectronicAgreement + + + +北京:无 + +杭州:无打印申请 + +上海:无 + +无锡:无 + +太原:和解协议, 和解协议漏水 + +苏州:页面不显示没改 + +``` +szSfAgreementTemplateHJXY +suzhou + szSfAgreementTemplateHJXY +cfAgreementTemplateHJXY +suzhou + szSfAgreementTemplateHJXYLS +``` + +南京:和解协议, 和解协议漏水 + +天津:页面不显示没改 + +``` +tjSfAgreementTemplateHJXYLS +tjSfAgreementTemplateHJXYLSnew +tjSfAgreementTemplateHJXY +tjSfAgreementTemplateHJXYnew +``` + +郑州:和解协议, 和解协议漏水 + +成都直营:无 + +武汉直营:无 + +广州直营:无 + + + +北京, 上海, 无锡, 直营分支, 如果 + +非收房已改 + +太原已改 + + + +--- + +#### 122273 【需求】委托【录入法务诉讼】权限调整 + +``` +// *******122273 UPDATE BY LHTH 2026-7-21 START ******* +// *******122273 UPDATE BY LHTH 2026-7-21 END ******* +``` + +``` +<%-- *******122273 UPDATE BY LHTH 2026-7-21 START *******--%> +<%-- *******122273 UPDATE BY LHTH 2026-7-21 END *******--%> +``` + + + + + +--- + +#### 122248 【成都直营】【需求】【26年8月初上线】签署《成都相寓资产管理服务合同》补充协议时关闭“付款方式变更”区域 + +``` +<%-- *******122248 UPDATE BY LHTH 2026-7-21 START *******--%> +<%-- *******122248 UPDATE BY LHTH 2026-7-21 END *******--%> +``` + + + +--- + +#### 122328 【需求】变更打招租失败标签的逻辑 + +``` +// *******122328 UPDATE BY LHTH 2026-7-24 START ******* +// *******122328 UPDATE BY LHTH 2026-7-24 END ******* +``` + + + +428-85=343 + +--- + +#### 120013 【需求】【26年8月初上线】关于合同附件内容调整以及增加固定附件WORD版本 + +- [x] 签约类型新增“业主单位委托” -- 视为代理人委托 +- [x] 看代码各处取代理人的地方是否有问题 +- [x] 业主(未成年人) 新增 监护人姓名、监护人证件类型、监护人证件号码 字段 , 监护人可添加多个 +- [x] 业主死亡(有继承公证)OR业主死亡(无继承公证) 新增 继承人姓名、继承人证件类型、继承人证件号码 字段 , 继承人可添加多个 +- [x] 详情页 监护人 , 继承人 +- [x] 风控审核页 监护人 , 继承人 +- [x] work 签约类型新增“业主单位委托” -- 视为代理人委托 +- [x] work 编辑页 监护人 , 继承人 + + + + + +123456789012345678901234567890 + + + + + +```bash +npm install @orama/plugin-docusaurus-v3 +npm install @orama/orama @orama/tokenizers +npm install @orama/stopwords + +npm install @orama/searchbox patch-package +``` + +49 + +--- + +#### 122034 【需求】非相寓优选2.0产品签署委托补充协议变更“资产管理服务期限”时,风控审核通过后增加对付款计划相关的处理 + +``` +// *******122034 UPDATE BY LHTH 2026-7-30 START ******* +// *******122034 UPDATE BY LHTH 2026-7-30 END ******* +``` + + + +- [ ] 删除现有房行付款计划、 +- [ ] 重新生成房行付款计划、 +- [ ] 设置首期预计付款日。MAX(变更后委托开始日, 协议审核通过日期 + N工作日)N工作日同合同签约时的天数 +- [ ] 删除维修基金扣款单、房屋维护服务费, +- [ ] 重新生成维修基金扣款单、房屋维护服务费。 + + + + + +1、删除现有房行付款计划 wt + +2、按照本次变更后的周期重新生成房行付款计划 wt + +3、房行付款单下的维修基金(房屋维护服务费)wt、资产管理费删除 cw,重新生成 wt cw,重新挂靠 cw cw,挂靠规则同签约 + +4、房行付款单下的非维修基金、资产管理费、房屋维护服务费的扣款单款项,重新挂靠 cw + +5、重新生成的房行付款计划,协议风控审核通过后首期的预计付款日规则为 MAX(变更后委托开始日, 协议审核通过日期 + N工作日),N工作日同合同签约时的天数 wt + +##### 实际 + +1、删除现有房行付款计划 wt1 + +2、按照本次变更后的周期重新生成房行付款计划 wt1 + +3、房行付款单下的维修基金(房屋维护服务费)wt2、资产管理费删除 cw1,重新生成 wt1 cw1,重新挂靠 cw1 cw1,挂靠规则同签约 + +4、其他扣款单款项,重新挂靠 解绑cw1 cw1 + +5、重新生成的房行付款计划,协议风控审核通过后首期的预计付款日规则为 MAX(变更后委托开始日, 协议审核通过日期 + N工作日),N工作日同合同签约时的天数 wt1 + + + +资产管理费仅成都有 + + + +删除付款计划--保存 + +保存付款计划--保存 + +删除维修基金--保存 + +保存维修基金--保存 + +审核通过相关的逻辑 + +重置首期房租的预计付款日--审核通过 + +维修基金挂靠? + +扣款单已经挂扣 要删除掉吧? + + + +##### saveYQPlansList 比较 savePlansList + +不删旧付款计划 , 删除多余无用的判断 + +PAYABLEDATE,OCCURDATE + + + +设置付款总次数? + +如果付款日期比首次还早 , 那就设置成跟首次一样 + +保存付款计划 + +付款计划已审核 + +合并周期 生成维修基金 + + + +56.15 + +2.834 + +审核通过 + +``` +ContractMainInfoService.completeApproval +-> updateContractHouseFeeInfo +``` + +```js +$(function() { + let resultText = ''; + + $('table').each(function(index) { + let tableData = []; + + // 1. 提取表头 (thead) + let headers = []; + $(this).find('thead th').each(function() { + headers.push($(this).text().trim()); + }); + if (headers.length > 0) { + tableData.push(headers.join('\t')); + } + + // 2. 提取表体 (tbody) + $(this).find('tbody tr').each(function() { + let rowData = []; + $(this).find('td').each(function() { + let cellText = $(this).text().replace(/\s+/g, ' ').trim(); + rowData.push(cellText); + }); + tableData.push(rowData.join('\t')); + }); + + resultText += tableData.join('\n'); + + // 表格之间加空行 + if (index < $('table').length - 1) { + resultText += '\n\n'; + } + }); + + // 打印到控制台 + console.log('%c提取完成!右键下方字符串 -> Copy string contents:', 'color: green; font-weight: bold;'); + console.log(resultText); +}); +``` + diff --git a/docs/2026开发笔记/_category_.json b/docs/2026开发笔记/_category_.json new file mode 100644 index 0000000..9bf71ff --- /dev/null +++ b/docs/2026开发笔记/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "2026开发笔记", + "position": 3, + "link": { + "type": "generated-index", + "description": "无说明" + } +} diff --git a/docs/tutorial-extras/img/docsVersionDropdown.png b/docs/2026开发笔记/img/docsVersionDropdown.png similarity index 100% rename from docs/tutorial-extras/img/docsVersionDropdown.png rename to docs/2026开发笔记/img/docsVersionDropdown.png diff --git a/docs/Docusaurus资料/_category_.json b/docs/Docusaurus资料/_category_.json new file mode 100644 index 0000000..89b5fdc --- /dev/null +++ b/docs/Docusaurus资料/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Docusaurus资料", + "position": 99, + "link": { + "type": "generated-index", + "description": "无说明" + } +} diff --git a/docs/Docusaurus资料/cms构建说明.md b/docs/Docusaurus资料/cms构建说明.md new file mode 100644 index 0000000..85fbe59 --- /dev/null +++ b/docs/Docusaurus资料/cms构建说明.md @@ -0,0 +1,250 @@ +--- +title: cms构建说明 +sidebar_position: 10 +--- + +## cms + +### sveltia-cms + +``` +1.文件 +新增 static/admin/index.html sveltia CMS入口页,CDN方式 +新增 static/admin/config.yml sveltia全部配置 + +2.访问 +http://localhost:3000/admin/ +``` + + + +### decap-cms(仅本地) + +https://decapcms.org/docs/basic-steps/ + +``` +1.文件 +新增 static/admin/index.html Decap CMS入口页,CDN方式 +新增 static/admin/config.yml Decap全部配置 +修改 package.json 增加"cms": "npx decap-server" + +2.内容 +docs的文件要增加 title + +3.启动 +npx decap-server 或 npm run cms + +4.访问 +http://localhost:3000/admin/ +``` + +#### 已创建的文件 + +| 文件 | 说明 | +| ------------------------------------------------------------ | -------------------------------------- | +| [static/admin/index.html](vscode-webview://0ckeaenbrnfu1mc0gmsrksqv66drn38jfo32mrkm9h7l6l40fp43/static/admin/index.html) | Decap CMS 入口,从 CDN 加载 | +| [static/admin/config.yml](vscode-webview://0ckeaenbrnfu1mc0gmsrksqv66drn38jfo32mrkm9h7l6l40fp43/static/admin/config.yml) | 核心配置:backend、集合、媒体文件路径 | +| [server.js](vscode-webview://0ckeaenbrnfu1mc0gmsrksqv66drn38jfo32mrkm9h7l6l40fp43/server.js) | Gitee OAuth 认证代理服务(生产环境用) | +| [.env.example](vscode-webview://0ckeaenbrnfu1mc0gmsrksqv66drn38jfo32mrkm9h7l6l40fp43/.env.example) | 环境变量模板 | + +#### Git 仓库 + +已本地提交并推送到 `git@gitee.com:lhth/testdecap.git` + +有一个新的更改(导航栏链接改到 Gitee)在本地但被拦截了,你需要手动推一下: + +```bash +cd "d:/projects/test/my-websitetest" +git push origin master +``` + +#### 架构说明 + +**当前配置(开发/测试):proxy backend** + +``` +浏览器 → Decap CMS → proxy:8081 → 本地 git repo → SSH → Gitee +``` + +运行方式: + +```bash +# 终端 1:启动 Docusaurus +npm start + +# 终端 2:启动 Decap 代理(在项目根目录) +npx decap-server + +# 访问 http://localhost:3000/admin/ 即可使用 CMS +``` + +> **注意**:Docusaurus 开发服务器的 SPA 路由会拦截 `/admin/` 路径。有两个解决办法: +> +> 1. 访问 `http://localhost:3000/admin/index.html` (可能仍会被拦截) +> 2. 用生产模式:`npm run build && npm run serve`,然后访问 `http://localhost:3000/admin/` ✅(已验证可行) + +#### 生产环境部署(Gitee OAuth) + +当你要部署到远程服务器时,需要: + +**1. 在 Gitee 创建 OAuth App** + +- 打开 https://gitee.com/oauth/applications +- 应用名称:`My Decap CMS` +- 回调地址:`https://你的域名.com/api/auth` +- 获取 `Client ID` 和 `Client Secret` + +**2. 部署认证服务** + +```bash +# 服务器上运行 +GITEE_CLIENT_ID=xxx GITEE_CLIENT_SECRET=xxx node server.js +``` + +或者部署到 Vercel/Cloudflare Workers 等 Serverless 平台。 + +**3. 修改 config.yml** 取消注释文末的生产环境配置,注释掉 proxy backend 部分(文件中已有注释说明)。 + +#### 内容集合 + +已配置两个集合: + +- **博客文章** (`blog/`) — Docusaurus 标准 `YYYY-MM-DD-title.md` 格式 +- **文档** (`docs/`) — Docusaurus 文档格式 + +你可以随时在 [static/admin/config.yml](vscode-webview://0ckeaenbrnfu1mc0gmsrksqv66drn38jfo32mrkm9h7l6l40fp43/static/admin/config.yml) 中增删字段或集合。 + +``` +浏览器 本地机器 Gitee + ┌─────────┐ ┌──────────────┐ ┌──────────┐ + │ Decap │──proxy──→ │ decap-server │──git──→ │ gitee.com│ + │ CMS UI │ HTTP:8081 │ (本地Node进程) │ SSH │ (你的仓库)│ + │ admin/ │ │ 读写本地git │ │ │ + └────┬────┘ └──────────────┘ └──────────┘ + │ + └── unpkg.com CDN (加载 decap-cms.js) +``` + + + +### tina-cms(卡) + +https://tina.io/docs/reference/config + +``` +1.npm install tinacms @tinacms/cli +2.tina/config.js +3.package.json + // scripts 里加 + "tina": "tinacms dev -c \"docusaurus start\"", +4.npm run tina + 自动生成tina/__generated__/ + ├── _graphql.json + ├── _lookup.json + ├── _schema.json + ├── client.ts + ├── config.prebuild.jsx + ├── frags.gql + ├── queries.gql + ├── schema.gql + ├── static-media.json + ├── types.js + └── types.ts +5.npm run tina +``` + + + +``` +# 官方提供标准版 +const branch = + process.env.NEXT_PUBLIC_TINA_BRANCH || + process.env.NEXT_PUBLIC_VERCEL_GIT_COMMIT_REF || + process.env.HEAD || + 'main'; + +export default defineConfig({ + branch, + // generated by TinaCloud + token: '', + // generated by TinaCloud + clientId: '', + build: { + publicFolder: 'public', + outputFolder: 'admin', + }, + schema: { + //Content model definition here... + }, + ui: { + previewUrl: (context) => { + // Use Vercel preview deployments based on branch names + return { url: `https://my-app-git-${context.branch}.vercel.app` }; + }, + }, + media: { + tina: { + publicFolder: 'public', + mediaRoot: 'uploads', + }, + }, + search: { + tina: { + indexerToken: process.env.TINA_SEARCH_TOKEN, + }, + }, +}); +``` + + + +```ts +import { defineConfig } from "tinacms"; + +export default defineConfig({ + branch: process.env.TINA_BRANCH || "master", + clientId: process.env.TINA_CLIENT_ID || "", + token: process.env.TINA_TOKEN || "", + build: { + publicFolder: "static", + outputFolder: "admin", + }, + media: { + tina: { + mediaRoot: "img", + publicFolder: "static", + static: true, + }, + }, + schema: { + collections: [ + { + name: "blog", + label: "博客", + path: "blog", + format: "md", + fields: [ + { type: "string", name: "title", label: "标题", isTitle: true, required: true }, + { type: "datetime", name: "date", label: "发布日期", ui: { dateFormat: "YYYY-MM-DD", timeFormat: false } }, + { type: "string", name: "tags", label: "标签", list: true, ui: { component: "tags" } }, + { type: "string", name: "description", label: "描述/摘要" }, + { type: "rich-text", name: "body", label: "正文", isBody: true }, + ], + }, + { + name: "docs", + label: "文档", + path: "docs", + format: "md", + fields: [ + { type: "string", name: "title", label: "标题", isTitle: true, required: true }, + { type: "number", name: "sidebar_position", label: "侧边栏位置" }, + { type: "string", name: "tags", label: "标签", list: true, ui: { component: "tags" } }, + { type: "rich-text", name: "body", label: "正文", isBody: true }, + ], + }, + ], + }, +}); +``` + diff --git a/docs/Docusaurus资料/docusaurus构建说明.md b/docs/Docusaurus资料/docusaurus构建说明.md new file mode 100644 index 0000000..3a0a2fc --- /dev/null +++ b/docs/Docusaurus资料/docusaurus构建说明.md @@ -0,0 +1,234 @@ +--- +title: docusaurus构建说明 +sidebar_position: 1 +--- + + +## Docusaurus 项目结构 +### 搭建流程 + +``` +1.初始化 +npx create-docusaurus@latest my-website classic + +2.启动 +npm start + +# 附 +好看的网站 https://ai-speaker.com/ +``` +### 修改内容 +``` +# 配置 +1.blog的预计阅读时间关,默认展示数量改成无限 +2.i18默认zh-Hans +3.colorMode默认浅色,不使用用户偏好色 + +# 样式 +1.表格样式 +2.代码块字体样式,java代码识别 + +# 其他 +1.editUrl 可以在本地打开typora +1.1先搞个注册表register-typora-protocol.reg 目标路径 typora-handler.wsf +1.2再wsf转换一下url编码,然后静默打开typora +2.新增了启动器start.vbs +``` + +### 增加一个docs页 + +``` +# docusaurus.config.ts + plugins: [ + [ + '@docusaurus/plugin-content-docs', + { + path: 'docs2', + routeBasePath: 'docs2', + sidebarPath: './sidebars.ts', + editUrl: 'typora://file/D:/projects/my-website/', + }, + ], + ], + + +themeConfig.navbar.items: +{ + type: 'docSidebar', + sidebarId: 'tutorialSidebar2', + docsPluginId: 'docs2', + position: 'left', + label: '文档2', +}, + +# sidebars.ts +tutorialSidebar2: [{type: 'autogenerated', dirName: '.'}], +``` + + + +## 一端多git-ssh + +``` +#生成ssh秘钥 +ssh-keygen -t ed25519 -C "haotiandev@outlook.com" -f ~/.ssh/id_ed25519_gitee + +#私钥 C:\Users\haoti\.ssh\id_ed25519_gitee + +#找到公钥 C:\Users\haoti\.ssh\id_ed25519_gitee.pub +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ5usext5BEGqdXEkwIgdOWZodGCMZqlOpMs7pmYuO3V haotiandev@outlook.com + +#把公钥在git后台配进ssh公钥里 + +#在C:\Users\haoti\.ssh 下创建config文件,写入 +# 个人 Gitee 账号 +Host gitee.com +HostName gitee.com +User git +IdentityFile ~/.ssh/id_ed25519_gitee +IdentitiesOnly yes + +#绑定git地址 +git remote add origin git@gitee.com:lhth/docusaurus.git + +#测试 +ssh -T git@gitee.com +``` + + + +## 完整项目地图 + +``` +my-website/ +│ +├── 📄 docusaurus.config.js ← 【核心】整个站点的总配置 +│ 标题、导航栏、页脚、主题、插件、国际化、深色模式……一切全局设置 +├── 📄 sidebars.js ← 文档侧边栏菜单的结构定义 +├── 📄 package.json ← 项目依赖 + npm 启动脚本 +│ +├── 📁 blog/ ← 博客系统 +│ ├── authors.yml ← 作者信息(头像、简介、社交链接) +│ ├── tags.yml ← 博客标签定义 +│ ├── 2021-08-26-welcome/ ← 博客可以是文件夹(含图片等资源) +│ ├── 2019-05-28-first-blog-post.mdx ← 单文件博客文章 +│ ├── 2019-05-29-long-blog-post.mdx ← 文件名格式:YYYY-MM-DD-标题.mdx +│ └── 2021-08-01-mdx-blog-post.mdx ← 用 Markdown + JSX 写作 +│ ↑ 自动生成:RSS 订阅、标签筛选页、文章归档页 +│ +├── 📁 docs/ ← 文档系统 +│ ├── intro.mdx ← 文档的首页 / 入口 +│ ├── tutorial-basics/ ← 一个文档章节(目录) +│ │ ├── _category_.json ← 章节配置:标签名、排序、是否折叠 +│ │ ├── congratulations.mdx +│ │ ├── create-a-blog-post.mdx +│ │ ├── create-a-document.mdx +│ │ ├── create-a-page.mdx +│ │ ├── deploy-your-site.mdx +│ │ └── markdown-features.mdx +│ └── tutorial-extras/ ← 另一个章节 +│ ├── _category_.json +│ ├── manage-docs-versions.mdx +│ ├── translate-your-site.mdx +│ └── img/ ← 文档里引用的图片 +│ ↑ 支持多版本管理(v1, v2, next……) +│ +├── 📁 src/ ← 自定义代码(React) +│ ├── pages/ ← 独立页面,文件会自动生成路由 +│ │ ├── index.js ← 【首页!】网站的主入口页 +│ │ ├── index.module.css ← 首页专属样式 +│ │ └── markdown-page.mdx ← 纯 Markdown 写页面 +│ ├── components/ ← 可复用的 React 组件 +│ │ └── HomepageFeatures/ ← 首页的"特性展示"区块组件 +│ └── css/ +│ └── custom.css ← 全局自定义样式(覆盖主题默认样式) +│ +├── 📁 static/ ← 静态资源(原封不动复制到最终网站根目录) +│ ├── img/ +│ │ ├── favicon.ico ← 浏览器标签页小图标 +│ │ ├── logo.svg ← 导航栏 Logo +│ │ ├── docusaurus-social-card.jpg ← 分享到社交媒体时的预览图 +│ │ ├── docusaurus.png +│ │ └── undraw_docusaurus_*.svg ← 首页的插画素材 +│ └── .nojekyll ← GitHub Pages 需要(告诉 GitHub 这不是 Jekyll 项目) +│ +├── 📁 .docusaurus/ ← 【自动生成】Docusaurus 内部缓存和构建产物 +│ │ ← 千万不要手动编辑!里面有个文件叫 +│ │ DONT-EDIT-THIS-FOLDER 就在提醒这一点 +│ │ ← 可以随时删掉(npm run clear), +│ │ 下次 npm start / build 会自动重建 +│ │ +│ ├── docusaurus.config.mjs ← 源配置编译后的版本 +│ ├── routes.js / routesChunkNames.json ← 站点路由表(代码分割用) +│ ├── registry.js ← 所有页面和组件的模块注册表 +│ ├── globalData.json ← 各插件暴露的全局运行时数据 +│ ├── i18n.json ← 国际化翻译数据 +│ ├── site-metadata.json ← 站点元信息 +│ ├── site-storage.json ← 持久化存储 +│ ├── client-modules.js ← 客户端模块入口 +│ │ +│ ├── docusaurus-plugin-content-docs/ ← 文档插件缓存 +│ │ ├── default/ +│ │ │ └── p/ ← 每个 .mdx 文档文件被编译成一个 JSON +│ │ │ ↑ 浏览器最终加载的就是这些 JSON +│ │ │ +│ ├── docusaurus-plugin-content-blog/ ← 博客插件缓存 +│ │ └── default/ +│ │ ├── blogMetadata-default.json ← 博客元数据 +│ │ ├── blog-post-list-prop-default.json +│ │ └── p/ ← 博客文章、标签页、归档页的编译产物 +│ │ +│ ├── docusaurus-plugin-content-pages/ ← 独立页面插件缓存 +│ ├── docusaurus-plugin-css-cascade-layers/ ← CSS 层级管理 +│ └── docusaurus-plugin-debug/ ← 调试页面 +│ +├── 📁 node_modules/ ← npm 安装的依赖包,不用关心里面 +│ +├── 📄 README.md ← GitHub 项目首页显示的说明 +├── 📄 README_tome.md ← 就是你现在看的这份笔记 +└── 📄 .gitignore ← Git 忽略规则 +``` + +--- + +## 各目录一句话速查 + +| 目录 / 文件 | 一句话 | +|---|---| +| `docusaurus.config.js` | 站点的全部配置,修改标题、导航、主题都在这 | +| `sidebars.js` | 文档侧边栏菜单怎么排 | +| `blog/` | 写博客,Markdown → 自动生成文章页 + RSS + 标签 | +| `docs/` | 写文档,Markdown → 自动生成带侧边栏的文档站 | +| `src/pages/` | 自己写 React 页面(首页就在这) | +| `src/components/` | 自己写 React 组件 | +| `src/css/custom.css` | 覆盖主题样式(改颜色、字体等) | +| `static/` | 放图片、favicon 等不需要构建的文件 | +| `.docusaurus/` | 内部缓存,别动,出问题就删掉重来 | +| `node_modules/` | 第三方依赖 | + +--- + +## 常用命令 + +| 命令 | 用途 | +|---|---| +| `npm start` | 启动开发服务器,自动打开浏览器,支持热更新 | +| `npm run build` | 生成生产环境静态文件到 `build/` 目录 | +| `npm run serve` | 本地预览构建后的产物 | +| `npm run clear` | 删除 `.docusaurus/` 缓存(出问题先试试这个) | +| `npm run deploy` | 部署到 GitHub Pages(需额外配置) | + +--- + +## 数据流概览(简化版) + +``` +你写的 Markdown(docs/ + blog/) + ↓ Docusaurus 编译 + .docusaurus/ 里面的 JSON + ↓ 浏览器加载 + 网站页面渲染 +``` + +- MDX = Markdown + JSX(可以在 Markdown 里直接写 React 组件) +- 所有页面最终都是 React 组件,但大多数情况下你只需要写 Markdown diff --git a/docs/Docusaurus资料/插件.md b/docs/Docusaurus资料/插件.md new file mode 100644 index 0000000..4ebcb34 --- /dev/null +++ b/docs/Docusaurus资料/插件.md @@ -0,0 +1,31 @@ +--- +title: 插件 +sidebar_position: 3 +--- + +## 官方社区提供 + +https://docusaurus.io/zh-CN/community/resources + +### 搜索 + +- `docusaurus-lunr-search`, `docusaurus-search-local`:它们是 `@easyops-cn` 的前身或同类,但没有明确的中文优化,不推荐。 +- `docusaurus-plugin-lunr`:这只是一个索引生成器,还需要自己集成 Lunr.js,太麻烦。 +- `typesense`, `meilisearch`, `markprompt`, `biel`:这些都是需要外部服务器的方案,对于“自己写笔记用”来说,架构太重了,不推荐。 +- `@orama/plugin-docusaurus`:Orama 也是一个优秀的本地搜索引擎,但 `@easyops-cn` 在 Docusaurus 生态中更成熟,文档和社区支持更好。 + +### 集成 + +- [docusaurus-plugin-dhub - 添加编辑链接,在](https://github.com/dhub-dev/docusaurus-plugin-dhub)[Dhub](https://dhub.dev/docusaurus)可视化 MDX 编辑器中打开页面的源文件,并生成一个`dhub.json`清单,将每个路由映射到其源文件。 + +### 其他 + +- [docusaurus-theme-github-codeblock](https://github.com/saucelabs/docusaurus-theme-github-codeblock)是一个 Docusaurus 插件,支持引用来自公共 GitHub 仓库的代码示例。 + +- [docusaurus-plugin-remote-content](https://github.com/rdilweb/docusaurus-plugin-remote-content) - 一个 Docusaurus 插件,允许您从远程源获取内容。 + +- [plugin-image-zoom](https://github.com/flexanalytics/plugin-image-zoom) - Docusaurus 的图像缩放插件 +- [docusaurus-theme-zoom-image](https://github.com/rmaacario/docusaurus-theme-zoom-image) - 一款零依赖主题,让所有 Markdown 图片都能缩放:悬停放大镜徽章 + 全屏灯箱 + +- [docusaurus-plugin-native-ideal-image](https://github.com/Legend-Master/docusaurus-plugin-native-ideal-image) - 一个 Docusaurus 插件,用于将图像预处理为多种格式、尺寸和低质量图像占位符,通过现代浏览器原生和[延迟加载取代官方的](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/img#loading)[@docusaurus/plugin-ideal-image](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-ideal-image)。 + diff --git a/docs/Docusaurus资料/搜索框.md b/docs/Docusaurus资料/搜索框.md new file mode 100644 index 0000000..4c6fb2c --- /dev/null +++ b/docs/Docusaurus资料/搜索框.md @@ -0,0 +1,18 @@ +--- +title: 搜索框 +sidebar_position: 2 +--- + + +## 搜索框 +### 搭建流程 + +``` +1. +npm install --save @easyops-cn/docusaurus-search-local + +2.修改文件后需要build才能查询到最新的 +npm run build +npm run serve +``` + diff --git a/docs/intro.mdx b/docs/intro.mdx index 88f9571..c5fc319 100644 --- a/docs/intro.mdx +++ b/docs/intro.mdx @@ -1,47 +1,47 @@ --- -sidebar_position: 1 +sidebar_position: 999 --- +# 文档说明 -# Tutorial Intro - -Let's discover **Docusaurus in less than 5 minutes**. - -## Getting Started - -Get started by **creating a new site**. - -Or **try Docusaurus immediately** with **[docusaurus.new](https://docusaurus.new)**. - -### What you'll need - -- [Node.js](https://nodejs.org/en/download/) version 20.0 or above: - - When installing Node.js, you are recommended to check all checkboxes related to dependencies. - -## Generate a new site - -Generate a new Docusaurus site using the **classic template**. - -The classic template will automatically be added to your project after you run the command: - -```bash -npm init docusaurus@latest my-website classic +### 小于号录入方式 +``` +1: <% 替换成 {'<'}% +2: 加转义符号 {'<'}% +3: 加进代码块 ``` -You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor. - -The command also installs all necessary dependencies you need to run Docusaurus. - -## Start your site - -Run the development server: - -```bash -cd my-website -npm run start +### 注释符号 +``` +{/* */} ``` -The `cd` command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there. -The `npm run start` command builds your website locally and serves it through a development server, ready for you to view at http://localhost:3000/. +### blog预览结束符 +``` +{/* truncate */} +``` -Open `docs/intro.md` (this page) and edit some lines: the site **reloads automatically** and displays your changes. +### markdown插件快捷键 +格式化markdown table : alt + shift + f + +### 注释 +``` +{/* 注释 */} +``` + +### 标记文字 +``` +`标记文字` +``` + +### 文件本地打开 +``` +vscode://file/D:/projects/my-website/README.md +typora://file/D:/projects/my-website/README.md +``` + +### 图片本地 +``` +![图片1](./2026开发笔记/img/docsVersionDropdown.png) +``` +![图片1](./2026开发笔记/img/docsVersionDropdown.png) diff --git a/docs/tutorial-basics/_category_.json b/docs/tutorial-basics/_category_.json deleted file mode 100644 index 2e6db55..0000000 --- a/docs/tutorial-basics/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "Tutorial - Basics", - "position": 2, - "link": { - "type": "generated-index", - "description": "5 minutes to learn the most important Docusaurus concepts." - } -} diff --git a/docs/tutorial-basics/congratulations.mdx b/docs/tutorial-basics/congratulations.mdx deleted file mode 100644 index 2917c39..0000000 --- a/docs/tutorial-basics/congratulations.mdx +++ /dev/null @@ -1,23 +0,0 @@ ---- -sidebar_position: 6 ---- - -# Congratulations! - -You have just learned the **basics of Docusaurus** and made some changes to the **initial template**. - -Docusaurus has **much more to offer**! - -Have **5 more minutes**? Take a look at **[versioning](../tutorial-extras/manage-docs-versions.mdx)** and **[i18n](../tutorial-extras/translate-your-site.mdx)**. - -Anything **unclear** or **buggy** in this tutorial? [Please report it!](https://github.com/facebook/docusaurus/discussions/4610) - -## What's next? - -- Read the [official documentation](https://docusaurus.io/) -- Modify your site configuration with [`docusaurus.config.js`](https://docusaurus.io/docs/api/docusaurus-config) -- Add navbar and footer items with [`themeConfig`](https://docusaurus.io/docs/api/themes/configuration) -- Add a custom [Design and Layout](https://docusaurus.io/docs/styling-layout) -- Add a [search bar](https://docusaurus.io/docs/search) -- Find inspirations in the [Docusaurus showcase](https://docusaurus.io/showcase) -- Get involved in the [Docusaurus Community](https://docusaurus.io/community/support) diff --git a/docs/tutorial-basics/create-a-blog-post.mdx b/docs/tutorial-basics/create-a-blog-post.mdx deleted file mode 100644 index 550ae17..0000000 --- a/docs/tutorial-basics/create-a-blog-post.mdx +++ /dev/null @@ -1,34 +0,0 @@ ---- -sidebar_position: 3 ---- - -# Create a Blog Post - -Docusaurus creates a **page for each blog post**, but also a **blog index page**, a **tag system**, an **RSS** feed... - -## Create your first Post - -Create a file at `blog/2021-02-28-greetings.md`: - -```md title="blog/2021-02-28-greetings.md" ---- -slug: greetings -title: Greetings! -authors: - - name: Joel Marcey - title: Co-creator of Docusaurus 1 - url: https://github.com/JoelMarcey - image_url: https://github.com/JoelMarcey.png - - name: Sébastien Lorber - title: Docusaurus maintainer - url: https://sebastienlorber.com - image_url: https://github.com/slorber.png -tags: [greetings] ---- - -Congratulations, you have made your first post! - -Feel free to play around and edit this post as much as you like. -``` - -A new blog post is now available at [http://localhost:3000/blog/greetings](http://localhost:3000/blog/greetings). diff --git a/docs/tutorial-basics/create-a-document.mdx b/docs/tutorial-basics/create-a-document.mdx deleted file mode 100644 index c22fe29..0000000 --- a/docs/tutorial-basics/create-a-document.mdx +++ /dev/null @@ -1,57 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Create a Document - -Documents are **groups of pages** connected through: - -- a **sidebar** -- **previous/next navigation** -- **versioning** - -## Create your first Doc - -Create a Markdown file at `docs/hello.md`: - -```md title="docs/hello.md" -# Hello - -This is my **first Docusaurus document**! -``` - -A new document is now available at [http://localhost:3000/docs/hello](http://localhost:3000/docs/hello). - -## Configure the Sidebar - -Docusaurus automatically **creates a sidebar** from the `docs` folder. - -Add metadata to customize the sidebar label and position: - -```md title="docs/hello.md" {1-4} ---- -sidebar_label: 'Hi!' -sidebar_position: 3 ---- - -# Hello - -This is my **first Docusaurus document**! -``` - -It is also possible to create your sidebar explicitly in `sidebars.js`: - -```js title="sidebars.js" -export default { - tutorialSidebar: [ - 'intro', - // highlight-next-line - 'hello', - { - type: 'category', - label: 'Tutorial', - items: ['tutorial-basics/create-a-document'], - }, - ], -}; -``` diff --git a/docs/tutorial-basics/create-a-page.mdx b/docs/tutorial-basics/create-a-page.mdx deleted file mode 100644 index 20e2ac3..0000000 --- a/docs/tutorial-basics/create-a-page.mdx +++ /dev/null @@ -1,43 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Create a Page - -Add **Markdown or React** files to `src/pages` to create a **standalone page**: - -- `src/pages/index.js` → `localhost:3000/` -- `src/pages/foo.md` → `localhost:3000/foo` -- `src/pages/foo/bar.js` → `localhost:3000/foo/bar` - -## Create your first React Page - -Create a file at `src/pages/my-react-page.js`: - -```jsx title="src/pages/my-react-page.js" -import React from 'react'; -import Layout from '@theme/Layout'; - -export default function MyReactPage() { - return ( - -

My React page

-

This is a React page

-
- ); -} -``` - -A new page is now available at [http://localhost:3000/my-react-page](http://localhost:3000/my-react-page). - -## Create your first Markdown Page - -Create a file at `src/pages/my-markdown-page.md`: - -```mdx title="src/pages/my-markdown-page.md" -# My Markdown page - -This is a Markdown page -``` - -A new page is now available at [http://localhost:3000/my-markdown-page](http://localhost:3000/my-markdown-page). diff --git a/docs/tutorial-basics/deploy-your-site.mdx b/docs/tutorial-basics/deploy-your-site.mdx deleted file mode 100644 index 1c50ee0..0000000 --- a/docs/tutorial-basics/deploy-your-site.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -sidebar_position: 5 ---- - -# Deploy your site - -Docusaurus is a **static-site-generator** (also called **[Jamstack](https://jamstack.org/)**). - -It builds your site as simple **static HTML, JavaScript and CSS files**. - -## Build your site - -Build your site **for production**: - -```bash -npm run build -``` - -The static files are generated in the `build` folder. - -## Deploy your site - -Test your production build locally: - -```bash -npm run serve -``` - -The `build` folder is now served at [http://localhost:3000/](http://localhost:3000/). - -You can now deploy the `build` folder **almost anywhere** easily, **for free** or very small cost (read the **[Deployment Guide](https://docusaurus.io/docs/deployment)**). diff --git a/docs/tutorial-basics/markdown-features.mdx b/docs/tutorial-basics/markdown-features.mdx deleted file mode 100644 index e739ec4..0000000 --- a/docs/tutorial-basics/markdown-features.mdx +++ /dev/null @@ -1,168 +0,0 @@ ---- -sidebar_position: 4 ---- - -# Markdown Features - -Docusaurus supports **[Markdown](https://daringfireball.net/projects/markdown/syntax)** and a few **additional features**. - -## Front Matter - -Markdown documents have metadata at the top called [Front Matter](https://jekyllrb.com/docs/front-matter/): - -```text title="my-doc.md" -// highlight-start ---- -id: my-doc-id -title: My document title -description: My document description -slug: /my-custom-url ---- -// highlight-end - -Markdown content -``` - -## Headings {/* #my-heading-id */} - -Markdown headings are supported using the standard “#” syntax and are automatically added to the table of contents. The number of `#` corresponds to the heading level. - -```md -## Headings - -My text -``` - -### Heading Ids {/* #my-custom-id */} - -Add `{/* #my-custom-id */}` after the heading text to assign it an explicit anchor id, used for linking. - -```md -### Heading Ids {/_ #my-custom-id _/} -``` - -## Links - -Regular Markdown links are supported, using url paths or relative file paths. - -```md -Let's see how to [Create a page](/create-a-page). -``` - -```md -Let's see how to [Create a page](./create-a-page.mdx). -``` - -**Result:** Let's see how to [Create a page](./create-a-page.mdx). - -## Images - -Regular Markdown images are supported. - -You can use absolute paths to reference images in the static directory (`static/img/docusaurus.png`): - -```md -![Docusaurus logo](/img/docusaurus.png) -``` - -![Docusaurus logo](/img/docusaurus.png) - -You can reference images relative to the current file as well. This is particularly useful to colocate images close to the Markdown files using them: - -```md -![Docusaurus logo](./img/docusaurus.png) -``` - -## Code Blocks - -Markdown code blocks are supported with Syntax highlighting. - -````md -```jsx title="src/components/HelloDocusaurus.js" -function HelloDocusaurus() { - return

Hello, Docusaurus!

; -} -``` -```` - -```jsx title="src/components/HelloDocusaurus.js" -function HelloDocusaurus() { - return

Hello, Docusaurus!

; -} -``` - -## Admonitions - -Docusaurus has a special syntax to create admonitions and callouts: - -```md -:::tip[My tip] - -Use this awesome feature option - -::: - -:::danger[Take care] - -This action is dangerous - -::: -``` - -:::tip[My tip] - -Use this awesome feature option - -::: - -:::danger[Take care] - -This action is dangerous - -::: - -## MDX and React Components - -[MDX](https://mdxjs.com/) can make your documentation more **interactive** and allows using any **React components inside Markdown**: - -```jsx -export const Highlight = ({children, color}) => ( - { - alert(`You clicked the color ${color} with label ${children}`) - }}> - {children} - -); - -This is Docusaurus green ! - -This is Facebook blue ! -``` - -export const Highlight = ({children, color}) => ( - { - alert(`You clicked the color ${color} with label ${children}`); - }}> - {children} - -); - -This is Docusaurus green ! - -This is Facebook blue ! diff --git a/docs/tutorial-extras/_category_.json b/docs/tutorial-extras/_category_.json deleted file mode 100644 index a8ffcc1..0000000 --- a/docs/tutorial-extras/_category_.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "label": "Tutorial - Extras", - "position": 3, - "link": { - "type": "generated-index" - } -} diff --git a/docs/tutorial-extras/img/localeDropdown.png b/docs/tutorial-extras/img/localeDropdown.png deleted file mode 100644 index e257edc1f932985396bf59584c7ccfaddf955779..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27841 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 JrC|B>e*nH7H{}2T diff --git a/docs/tutorial-extras/manage-docs-versions.mdx b/docs/tutorial-extras/manage-docs-versions.mdx deleted file mode 100644 index ccda0b9..0000000 --- a/docs/tutorial-extras/manage-docs-versions.mdx +++ /dev/null @@ -1,55 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Manage Docs Versions - -Docusaurus can manage multiple versions of your docs. - -## Create a docs version - -Release a version 1.0 of your project: - -```bash -npm run docusaurus docs:version 1.0 -``` - -The `docs` folder is copied into `versioned_docs/version-1.0` and `versions.json` is created. - -Your docs now have 2 versions: - -- `1.0` at `http://localhost:3000/docs/` for the version 1.0 docs -- `current` at `http://localhost:3000/docs/next/` for the **upcoming, unreleased docs** - -## Add a Version Dropdown - -To navigate seamlessly across versions, add a version dropdown. - -Modify the `docusaurus.config.js` file: - -```js title="docusaurus.config.js" -export default { - themeConfig: { - navbar: { - items: [ - // highlight-start - { - type: 'docsVersionDropdown', - }, - // highlight-end - ], - }, - }, -}; -``` - -The docs version dropdown appears in your navbar: - -![Docs Version Dropdown](./img/docsVersionDropdown.png) - -## Update an existing version - -It is possible to edit versioned docs in their respective folder: - -- `versioned_docs/version-1.0/hello.md` updates `http://localhost:3000/docs/hello` -- `docs/hello.md` updates `http://localhost:3000/docs/next/hello` diff --git a/docs/tutorial-extras/translate-your-site.mdx b/docs/tutorial-extras/translate-your-site.mdx deleted file mode 100644 index b5a644a..0000000 --- a/docs/tutorial-extras/translate-your-site.mdx +++ /dev/null @@ -1,88 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Translate your site - -Let's translate `docs/intro.md` to French. - -## Configure i18n - -Modify `docusaurus.config.js` to add support for the `fr` locale: - -```js title="docusaurus.config.js" -export default { - i18n: { - defaultLocale: 'en', - locales: ['en', 'fr'], - }, -}; -``` - -## Translate a doc - -Copy the `docs/intro.md` file to the `i18n/fr` folder: - -```bash -mkdir -p i18n/fr/docusaurus-plugin-content-docs/current/ - -cp docs/intro.md i18n/fr/docusaurus-plugin-content-docs/current/intro.md -``` - -Translate `i18n/fr/docusaurus-plugin-content-docs/current/intro.md` in French. - -## Start your localized site - -Start your site on the French locale: - -```bash -npm run start -- --locale fr -``` - -Your localized site is accessible at [http://localhost:3000/fr/](http://localhost:3000/fr/) and the `Getting Started` page is translated. - -:::caution - -In development, you can only use one locale at a time. - -::: - -## Add a Locale Dropdown - -To navigate seamlessly across languages, add a locale dropdown. - -Modify the `docusaurus.config.js` file: - -```js title="docusaurus.config.js" -export default { - themeConfig: { - navbar: { - items: [ - // highlight-start - { - type: 'localeDropdown', - }, - // highlight-end - ], - }, - }, -}; -``` - -The locale dropdown now appears in your navbar: - -![Locale Dropdown](./img/localeDropdown.png) - -## Build your localized site - -Build your site for a specific locale: - -```bash -npm run build -- --locale fr -``` - -Or build your site to include all the locales at once: - -```bash -npm run build -``` diff --git a/docs/个人资料/_category_.json b/docs/个人资料/_category_.json new file mode 100644 index 0000000..6e4ca08 --- /dev/null +++ b/docs/个人资料/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "个人资料", + "position": 90, + "link": { + "type": "generated-index", + "description": "无说明" + } +} diff --git a/docs/相寓资料/Doris说明.md b/docs/相寓资料/Doris说明.md new file mode 100644 index 0000000..cfb8eb0 --- /dev/null +++ b/docs/相寓资料/Doris说明.md @@ -0,0 +1,241 @@ +--- +sidebar_position: 10 +title: Doris说明 +--- +# Doris说明 + +### DWD表开发 + +```properties +1.加yml配置 +2.加step sql文件 +3.create_table_all.sql写好记录 + decimalv3 小数精度 + BIGINT 主键 + INT 常规数字 + datetime + varchar 字符 +4.定时任务加执行地址 http://10.1.67.76:19999/ +5.window执行完定时自动加入 +``` + + + +### 网页说明 + +##### 数据集 + +``` +1.新增数据集: 录入已创建的dwd表 +2.dwd表新增了字段: 图表来源-更多-编辑数据集, 选择列-从原数据同步列 (交换数据集是啥?) +3.增加指标: 图表来源-更多-编辑数据集, 选择指标-增加条件 +4.删除亮哥的指标: 后缀加 _del + +``` + +##### 图表 + +``` + +``` + +##### 看板 + +``` +1.可以全局筛选, 可以局部筛选, 可以联动筛选 + +2.展示: +数量不要小数 +金额不要小数 +比率用1位小数 +``` + +##### sql工具箱 + +``` + +``` + +### code对应表 + +``` +city_id -> city_name +1 北京 +2 杭州 +5 苏州 +6 太原 +7 天津 +8 南京 +9 上海 +15 成都 +18 郑州 +19 无锡 +20 武汉 +67 广州 +672 广州PARK + + +contract_state_code -> contract_state +1000100070001 已签约 +1000100070003 已作废 +1000100070004 已续约 +1000100070005 解约中 +1000100070006 已解约 +1000100070008 续约中 +1000100070009 签约中 +1000100070010 草稿 + +signing_route_code -> signing_route +--非太原/太原 +1000100790001/1000100820001 AMS纸版签约 +1000100790002/1000100820002 APP电子签约 + +contract_type_code -> contract_type +SF 委托 +CF 承租 + +property_check_state_code -> property_check_state +1000300270001 待审核 +1000300270002 审核已通过 +1000300270003 审核未通过 +1000300270004 待补充 +1000300270005 待客户确认 + +jy_type_code -> jy_type +--非太原/太原 +1000100800010001/1000100830010001 AMS纸质解约 +1000100800010002/1000100830010001 APP电子解约 +``` + + + +##### ODS是原材料,DWD是清洗好的零件,DWS是组装好的半成品,那么ADS就是摆在货架上成品。 + +### ods + +```properties +设计ods表,数据类型按全城市的最大值创建 + +#流程 +定时去拉去AMS的数据到ods表 , 链路猜测是ogg->spark->ods +全量定时: 每天全刷 +增量定时: 几分钟一刷 +``` + +### dwd + +```properties +application.yml 里配置了dwd需要执行哪些sql + dwd-micro: 业务 + dws-ads-micro: 数据组用 + zipper: ods备份表,比如监控到发生变化,就insert一条,时间是zip_valid_start,对应字段在项目的superset_fields_xxx文件 + + + classpath配置里dwd的建表语句,写法像视图,11 + ${group}: sfContract + ${dwdTable}: dwd_fact_sf + ${odsTable}: ods_wk_sf_contract + ${odsTables}: 都写的这个,但是实际用的时候还是odsTable + ${isFull}: 是否全量 + ${lookbackSeconds}: 增量数据,前60秒的,一般不用 + ${jobParam}: XXL-JOB参数 + ${initSplitPredicate}: isFull=true且数据量很大时, 拆成多个小任务执行 +``` + + + +### 自己尝试 + +```yml +dwd_fact_agreement: + enabled: true + ods-tables: + ods_wiwj_agreement_info: + enabled: true + sql-files: + - classpath:sql/dwd/sfContract/dwd_fact_sf_agreement_step1.sql +``` + +```sql +--委托协议测试表 +DROP TABLE IF EXISTS warehouse.dwd_fact_agreement; +CREATE TABLE IF NOT EXISTS warehouse.dwd_fact_agreement ( + dw_cityid INT COMMENT '城市ID', + agreement_id BIGINT COMMENT '协议ID', + city_name VARCHAR(20) COMMENT '城市', + contract_id BIGINT COMMENT '合同ID', + contract_type VARCHAR(40) COMMENT '协议类型(收房出房)', + confer_id BIGINT COMMENT '协议类型字典', + confer_name BIGINT COMMENT '协议类型名称', + status VARCHAR(100) COMMENT '协议风控审核状态', + letdatechange VARCHAR(2) COMMENT '首个招租期是否变更', + cycleLetDaysChange VARCHAR(2) COMMENT '托管招租期是否变更', + create_time DATETIME COMMENT '创建时间', + --共通 + op_type VARCHAR(20) COMMENT '是否被物理删除', + etl_time DATETIMEV2(3) DEFAULT CURRENT_TIMESTAMP(3) COMMENT 'ETL 加载时间' + ) +UNIQUE KEY(dw_cityid, agreement_id) +COMMENT '委托协议测试表' +DISTRIBUTED BY HASH(dw_cityid, agreement_id) BUCKETS 16 +PROPERTIES ( + "replication_num" = "3", + "enable_unique_key_merge_on_write" = "true" +); +``` + +##### [dwd_fact_sf_agreement_step1.sql](C:\project\doris-microbatch-executor\src\main\resources\sql\dwd\sfContract\dwd_fact_sf_agreement_step1.sql) + +```sql +INSERT INTO dwd_fact_agreement +( + dw_cityid, + agreement_id, + city_name, + contract_id, + contract_type, + confer_id, + confer_name, + status, + letdatechange, + cycleLetDaysChange, + create_time, + op_type, + etl_time +) +SELECT + s.dw_cityid as dw_cityid, + s.ID as agreement_id, + dc.dict_name as city_name, + s.CONTRACTSID as contract_id, + s.CONTRACTTYPE as contract_type, + s.CONFERID as confer_id, + ods_conferid.DICTNAME as confer_name, + s.STATUS as status, + detail.letdatechange AS letdatechange, + detail.cycleLetDaysChange AS cycleLetDaysChange, + s.CREATETIME as create_time, + s.op_type, + s.etl_time +FROM ${odsTable} s + left join dict_config dc on dc.dict_id = s.dw_cityid and dc.dict_type = 'city' + left join ods_taw_system_dicttype ods_conferid on ods_conferid.dw_cityid = s.dw_cityid and ods_conferid.dictid = s.conferid + LEFT JOIN ( + SELECT + dw_cityid, + CONFERID, + MAX(CASE WHEN name = 'letDateChange' AND value = 'Y' THEN 'Y' ELSE 'N' END) AS letdatechange, + MAX(CASE WHEN name = 'cycleLetDaysChange' AND value = 'Y' THEN 'Y' ELSE 'N' END) AS cycleLetDaysChange + FROM ods_wiwj_agreement_detail_info + WHERE name IN ('letDateChange', 'cycleLetDaysChange') + GROUP BY dw_cityid, CONFERID + ) detail ON detail.dw_cityid = s.dw_cityid AND detail.CONFERID = s.id + INNER JOIN dwd_batch_window b + ON b.dwd_group = '${group}' + AND b.dwd_table = '${dwdTable}' + AND b.ods_table = '${odsTable}' +WHERE s.pos > b.batch_start_pos + AND s.pos <= b.batch_end_pos + AND s.CONTRACTTYPE = 'SF'; +``` + diff --git a/docs/相寓资料/_category_.json b/docs/相寓资料/_category_.json new file mode 100644 index 0000000..e5fdaaf --- /dev/null +++ b/docs/相寓资料/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "相寓资料", + "position": 1, + "link": { + "type": "generated-index", + "description": "相寓系统资料" + } +} diff --git a/docs/相寓资料/上线相关.md b/docs/相寓资料/上线相关.md new file mode 100644 index 0000000..4440d76 --- /dev/null +++ b/docs/相寓资料/上线相关.md @@ -0,0 +1,53 @@ +--- +sidebar_position: 99 +title: 上线相关 +--- +# 上线相关 + +### 替换 + +#### 北京替换文件 +``` +theme.css +applicationContext-all.xml +applicationContext-hession.xml +applicationContext-interface-task.xml +applicationContext-solr.xml +applicationContext-resources.xml +bankconfig-alipay.xml +acp_sdk.properties +pay_zfb_config.properties +server-config.properties +web.xml +pos-config.properties +signatrue-ruleNo.properties +role-config.properties +cuxEbsLog.jsp +unionpay_config.properties +jrProperties.properties) +``` + +#### 分公司替换文件 +``` +server-config.properties +role-config.properties +rabbitmq +roleId-houseViewNum.properties +signatrue-ruleNo.properties +applicationContext-solr.xml +applicationContext-resources.xml +applicationContext-ehcache.xml +applicationContext-all.xml +applicationContext-interface-task.xml +bankconfig-alipay.xml +bankconfig-wxpay-V3-app.xml +bankconfig-wxpay-V3-wx.xml +applicationContext-solr.xml +pay_zfb_config.properties +role-config.properties +pos-config.properties +web.xml +unionpay_config.properties +jrProperties.properties +``` +{/* truncate */} \ No newline at end of file diff --git a/docs/相寓资料/系统相关.md b/docs/相寓资料/系统相关.md new file mode 100644 index 0000000..a666fc2 --- /dev/null +++ b/docs/相寓资料/系统相关.md @@ -0,0 +1,162 @@ +--- +sidebar_position: 1 +title: 系统相关 +--- +# 系统相关 + +## 各系统地址 +| 类型 | 地址 | 备注 | +| :----------------- | :----------------------------------------------------------- | :------------------------------ | +| 数据对接平台 | http://dts-yscvue.1zu.com/ | 前端 | +| | http://dts-ysc.1zu.com | 后端 | +| 催缴中台测试 | srvmid-testvue.1zu.com | 前端 | +| | srvmid-test.1zu.com | 后端 | +| 催缴中台预生产 | https://srvmidtest.1zu.com:20031/ | admin/srvmid@220930 | +| 催缴中台测试猫头鹰 | base_url=http://srvmidtest.1zu.com:20099/ | | +| 禅道地址 | https://zentao-xy.1zu.com/zentaopms/www/my/ | | +| 相寓+APP | https://www.pgyer.com/xiangyu-crm-android-test | | +| 相寓测试APP | https://testapp.1zu.com/ | admin/testappXY@123 | +| yapi | http://testall.1zu.com:20061/group/154 | | +| mq | http://rabbitmq-web.cbs-public.sit-2.private.com/#/ | | +| solr | https://solrtest.1zu.com/solr/index.html#/ | | +| | https://solrtest.1zu.com/solr/index.html#/home/dataimport/dataimport | | +| git | http://testall.1zu.com:20027 | uNCz3DhERDjM | +| 日志测试 | https://vrtest.1zu.com/xiangyulog/init | xiangyuLog/7_LjIh0hkRF3z | +| 日志生产 | https://videovr.1zu.com/xiangyulog/init | 废弃 | +| | https://xylog-down.1zu.com/xiangyulog/init | 最新 | +| 云闪付账号 | https://open.unionpay.com/tjweb/support/faq/mchlist?id=4 | | +| | 6226 0900 0000 0048/张三/510265790128303/18100000000/ 123456 | 示例 | +| 定时 | http://xy-job-test.1zu.com/jobadmin/ | xytest/Kp8@Qw7$Rt3# | +| PINPOINT | pinpoint.1zu.com | | +| superset 数仓 | https://superset-test.1zu.com/ | 8349076/8349076xy | +| IT中心网盘 | \\10.1.74.52\控股相寓it公用 | xiangyu/YTVh7> xydev/Q{'<'}[MT= | +| 相寓官网业主推荐 | https://www.1zu.com/contract/contractOnline.htm | 应该crm接手废弃了 | +| | http://10.1.74.43:8087/contract/contractOnline.htm | 本地 | +| 签章服务器 | http://10.10.115.205:9230/Seal/login.do | 已改为本地签 | +| | http://10.10.115.204:9230/Seal/login.do | | +| | D:\IT_center\40_开发\10_计划\房源-委托-组织架构\签章证书 | | +| 前后端分离项目安装 | D:\IT_center\99_文档工具\10_相关软件工具\srvmid | | +| | http://101.251.221.146:20024/admin/admin/login.htm | admin/123456 | +| 委托组计划地址 | D:\IT_center\40_开发\10_计划\房源-委托-组织架构\开发计划 | | +| 总结/计划 | D:\IT_center\70_述职\2022年 | | +| 脚本上传位置 | D:\projects\IT_center\60_发布\01_上线配套的脚本页面设置等 | | +| 数据库码表 | D:\IT_center\40_开发\数据库密码表_新.xlsx | | +| 地图坐标网站 | https://api.map.baidu.com/lbsapi/getpoint/index.html | | +| 图片背景透明 | https://www.aigei.com/bgremover/ | | + +## 开发维护文档 +| 类型 | 地址 | 备注 | +| :----------- | :------------------------------------------------------------ | :----------- | +| 催缴中台 | D:\IT_center\40_开发\01_中台管理\01开发基准 | 开发规范书 | +| | D:\IT_center\40_开发\01_中台管理\03设计书 | 维护字典 | +| 数据对接平台 | D:\IT_center\40_开发\05_数据对接平台\01设计相关\字典管理.xlsx | 维护字典 | +| | D:\IT_center\40_开发\05_数据对接平台\04环境更新脚本 | 上线脚本存放 | + + +## svn地址 + +| 类型 | 地址 | +| :-------------------------- | :-------------------------------------------------------------------------------------------- | +| 所有资料 | https://10.20.126.1/svn/IT_center | +| 代码-北京 | https://10.20.126.1/svn/src_houtai/5i5j/branch/SrcPhase4_Api_20161129_Ver29787 | +| | https://10.20.126.1/svn/src_houtai/5i5j/branch/SrcPhase4_Houtai_20161129_Ver30394 | +| 代码-杭州 | https://10.20.126.1/svn/src_houtai/5i5j/branch/SrcPhase4_Api_20210818_Ver102341_HZ | +| | https://10.20.126.1/svn/src_houtai/5i5j/branch/SrcPhase4_Houtai_20210818_Ver103075_HZ | +| 代码-无锡 | https://10.20.126.1/svn/src_houtai/5i5j/branch/api_FenGongSi_FeiShouFang_20171107_Ver32829 | +| | https://10.20.126.1/svn/src_houtai/5i5j/branch/Houtai_feiShouFang_shangHai_20190318_Ver55441 | +| 代码-苏州、南京、郑州、天津 | https://10.20.126.1/svn/src_houtai/5i5j/branch/api_FenGongSi_FeiShouFang_20171107_Ver32829 | +| | https://10.20.126.1/svn/src_houtai/5i5j/branch/Houtai_FenGongSi_FeiShouFang_20171107_Ver32465 | +| 代码-太原 | https://10.20.126.1/svn/src_houtai/5i5j/branch/api_FenGongSi_ShouFang_20180402_Ver42086 | +| | https://10.20.126.1/svn/src_houtai/5i5j/branch/Houtai_FenGongSi_ShouFang_20180402_Ver42157 | +| 代码-成都、武汉、广州 | https://10.20.126.1/svn/src_houtai/5i5j/branch/SrcPhase4_Api_cdxyDirect_20221118_Ver122104 | +| | https://10.20.126.1/svn/src_houtai/5i5j/branch/SrcPhase4_Houtai_cdxyDirect_20221118_Ver123302 | +| 代码-上海 | https://10.20.126.1/svn/src_houtai/5i5j/branch/api_SH_20230406_Ver129717 | +| | https://10.20.126.1/svn/src_houtai/5i5j/branch/Houtai_SH_20230406_Ver129724 | +| 代码-APP中台 | https://10.20.126.1/svn/src_houtai/5i5j/branch/ams_mid | +| 相寓官网 | https://10.20.126.1/svn/it_center/10_后台/20_代码/supplier/xiangyu | +| | https://10.20.126.1/svn/it_center/10_后台/20_代码/supplier/common-xiangyu | +| | https://10.20.126.1/svn/it_center/10_后台/20_代码/supplier/api_xiangyu | + +## git地址 +| 类型 | 地址 | +| :---------------- | :---------------------------------------------------------------------------- | +| 代码-数据对接中台 | git clone http://zhupengying@testall.1zu.com:20027/r/5i5j_xy_datalink.git | +| | git clone http://zhupengying@testall.1zu.com:20027/r/5i5j_xy_datalink_vue.git | +| vr | git clone https://git.1zu.com/r/5i5j_vr.git | +| spark | git clone https://git.1zu.com/r/5i5j_bigdata.git | + +## 个人资料 +| 类型 | 地址 | 备注 | +| :------- | :------------------------------------------------ | :--------------------- | +| 企业邮箱 | 令狐天昊/linghutianhao@xiangyulife.com/Xiangyu123 | | +| 公司wifi | 5I5J-WLAN | 使用员工编号和密码登录 | + + +## 软件安装 +| 类型 | 地址 | 备注 | +| :------------- | :--------------------------------------------------------------------------- | :-------------------- | +| AMS软件 | \IT_center\99_文档工具\50_安全浏览器\21_WebClient\SayHiSetup_bjtest_v4.1.exe | | +| | 在安装目录下创建Config.ini | 下方配置 | +| cbs软件 | MyBrowser | 疑似 60_CBS安全浏览器 | +| 催缴中台猫头鹰 | D:\Program Files (x86)\5i5j\GJBrowser_cjzt_self45 | | +| mp文件 | \IT_center\99_文档工具\10_相关软件工具\MockPlus | 慕客 | + +``` +[BaseConfig] + +'北京测试 +base_url=http://testall.1zu.com:20009/ + +[TestConfig] +__app__log__severity___=debug +__show__test__menu___=yes +``` + +## 项目启动事项 +### AMS +#### 文档 +D:\IT_center\99_文档工具\10_相关软件工具\idea 配置AMS.doc +#### tomcat VM +``` +-XX:PermSize=728M +-XX:MaxPermSize=1024M +-Xms256m +-Xmx1024m +-Dfile.encoding=UTF-8 +-Djava.library.path="D:\develop\opencv\build\java\x64" +-XX:+HeapDumpOnOutOfMemoryError +-XX:HeapDumpPath=$LOG_DIR/java.hprof" +``` +#### opencv +D:\IT_center\99_文档工具\10_相关软件工具\opencv-2.4.13.6-vc14.exe +#### 配置文件修改(前期可不修改) +``` +picUploadUrlAliOSS=http\://10.1.74.43:8080/newPath/ +picUploadUrlOSS=http\://10.1.74.43:8080/newPath/ +picUploadUrl=http\://10.1.74.43:8080/newPath/ +picUploadPath=D\:/images/ +webServerUrl = http://localhost:8080 +``` +#### idea编译内存不足 +Build -> Compiler -> Share build process heap size (Mbytes): 最少3000 +#### 本地签章 +D:\program\signSrc\ 目录下的东西 + +### 中台 +#### 文档 +D:\IT_center\40_开发\01_中台管理\04manual\中台开发环境构筑说明书.xlsx +#### opencv +D:\develop\opencv\build\java\x64\opencv_java2413.dll 放到 C:\WINDOWS\System32\ 之下 + +或者(未实践) opencv_java341.dll 复制到jre/bin + +或者(未实践) -Djava.library.path="D:\develop\opencv\build\java\x64" + +### 机器码 +#### AMS机器码 +admin-系统设置-安全管理-设备信息列表管理-新增设备 +#### cbs机器码 +各城市管理员账号- 设备管理 - 添加网络?(ipconfig /all 删掉中间的'-') - 配置设备 + +### pom oracle +-mvn install:install-file -Dfile="D:\tools\Oracle_10g_10.2.0.4_JDBC_ojdbc14.jar" -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.4.0 -Dpackaging=jar \ No newline at end of file diff --git a/docusaurus.config.ts b/docusaurus.config.ts index 671bab5..b3732d1 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -2,37 +2,28 @@ import {themes as prismThemes} from 'prism-react-renderer'; import type {Config} from '@docusaurus/types'; import type * as Preset from '@docusaurus/preset-classic'; -// This runs in Node.js - Don't use client-side code here (browser APIs, JSX...) - const config: Config = { - title: 'My Site', - tagline: 'Dinosaurs are cool', - favicon: 'img/favicon.ico', + title: '绿恐龙', + tagline: 'yibai1', + favicon: 'img/code.ico', - // Future flags, see https://docusaurus.io/docs/api/docusaurus-config#future + // 未来特性开关,详见 https://docusaurus.io/docs/api/docusaurus-config#future future: { - v4: true, // Improve compatibility with the upcoming Docusaurus v4 + v4: true, }, - // Set the production url of your site here - url: 'https://your-docusaurus-site.example.com', - // Set the // pathname under which your site is served - // For GitHub pages deployment, it is often '//' + // 设置网站的生产环境 URL + url: 'https://haodev.com', + // 设置站点服务的 // 路径 baseUrl: '/', - // GitHub pages deployment config. - // If you aren't using GitHub pages, you don't need these. - organizationName: 'facebook', // Usually your GitHub org/user name. - projectName: 'docusaurus', // Usually your repo name. + // 忽略内部断链(本地笔记引用了本地文件 / 外部资源) + // onBrokenLinks: 'ignore', - onBrokenLinks: 'throw', - - // Even if you don't use internationalization, you can use this field to set - // useful metadata like html lang. For example, if your site is Chinese, you - // may want to replace "en" with "zh-Hans". + // i18n 配置,设为中文避免 Docusaurus 默认用英文 i18n: { - defaultLocale: 'en', - locales: ['en'], + defaultLocale: 'zh-Hans', + locales: ['zh-Hans'], }, presets: [ @@ -41,22 +32,17 @@ const config: Config = { { docs: { sidebarPath: './sidebars.ts', - // Please change this to your repo. - // Remove this to remove the "edit this page" links. - editUrl: - 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', + // 本地部署,编辑链接直接在 Typora 中打开 + editUrl: 'typora://file/D:/projects/my-website/', }, blog: { - showReadingTime: true, + showReadingTime: false, + blogSidebarCount: 'ALL', feedOptions: { type: ['rss', 'atom'], xslt: true, }, - // Please change this to your repo. - // Remove this to remove the "edit this page" links. - editUrl: - 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', - // Useful options to enforce blogging best practices + editUrl: 'typora://file/D:/projects/my-website/', onInlineTags: 'warn', onInlineAuthors: 'warn', onUntruncatedBlogPosts: 'warn', @@ -69,68 +55,34 @@ const config: Config = { ], themeConfig: { - // Replace with your project's social card image: 'img/docusaurus-social-card.jpg', colorMode: { - respectPrefersColorScheme: true, + defaultMode: 'light', + disableSwitch: true, + respectPrefersColorScheme: false, }, navbar: { - title: 'My Site', + title: 'yibai2', logo: { - alt: 'My Site Logo', - src: 'img/logo.svg', + alt: 'yibai3', + src: 'img/code.ico', }, items: [ { type: 'docSidebar', sidebarId: 'tutorialSidebar', position: 'left', - label: 'Tutorial', - }, - {to: '/blog', label: 'Blog', position: 'left'}, - { - href: 'https://github.com/facebook/docusaurus', - label: 'GitHub', - position: 'right', + label: '文档', }, + {to: '/blog', label: '笔记', position: 'left'}, ], }, footer: { style: 'dark', links: [ { - title: 'Docs', + title: 'About', items: [ - { - label: 'Tutorial', - to: '/docs/intro', - }, - ], - }, - { - title: 'Community', - items: [ - { - label: 'Stack Overflow', - href: 'https://stackoverflow.com/questions/tagged/docusaurus', - }, - { - label: 'Discord', - href: 'https://discordapp.com/invite/docusaurus', - }, - { - label: 'X', - href: 'https://x.com/docusaurus', - }, - ], - }, - { - title: 'More', - items: [ - { - label: 'Blog', - to: '/blog', - }, { label: 'GitHub', href: 'https://github.com/facebook/docusaurus', @@ -143,8 +95,21 @@ const config: Config = { prism: { theme: prismThemes.github, darkTheme: prismThemes.dracula, + additionalLanguages: ['java'], }, } satisfies Preset.ThemeConfig, + + themes: [ + [ + '@easyops-cn/docusaurus-search-local', + { + hashed: true, + language: ['en', 'zh'], + highlightSearchTermsOnTargetPage: true, + fuzzyMatchingDistance: 0, + }, + ], + ], }; export default config; diff --git a/package-lock.json b/package-lock.json index dc81ed5..056c827 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "@docusaurus/core": "3.10.2", "@docusaurus/faster": "3.10.2", "@docusaurus/preset-classic": "3.10.2", + "@easyops-cn/docusaurus-search-local": "^0.55.3", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", "prism-react-renderer": "^2.3.0", @@ -339,13 +340,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.29.7", - "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.29.7.tgz", - "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", + "version": "7.29.8", + "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.29.8.tgz", + "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.7", - "@babel/types": "^7.29.7", + "@babel/parser": "^7.29.8", + "@babel/types": "^7.29.8", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -638,12 +639,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.29.7", - "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.29.7.tgz", - "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", + "version": "7.29.8", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.29.8.tgz", + "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", "license": "MIT", "dependencies": { - "@babel/types": "^7.29.7" + "@babel/types": "^7.29.8" }, "bin": { "parser": "bin/babel-parser.js" @@ -1244,15 +1245,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.29.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.7.tgz", - "integrity": "sha512-TM2ZcQLoG2/y4HODiStCo10DibYhWhGWAwVv+EQKmG/7GFl0N+AAmUiXOMKM+aiJ9XBJ9AHVZBvTzMnJ2sM3cQ==", + "version": "7.29.8", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.8.tgz", + "integrity": "sha512-6iSnEK0zlkLKU4heofK/AdmRD4e2SHVpJMtrwnTCzhnaM98ria4rTrOXBBi45BTTYnJtO8txnPsX4fChYXkmeA==", "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.29.7", "@babel/helper-plugin-utils": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7", - "@babel/traverse": "^7.29.7" + "@babel/traverse": "^7.29.8" }, "engines": { "node": ">=6.9.0" @@ -1548,9 +1549,9 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.29.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.7.tgz", - "integrity": "sha512-rNNFV0DBAJp988xW2DOntfDoYn1eR8GGF5AT5vYc+rjyfaQkM242c9tZUHHPe7KYaiJizXPWhQTzzdbXySyhBw==", + "version": "7.29.8", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.8.tgz", + "integrity": "sha512-0UpIXPtdDtMXfnV2OJAVMLpj3H/92vmkA6lpSRakmycJvj3VUy6Xs1dM8tXRugupykr5WB+LpiVl0J8LMVg2mg==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.29.7" @@ -1638,9 +1639,9 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.29.7", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.7.tgz", - "integrity": "sha512-/u5K1QWada7tbYNqTjMh96718g9NTwh9tfPJMsSmVsQwGT447FskV+KcfeXkXq2GWki4EM/MuTdmBec+hOuVTQ==", + "version": "7.29.8", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.8.tgz", + "integrity": "sha512-4S9ksMGVWUshvgK0mKfvZky7leuG5/uoFVwMpAomJ8bMoDJiNHRVmc1EglwW/CmGVSqqWpEbXm9FmbRit22qoA==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.29.7", @@ -1964,17 +1965,17 @@ } }, "node_modules/@babel/traverse": { - "version": "7.29.7", - "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.29.7.tgz", - "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", + "version": "7.29.8", + "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.29.8.tgz", + "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.29.7", - "@babel/generator": "^7.29.7", + "@babel/generator": "^7.29.8", "@babel/helper-globals": "^7.29.7", - "@babel/parser": "^7.29.7", + "@babel/parser": "^7.29.8", "@babel/template": "^7.29.7", - "@babel/types": "^7.29.7", + "@babel/types": "^7.29.8", "debug": "^4.3.1" }, "engines": { @@ -1982,9 +1983,9 @@ } }, "node_modules/@babel/types": { - "version": "7.29.7", - "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.29.7.tgz", - "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", + "version": "7.29.8", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.29.7", @@ -2238,9 +2239,9 @@ } }, "node_modules/@csstools/postcss-cascade-layers/node_modules/postcss-selector-parser": { - "version": "7.1.4", - "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz", - "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==", + "version": "7.1.5", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz", + "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -2659,9 +2660,9 @@ } }, "node_modules/@csstools/postcss-is-pseudo-class/node_modules/postcss-selector-parser": { - "version": "7.1.4", - "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz", - "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==", + "version": "7.1.5", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz", + "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -3106,9 +3107,9 @@ } }, "node_modules/@csstools/postcss-scope-pseudo-class/node_modules/postcss-selector-parser": { - "version": "7.1.4", - "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz", - "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==", + "version": "7.1.5", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz", + "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -3330,9 +3331,9 @@ } }, "node_modules/@docsearch/core": { - "version": "4.6.3", - "resolved": "https://registry.npmmirror.com/@docsearch/core/-/core-4.6.3.tgz", - "integrity": "sha512-rUOujwIpxJRgD7+kicVsI3D5sqBvdiRTquzWBpTEXZs8ZXfGbfzpus5HqumaNYTppN2HvH8E2yNuRwYdHJeOlA==", + "version": "4.7.0", + "resolved": "https://registry.npmmirror.com/@docsearch/core/-/core-4.7.0.tgz", + "integrity": "sha512-p/9xVKmPDj3FPvMfPf5naVO3Ej8SCbcUugGvx1+8GgkuBNbqxqN2Irx3WLBv8VY0jH7XpRwKWdlmjXLZsmTLsg==", "license": "MIT", "peerDependencies": { "@types/react": ">= 16.8.0 < 20.0.0", @@ -3352,20 +3353,20 @@ } }, "node_modules/@docsearch/css": { - "version": "4.6.3", - "resolved": "https://registry.npmmirror.com/@docsearch/css/-/css-4.6.3.tgz", - "integrity": "sha512-nlOwcXcsNAptQl4vlL4MA78qNJKO0Qlds5GuBjCoePgkebTXLSf8Qt1oyZ3YBshYupKXG9VRGEsk1zr23d+bzQ==", + "version": "4.7.0", + "resolved": "https://registry.npmmirror.com/@docsearch/css/-/css-4.7.0.tgz", + "integrity": "sha512-Sk5xkdRFeE7PeWjG9l4AfTwdvMfr9wHiwNNCpHXT4v4SNyNMKdHGvEILc31BgaVFGDDNbv5u/a73tofRiwbEZw==", "license": "MIT" }, "node_modules/@docsearch/react": { - "version": "4.6.3", - "resolved": "https://registry.npmmirror.com/@docsearch/react/-/react-4.6.3.tgz", - "integrity": "sha512-Bg2wdDsoQVlNCcEKuEJAU04tvHCqgx8rIu+uIoM4pRtcx3TBKJuXutJik3LTA8LRc9YEyHkrYUrmcC0D7BYf+g==", + "version": "4.7.0", + "resolved": "https://registry.npmmirror.com/@docsearch/react/-/react-4.7.0.tgz", + "integrity": "sha512-x6oedjJ8O8/pIDBsMo5Orca3/6cQCz616/CwthVe68l43mqnj2lrJ9kFQITBqy8hMsS3nWeBWFoVO5dJ1DCFKA==", "license": "MIT", "dependencies": { "@algolia/autocomplete-core": "1.19.2", - "@docsearch/core": "4.6.3", - "@docsearch/css": "4.6.3" + "@docsearch/core": "4.7.0", + "@docsearch/css": "4.7.0" }, "peerDependencies": { "@types/react": ">= 16.8.0 < 20.0.0", @@ -3445,6 +3446,20 @@ "node": ">=20.0" } }, + "node_modules/@docusaurus/babel/node_modules/fs-extra": { + "version": "11.4.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.4.0.tgz", + "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/@docusaurus/bundler": { "version": "3.10.2", "resolved": "https://registry.npmmirror.com/@docusaurus/bundler/-/bundler-3.10.2.tgz", @@ -3555,6 +3570,20 @@ } } }, + "node_modules/@docusaurus/core/node_modules/fs-extra": { + "version": "11.4.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.4.0.tgz", + "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/@docusaurus/cssnano-preset": { "version": "3.10.2", "resolved": "https://registry.npmmirror.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.10.2.tgz", @@ -3646,6 +3675,20 @@ "react-dom": "^18.0.0 || ^19.0.0" } }, + "node_modules/@docusaurus/mdx-loader/node_modules/fs-extra": { + "version": "11.4.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.4.0.tgz", + "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/@docusaurus/module-type-aliases": { "version": "3.10.2", "resolved": "https://registry.npmmirror.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.10.2.tgz", @@ -3700,6 +3743,20 @@ "react-dom": "^18.0.0 || ^19.0.0" } }, + "node_modules/@docusaurus/plugin-content-blog/node_modules/fs-extra": { + "version": "11.4.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.4.0.tgz", + "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/@docusaurus/plugin-content-docs": { "version": "3.10.2", "resolved": "https://registry.npmmirror.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.10.2.tgz", @@ -3733,6 +3790,20 @@ "react-dom": "^18.0.0 || ^19.0.0" } }, + "node_modules/@docusaurus/plugin-content-docs/node_modules/fs-extra": { + "version": "11.4.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.4.0.tgz", + "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/@docusaurus/plugin-content-pages": { "version": "3.10.2", "resolved": "https://registry.npmmirror.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.10.2.tgz", @@ -3756,6 +3827,20 @@ "react-dom": "^18.0.0 || ^19.0.0" } }, + "node_modules/@docusaurus/plugin-content-pages/node_modules/fs-extra": { + "version": "11.4.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.4.0.tgz", + "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/@docusaurus/plugin-css-cascade-layers": { "version": "3.10.2", "resolved": "https://registry.npmmirror.com/@docusaurus/plugin-css-cascade-layers/-/plugin-css-cascade-layers-3.10.2.tgz", @@ -3793,6 +3878,20 @@ "react-dom": "^18.0.0 || ^19.0.0" } }, + "node_modules/@docusaurus/plugin-debug/node_modules/fs-extra": { + "version": "11.4.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.4.0.tgz", + "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/@docusaurus/plugin-google-analytics": { "version": "3.10.2", "resolved": "https://registry.npmmirror.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.10.2.tgz", @@ -3874,6 +3973,20 @@ "react-dom": "^18.0.0 || ^19.0.0" } }, + "node_modules/@docusaurus/plugin-sitemap/node_modules/fs-extra": { + "version": "11.4.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.4.0.tgz", + "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/@docusaurus/plugin-svgr": { "version": "3.10.2", "resolved": "https://registry.npmmirror.com/@docusaurus/plugin-svgr/-/plugin-svgr-3.10.2.tgz", @@ -4028,6 +4141,20 @@ "react-dom": "^18.0.0 || ^19.0.0" } }, + "node_modules/@docusaurus/theme-search-algolia/node_modules/fs-extra": { + "version": "11.4.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.4.0.tgz", + "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/@docusaurus/theme-translations": { "version": "3.10.2", "resolved": "https://registry.npmmirror.com/@docusaurus/theme-translations/-/theme-translations-3.10.2.tgz", @@ -4041,6 +4168,20 @@ "node": ">=20.0" } }, + "node_modules/@docusaurus/theme-translations/node_modules/fs-extra": { + "version": "11.4.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.4.0.tgz", + "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/@docusaurus/tsconfig": { "version": "3.10.2", "resolved": "https://registry.npmmirror.com/@docusaurus/tsconfig/-/tsconfig-3.10.2.tgz", @@ -4148,21 +4289,154 @@ "node": ">=20.0" } }, + "node_modules/@docusaurus/utils-validation/node_modules/fs-extra": { + "version": "11.4.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.4.0.tgz", + "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@docusaurus/utils/node_modules/fs-extra": { + "version": "11.4.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.4.0.tgz", + "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@easyops-cn/autocomplete.js": { + "version": "0.38.1", + "resolved": "https://registry.npmmirror.com/@easyops-cn/autocomplete.js/-/autocomplete.js-0.38.1.tgz", + "integrity": "sha512-drg76jS6syilOUmVNkyo1c7ZEBPcPuK+aJA7AksM5ZIIbV57DMHCywiCr+uHyv8BE5jUTU98j/H7gVrkHrWW3Q==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "immediate": "^3.2.3" + } + }, + "node_modules/@easyops-cn/docusaurus-search-local": { + "version": "0.55.3", + "resolved": "https://registry.npmmirror.com/@easyops-cn/docusaurus-search-local/-/docusaurus-search-local-0.55.3.tgz", + "integrity": "sha512-PlMKmxuonvZ1C+/zJS1hJaF1xaxD1TsUvOMzpP6DdQMtZqmTaYjcLGM12ePzl0m1rp3AgfTBeDbFNHQhwnH/dA==", + "license": "MIT", + "dependencies": { + "@docusaurus/plugin-content-docs": "^2 || ^3", + "@docusaurus/theme-translations": "^2 || ^3", + "@docusaurus/utils": "^2 || ^3", + "@docusaurus/utils-common": "^2 || ^3", + "@docusaurus/utils-validation": "^2 || ^3", + "@easyops-cn/autocomplete.js": "^0.38.1", + "@node-rs/jieba": "^1.6.0", + "cheerio": "^1.0.0", + "clsx": "^2.1.1", + "comlink": "^4.4.2", + "debug": "^4.2.0", + "fs-extra": "^10.0.0", + "klaw-sync": "^6.0.0", + "lunr": "^2.3.9", + "lunr-languages": "^1.4.0", + "mark.js": "^8.11.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "@docusaurus/theme-common": "^2 || ^3", + "open-ask-ai": "^0.7.3", + "react": "^16.14.0 || ^17 || ^18 || ^19", + "react-dom": "^16.14.0 || 17 || ^18 || ^19" + }, + "peerDependenciesMeta": { + "open-ask-ai": { + "optional": true + } + } + }, + "node_modules/@easyops-cn/docusaurus-search-local/node_modules/cheerio": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/cheerio/-/cheerio-1.2.0.tgz", + "integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==", + "license": "MIT", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "encoding-sniffer": "^0.2.1", + "htmlparser2": "^10.1.0", + "parse5": "^7.3.0", + "parse5-htmlparser2-tree-adapter": "^7.1.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^7.19.0", + "whatwg-mimetype": "^4.0.0" + }, + "engines": { + "node": ">=20.18.1" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/@easyops-cn/docusaurus-search-local/node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/@easyops-cn/docusaurus-search-local/node_modules/htmlparser2": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-10.1.0.tgz", + "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "entities": "^7.0.1" + } + }, "node_modules/@emnapi/core": { - "version": "1.11.3", - "resolved": "https://registry.npmmirror.com/@emnapi/core/-/core-1.11.3.tgz", - "integrity": "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==", + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@emnapi/core/-/core-1.11.1.tgz", + "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", "license": "MIT", "optional": true, "dependencies": { - "@emnapi/wasi-threads": "1.2.3", + "@emnapi/wasi-threads": "1.2.2", "tslib": "^2.4.0" } }, "node_modules/@emnapi/runtime": { - "version": "1.11.3", - "resolved": "https://registry.npmmirror.com/@emnapi/runtime/-/runtime-1.11.3.tgz", - "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==", + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@emnapi/runtime/-/runtime-1.11.1.tgz", + "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", "license": "MIT", "optional": true, "dependencies": { @@ -4170,9 +4444,9 @@ } }, "node_modules/@emnapi/wasi-threads": { - "version": "1.2.3", - "resolved": "https://registry.npmmirror.com/@emnapi/wasi-threads/-/wasi-threads-1.2.3.tgz", - "integrity": "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==", + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", + "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", "license": "MIT", "optional": true, "dependencies": { @@ -4327,13 +4601,13 @@ } }, "node_modules/@jsonjoy.com/fs-core": { - "version": "4.64.0", - "resolved": "https://registry.npmmirror.com/@jsonjoy.com/fs-core/-/fs-core-4.64.0.tgz", - "integrity": "sha512-zs2TAq7Six5jgMuoMNjpspAvOP3mhtgq/k1UyQodEzCtQi/N83y2/y+zcvnZSGp/Rxq96DBN+bValOBQAyn/ew==", + "version": "4.57.8", + "resolved": "https://registry.npmmirror.com/@jsonjoy.com/fs-core/-/fs-core-4.57.8.tgz", + "integrity": "sha512-YzVbwggV9452VCeHgo0bjsTaUt1O7JE0XpEsPar93nn/+RAwXk0mb1Y+f5EDJ3TRtRCFe+Ck5RuojdfB4jeHVw==", "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-node-builtins": "4.64.0", - "@jsonjoy.com/fs-node-utils": "4.64.0", + "@jsonjoy.com/fs-node-builtins": "4.57.8", + "@jsonjoy.com/fs-node-utils": "4.57.8", "thingies": "^2.5.0" }, "engines": { @@ -4348,14 +4622,14 @@ } }, "node_modules/@jsonjoy.com/fs-fsa": { - "version": "4.64.0", - "resolved": "https://registry.npmmirror.com/@jsonjoy.com/fs-fsa/-/fs-fsa-4.64.0.tgz", - "integrity": "sha512-nMWOVbkLFyEgmXZih3wyvxA9XpgyyqyfrINMHvEFqhi7uqfRl7c9ERJt6yX7vgMPrB9Uo+OJO+Spa0cFzPD01w==", + "version": "4.57.8", + "resolved": "https://registry.npmmirror.com/@jsonjoy.com/fs-fsa/-/fs-fsa-4.57.8.tgz", + "integrity": "sha512-vmClyvCQMxgqz7uamDiGtRfp4MjzOznk3pcQjCxlIwJcw7TWeyr+bF30hI0x8NxdtNOGMg1pHM74VDIXOeyjuw==", "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-core": "4.64.0", - "@jsonjoy.com/fs-node-builtins": "4.64.0", - "@jsonjoy.com/fs-node-utils": "4.64.0", + "@jsonjoy.com/fs-core": "4.57.8", + "@jsonjoy.com/fs-node-builtins": "4.57.8", + "@jsonjoy.com/fs-node-utils": "4.57.8", "thingies": "^2.5.0" }, "engines": { @@ -4370,16 +4644,16 @@ } }, "node_modules/@jsonjoy.com/fs-node": { - "version": "4.64.0", - "resolved": "https://registry.npmmirror.com/@jsonjoy.com/fs-node/-/fs-node-4.64.0.tgz", - "integrity": "sha512-dO+NNkODbUli4uV42bcNrrLvq5rE7SNpdZ5TNd0dtbLsAaNK3MDiIC9lUi+brboGoIjW6vd2fB1qao60nrk5xA==", + "version": "4.57.8", + "resolved": "https://registry.npmmirror.com/@jsonjoy.com/fs-node/-/fs-node-4.57.8.tgz", + "integrity": "sha512-IPEOlDYSnTDYpjQlQg2F8h+eqxKQN3sdbroI0WrteRiQZ462HzVpBo9ZZX485njz4nAacoe3fd4iDiIhk+k5Hg==", "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-core": "4.64.0", - "@jsonjoy.com/fs-node-builtins": "4.64.0", - "@jsonjoy.com/fs-node-utils": "4.64.0", - "@jsonjoy.com/fs-print": "4.64.0", - "@jsonjoy.com/fs-snapshot": "4.64.0", + "@jsonjoy.com/fs-core": "4.57.8", + "@jsonjoy.com/fs-node-builtins": "4.57.8", + "@jsonjoy.com/fs-node-utils": "4.57.8", + "@jsonjoy.com/fs-print": "4.57.8", + "@jsonjoy.com/fs-snapshot": "4.57.8", "glob-to-regex.js": "^1.0.0", "thingies": "^2.5.0" }, @@ -4395,9 +4669,9 @@ } }, "node_modules/@jsonjoy.com/fs-node-builtins": { - "version": "4.64.0", - "resolved": "https://registry.npmmirror.com/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.64.0.tgz", - "integrity": "sha512-/o7WRFhUWaM/fOrslwLZGnzn4RmRILykn+lAL+mNObqqRNw+CQSiij6hpCeZ+C7buhdoVo7go/OYqzaSUfDYmA==", + "version": "4.57.8", + "resolved": "https://registry.npmmirror.com/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.57.8.tgz", + "integrity": "sha512-mxXSXw8zZwRVakcjLqR2I/psy4gURFSASZS10kKJ2kJw05GC2nXGroGrWVHxwgkxXgQLsFQnB74QaLzsxzdL/w==", "license": "Apache-2.0", "engines": { "node": ">=10.0" @@ -4411,14 +4685,14 @@ } }, "node_modules/@jsonjoy.com/fs-node-to-fsa": { - "version": "4.64.0", - "resolved": "https://registry.npmmirror.com/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.64.0.tgz", - "integrity": "sha512-WDD9WVs0hb7UAEKTgZW2f66WDrbj7gIIWwpP3spbLyXa0rghtUaFTB8L4gdR3ZCWwiKIsj38/CNijpVmpnuPUw==", + "version": "4.57.8", + "resolved": "https://registry.npmmirror.com/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.57.8.tgz", + "integrity": "sha512-AWZcT/4+H+iDl4XCukbXrarvwEgOrf/prFI5/7eg4ix9FxqVsZysIDJd1Kjd+AjlCeHKHJOaRqjLd5HiGSCJEw==", "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-fsa": "4.64.0", - "@jsonjoy.com/fs-node-builtins": "4.64.0", - "@jsonjoy.com/fs-node-utils": "4.64.0" + "@jsonjoy.com/fs-fsa": "4.57.8", + "@jsonjoy.com/fs-node-builtins": "4.57.8", + "@jsonjoy.com/fs-node-utils": "4.57.8" }, "engines": { "node": ">=10.0" @@ -4432,13 +4706,12 @@ } }, "node_modules/@jsonjoy.com/fs-node-utils": { - "version": "4.64.0", - "resolved": "https://registry.npmmirror.com/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.64.0.tgz", - "integrity": "sha512-k5Indsx9hWW9xSF7Y6oSKKwtCUNhzZxadub3owhIlitc+iMRVlPPdX2duTKQWBL3qNWpXya8jykgaaWpheeS4w==", + "version": "4.57.8", + "resolved": "https://registry.npmmirror.com/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.57.8.tgz", + "integrity": "sha512-E/bJ7sQAb4pu9nbeJhbULU3WnqWrswte4N9Js/oHt7aHB746S8/XBqKlcbrqIgnD3095XluovNEZuu5ONT230g==", "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-node-builtins": "4.64.0", - "glob-to-regex.js": "^1.0.1" + "@jsonjoy.com/fs-node-builtins": "4.57.8" }, "engines": { "node": ">=10.0" @@ -4452,12 +4725,12 @@ } }, "node_modules/@jsonjoy.com/fs-print": { - "version": "4.64.0", - "resolved": "https://registry.npmmirror.com/@jsonjoy.com/fs-print/-/fs-print-4.64.0.tgz", - "integrity": "sha512-PHZFccchvkhWrwPWHjmVAhbC3vSHCtyZvlZfJJ3ho2bnzl450hXri6/8e6pbkWdH+SkmLXNml0sV8e5HDAfxKw==", + "version": "4.57.8", + "resolved": "https://registry.npmmirror.com/@jsonjoy.com/fs-print/-/fs-print-4.57.8.tgz", + "integrity": "sha512-DfzhOBpmvNu5P/KSe4NNQaOnvNliTdcf0qrh/4EReErF/XUQXYkd0vZl/OiJCm/qjEEo8DWRstliw2/JNS84dA==", "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-node-utils": "4.64.0", + "@jsonjoy.com/fs-node-utils": "4.57.8", "tree-dump": "^1.1.0" }, "engines": { @@ -4472,13 +4745,13 @@ } }, "node_modules/@jsonjoy.com/fs-snapshot": { - "version": "4.64.0", - "resolved": "https://registry.npmmirror.com/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.64.0.tgz", - "integrity": "sha512-oM7UDeL83q6NBzzsfKAsYKXKVXlykKFqqOLh4xZZKAzzROTlInkPbc6LTDGThEOnPiFiUzA7tYziHG9xavd76Q==", + "version": "4.57.8", + "resolved": "https://registry.npmmirror.com/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.57.8.tgz", + "integrity": "sha512-L+eqKaWOHLDaiMv1dh/EWQ4hA+o6xAhWSumTo3Teg7OM18jU/KE13/e8Mfal+eAZ/pSl4wIhKHcDiwapJzC8Wg==", "license": "Apache-2.0", "dependencies": { "@jsonjoy.com/buffers": "^17.65.0", - "@jsonjoy.com/fs-node-utils": "4.64.0", + "@jsonjoy.com/fs-node-utils": "4.57.8", "@jsonjoy.com/json-pack": "^17.65.0", "@jsonjoy.com/util": "^17.65.0" }, @@ -4825,6 +5098,283 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/@node-rs/jieba": { + "version": "1.10.4", + "resolved": "https://registry.npmmirror.com/@node-rs/jieba/-/jieba-1.10.4.tgz", + "integrity": "sha512-GvDgi8MnBiyWd6tksojej8anIx18244NmIOc1ovEw8WKNUejcccLfyu8vj66LWSuoZuKILVtNsOy4jvg3aoxIw==", + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@node-rs/jieba-android-arm-eabi": "1.10.4", + "@node-rs/jieba-android-arm64": "1.10.4", + "@node-rs/jieba-darwin-arm64": "1.10.4", + "@node-rs/jieba-darwin-x64": "1.10.4", + "@node-rs/jieba-freebsd-x64": "1.10.4", + "@node-rs/jieba-linux-arm-gnueabihf": "1.10.4", + "@node-rs/jieba-linux-arm64-gnu": "1.10.4", + "@node-rs/jieba-linux-arm64-musl": "1.10.4", + "@node-rs/jieba-linux-x64-gnu": "1.10.4", + "@node-rs/jieba-linux-x64-musl": "1.10.4", + "@node-rs/jieba-wasm32-wasi": "1.10.4", + "@node-rs/jieba-win32-arm64-msvc": "1.10.4", + "@node-rs/jieba-win32-ia32-msvc": "1.10.4", + "@node-rs/jieba-win32-x64-msvc": "1.10.4" + } + }, + "node_modules/@node-rs/jieba-android-arm-eabi": { + "version": "1.10.4", + "resolved": "https://registry.npmmirror.com/@node-rs/jieba-android-arm-eabi/-/jieba-android-arm-eabi-1.10.4.tgz", + "integrity": "sha512-MhyvW5N3Fwcp385d0rxbCWH42kqDBatQTyP8XbnYbju2+0BO/eTeCCLYj7Agws4pwxn2LtdldXRSKavT7WdzNA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-android-arm64": { + "version": "1.10.4", + "resolved": "https://registry.npmmirror.com/@node-rs/jieba-android-arm64/-/jieba-android-arm64-1.10.4.tgz", + "integrity": "sha512-XyDwq5+rQ+Tk55A+FGi6PtJbzf974oqnpyCcCPzwU3QVXJCa2Rr4Lci+fx8oOpU4plT3GuD+chXMYLsXipMgJA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-darwin-arm64": { + "version": "1.10.4", + "resolved": "https://registry.npmmirror.com/@node-rs/jieba-darwin-arm64/-/jieba-darwin-arm64-1.10.4.tgz", + "integrity": "sha512-G++RYEJ2jo0rxF9626KUy90wp06TRUjAsvY/BrIzEOX/ingQYV/HjwQzNPRR1P1o32a6/U8RGo7zEBhfdybL6w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-darwin-x64": { + "version": "1.10.4", + "resolved": "https://registry.npmmirror.com/@node-rs/jieba-darwin-x64/-/jieba-darwin-x64-1.10.4.tgz", + "integrity": "sha512-MmDNeOb2TXIZCPyWCi2upQnZpPjAxw5ZGEj6R8kNsPXVFALHIKMa6ZZ15LCOkSTsKXVC17j2t4h+hSuyYb6qfQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-freebsd-x64": { + "version": "1.10.4", + "resolved": "https://registry.npmmirror.com/@node-rs/jieba-freebsd-x64/-/jieba-freebsd-x64-1.10.4.tgz", + "integrity": "sha512-/x7aVQ8nqUWhpXU92RZqd333cq639i/olNpd9Z5hdlyyV5/B65LLy+Je2B2bfs62PVVm5QXRpeBcZqaHelp/bg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-arm-gnueabihf": { + "version": "1.10.4", + "resolved": "https://registry.npmmirror.com/@node-rs/jieba-linux-arm-gnueabihf/-/jieba-linux-arm-gnueabihf-1.10.4.tgz", + "integrity": "sha512-crd2M35oJBRLkoESs0O6QO3BBbhpv+tqXuKsqhIG94B1d02RVxtRIvSDwO33QurxqSdvN9IeSnVpHbDGkuXm3g==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-arm64-gnu": { + "version": "1.10.4", + "resolved": "https://registry.npmmirror.com/@node-rs/jieba-linux-arm64-gnu/-/jieba-linux-arm64-gnu-1.10.4.tgz", + "integrity": "sha512-omIzNX1psUzPcsdnUhGU6oHeOaTCuCjUgOA/v/DGkvWC1jLcnfXe4vdYbtXMh4XOCuIgS1UCcvZEc8vQLXFbXQ==", + "cpu": [ + "arm64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-arm64-musl": { + "version": "1.10.4", + "resolved": "https://registry.npmmirror.com/@node-rs/jieba-linux-arm64-musl/-/jieba-linux-arm64-musl-1.10.4.tgz", + "integrity": "sha512-Y/tiJ1+HeS5nnmLbZOE+66LbsPOHZ/PUckAYVeLlQfpygLEpLYdlh0aPpS5uiaWMjAXYZYdFkpZHhxDmSLpwpw==", + "cpu": [ + "arm64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-x64-gnu": { + "version": "1.10.4", + "resolved": "https://registry.npmmirror.com/@node-rs/jieba-linux-x64-gnu/-/jieba-linux-x64-gnu-1.10.4.tgz", + "integrity": "sha512-WZO8ykRJpWGE9MHuZpy1lu3nJluPoeB+fIJJn5CWZ9YTVhNDWoCF4i/7nxz1ntulINYGQ8VVuCU9LD86Mek97g==", + "cpu": [ + "x64" + ], + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-x64-musl": { + "version": "1.10.4", + "resolved": "https://registry.npmmirror.com/@node-rs/jieba-linux-x64-musl/-/jieba-linux-x64-musl-1.10.4.tgz", + "integrity": "sha512-uBBD4S1rGKcgCyAk6VCKatEVQb6EDD5I40v/DxODi5CuZVCANi9m5oee/MQbAoaX7RydA2f0OSCE9/tcwXEwUg==", + "cpu": [ + "x64" + ], + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-wasm32-wasi": { + "version": "1.10.4", + "resolved": "https://registry.npmmirror.com/@node-rs/jieba-wasm32-wasi/-/jieba-wasm32-wasi-1.10.4.tgz", + "integrity": "sha512-Y2umiKHjuIJy0uulNDz9SDYHdfq5Hmy7jY5nORO99B4pySKkcrMjpeVrmWXJLIsEKLJwcCXHxz8tjwU5/uhz0A==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@node-rs/jieba-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmmirror.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, + "node_modules/@node-rs/jieba-win32-arm64-msvc": { + "version": "1.10.4", + "resolved": "https://registry.npmmirror.com/@node-rs/jieba-win32-arm64-msvc/-/jieba-win32-arm64-msvc-1.10.4.tgz", + "integrity": "sha512-nwMtViFm4hjqhz1it/juQnxpXgqlGltCuWJ02bw70YUDMDlbyTy3grCJPpQQpueeETcALUnTxda8pZuVrLRcBA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-win32-ia32-msvc": { + "version": "1.10.4", + "resolved": "https://registry.npmmirror.com/@node-rs/jieba-win32-ia32-msvc/-/jieba-win32-ia32-msvc-1.10.4.tgz", + "integrity": "sha512-DCAvLx7Z+W4z5oKS+7vUowAJr0uw9JBw8x1Y23Xs/xMA4Em+OOSiaF5/tCJqZUCJ8uC4QeImmgDFiBqGNwxlyA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-win32-x64-msvc": { + "version": "1.10.4", + "resolved": "https://registry.npmmirror.com/@node-rs/jieba-win32-x64-msvc/-/jieba-win32-x64-msvc-1.10.4.tgz", + "integrity": "sha512-+sqemSfS1jjb+Tt7InNbNzrRh1Ua3vProVvC4BZRPg010/leCbGFFiQHpzcPRfpxAXZrzG5Y0YBTsPzN/I4yHQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -5560,9 +6110,9 @@ } }, "node_modules/@swc/core": { - "version": "1.15.46", - "resolved": "https://registry.npmmirror.com/@swc/core/-/core-1.15.46.tgz", - "integrity": "sha512-Ri3em2mBpq3h2zSPliCYl63otDGqek8PPEfv2nWgRQEbZ/VBCNyypVTVQ6cEbTCXBhy+WE2T3fQb08moIyuYaw==", + "version": "1.15.47", + "resolved": "https://registry.npmmirror.com/@swc/core/-/core-1.15.47.tgz", + "integrity": "sha512-FbsO5JcfOjfH38W/rohBRBweJeERsAuIP4f377lmkmxTcq9exjtx4SkRuZY5CdfhR2CBVwDIJegBpJDffwNsOg==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -5577,18 +6127,18 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.15.46", - "@swc/core-darwin-x64": "1.15.46", - "@swc/core-linux-arm-gnueabihf": "1.15.46", - "@swc/core-linux-arm64-gnu": "1.15.46", - "@swc/core-linux-arm64-musl": "1.15.46", - "@swc/core-linux-ppc64-gnu": "1.15.46", - "@swc/core-linux-s390x-gnu": "1.15.46", - "@swc/core-linux-x64-gnu": "1.15.46", - "@swc/core-linux-x64-musl": "1.15.46", - "@swc/core-win32-arm64-msvc": "1.15.46", - "@swc/core-win32-ia32-msvc": "1.15.46", - "@swc/core-win32-x64-msvc": "1.15.46" + "@swc/core-darwin-arm64": "1.15.47", + "@swc/core-darwin-x64": "1.15.47", + "@swc/core-linux-arm-gnueabihf": "1.15.47", + "@swc/core-linux-arm64-gnu": "1.15.47", + "@swc/core-linux-arm64-musl": "1.15.47", + "@swc/core-linux-ppc64-gnu": "1.15.47", + "@swc/core-linux-s390x-gnu": "1.15.47", + "@swc/core-linux-x64-gnu": "1.15.47", + "@swc/core-linux-x64-musl": "1.15.47", + "@swc/core-win32-arm64-msvc": "1.15.47", + "@swc/core-win32-ia32-msvc": "1.15.47", + "@swc/core-win32-x64-msvc": "1.15.47" }, "peerDependencies": { "@swc/helpers": ">=0.5.17" @@ -5600,9 +6150,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.15.46", - "resolved": "https://registry.npmmirror.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.46.tgz", - "integrity": "sha512-IsISIT22EfktVJrlvIpnAxG2u/A9aob9l99HMlx80x72WlFmFPk1V3UhkEzx86eJP8hw049KTFv/RISho2cq2Q==", + "version": "1.15.47", + "resolved": "https://registry.npmmirror.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.47.tgz", + "integrity": "sha512-GsoMtan3ojGGMGFbl31mmRu5ctZ56re8grGE8mO/OHJ8O+JRkzod02fe7X6ZQ8JvamA3imkEkx/h3u+vsOgPgA==", "cpu": [ "arm64" ], @@ -5616,9 +6166,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.15.46", - "resolved": "https://registry.npmmirror.com/@swc/core-darwin-x64/-/core-darwin-x64-1.15.46.tgz", - "integrity": "sha512-4Tj4ppVIPCmUMpmGFiGtyEriwLyJ+yi/US4WfBrP/ok8COGddDZXLEzQETnKyK46mjvr1v0jevrS23zjoff7vA==", + "version": "1.15.47", + "resolved": "https://registry.npmmirror.com/@swc/core-darwin-x64/-/core-darwin-x64-1.15.47.tgz", + "integrity": "sha512-leTi7Rx3KF4zcC637iqWgk9SoV8VXAD8ppQYXsep63px5A/UftOcxLN1pmr8Z1si/YvX90ompP/rHgpYkgwXWg==", "cpu": [ "x64" ], @@ -5632,9 +6182,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.15.46", - "resolved": "https://registry.npmmirror.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.46.tgz", - "integrity": "sha512-i8tUGnNjyOgMmfmgFSg4aeJLQoFyfpIHK5FjpQAwpRyQIqEUB2w1e8zIDQzY1WhOxx8NoS1S5iUL813Un4Sf5A==", + "version": "1.15.47", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.47.tgz", + "integrity": "sha512-hBqHuoWKKIsKmDBn9qVeWqj5GWZhtlcczVaqQmNRXsDfq+voR5CxKRfamA367QjJXtceYuliLFfEL8QsskRM2g==", "cpu": [ "arm" ], @@ -5648,9 +6198,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.15.46", - "resolved": "https://registry.npmmirror.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.46.tgz", - "integrity": "sha512-c0OnhqzdhfOvv6qhNCcByepB+sNYOGZyhtr2Qa6ZCHvAWTYhSRw4j/u92Stue9PbZ/6q74b9nHzi76+kVzqQHQ==", + "version": "1.15.47", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.47.tgz", + "integrity": "sha512-TBxvRz+B4K205TWHHZxWVxkC2RFNP/Mz3PNcECBos5PsKwxjg3QSJzdoebr0VCf0Bfh8HOPldKxAP/8XkFe9gA==", "cpu": [ "arm64" ], @@ -5667,9 +6217,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.15.46", - "resolved": "https://registry.npmmirror.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.46.tgz", - "integrity": "sha512-imyRpNEcUzFQFV2LE4jL68ErvmKEuZCbvZru77iQREunJ+bR4i658cupTgtG1mLYM3F1Tzy3Sb9xYb02KghWTg==", + "version": "1.15.47", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.47.tgz", + "integrity": "sha512-3Yu3Uq/VgytqsPjTMbkPU1ExADytbdWbruJYhA584E9jrpE2Ki+R6VVPoZCeAVk1Cb7QxcRTgblw6bSa6a/R+w==", "cpu": [ "arm64" ], @@ -5686,9 +6236,9 @@ } }, "node_modules/@swc/core-linux-ppc64-gnu": { - "version": "1.15.46", - "resolved": "https://registry.npmmirror.com/@swc/core-linux-ppc64-gnu/-/core-linux-ppc64-gnu-1.15.46.tgz", - "integrity": "sha512-ctEfcl/HcUeomK33cbySiHZm98GEDIxTm1EkpBsYCiHxElYBzvTXVeuQT2YwbUXn9XCrjiw4ipyUNk33k26qRg==", + "version": "1.15.47", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-ppc64-gnu/-/core-linux-ppc64-gnu-1.15.47.tgz", + "integrity": "sha512-wfdMi5IaOaNtmh2/6geRoxIdNfqylUZFdtzTKS655y1axWfIWyx7As74vv0wVdjeCIZ3WmCI9odDd4rUttXOSQ==", "cpu": [ "ppc64" ], @@ -5705,9 +6255,9 @@ } }, "node_modules/@swc/core-linux-s390x-gnu": { - "version": "1.15.46", - "resolved": "https://registry.npmmirror.com/@swc/core-linux-s390x-gnu/-/core-linux-s390x-gnu-1.15.46.tgz", - "integrity": "sha512-DxlMdnt84TtRVTv7WL/thWyz9+QU8QZNNoAP9rrk0P68LziuhfePp8MjQ44zIprpTHTsEwyziIuGUUN5iSC1bQ==", + "version": "1.15.47", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-s390x-gnu/-/core-linux-s390x-gnu-1.15.47.tgz", + "integrity": "sha512-3hHYBY0yx8Ez7GMRrkhXHQzMdR5IZA6Wq5Ee4svlgwvSECLpnAJ9+0AimEGUFDvuLwE7nV/2+PYe8+Nm4rvNcQ==", "cpu": [ "s390x" ], @@ -5724,9 +6274,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.15.46", - "resolved": "https://registry.npmmirror.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.46.tgz", - "integrity": "sha512-SKxI7J6t90XPl8hRUqtJi9NfGdunN/E/vZMc7Bc0figeRdOPDBT+Tm8g7cx9xM0T0mewh2l+8dewa3Am27/P+A==", + "version": "1.15.47", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.47.tgz", + "integrity": "sha512-TjfhjgP/jGCfFHYC3JQPhJA1HwErbIJ9JfREDc1KNkvY6P0LodCgKVIlQ5deeTbkG7ih3bF5PHJLuLpaZjdRyQ==", "cpu": [ "x64" ], @@ -5743,9 +6293,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.15.46", - "resolved": "https://registry.npmmirror.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.46.tgz", - "integrity": "sha512-qj9T6B7bosI0VEsrWOVXZN1OXxS8Tp63ywyrLxNdOycnUtLdkgYcoBsN5y8ImnDDsnwrEWZOy1e+J4xSe7mA3Q==", + "version": "1.15.47", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.47.tgz", + "integrity": "sha512-CQpS8Ge/avfjZd0UEwG/sds83Uu32deQXcV1Jo3jD0mmvQQqtYAjpsDZXugmheeAwmt+YIuoVtVHro8LMYHqsQ==", "cpu": [ "x64" ], @@ -5762,9 +6312,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.15.46", - "resolved": "https://registry.npmmirror.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.46.tgz", - "integrity": "sha512-8p7l4c3LU+eA5g9Et1JPhNeMC1oQwXTGU+uah8DPIBX7YXzqswvaBtyKVmXefVGi/DJU1x3YJsc3mbAp9aWzSQ==", + "version": "1.15.47", + "resolved": "https://registry.npmmirror.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.47.tgz", + "integrity": "sha512-0W8IKHsUTYiT7G2RqtOoVWk+89yzZikIiDUb/sCK6BmQDBhN91hQSfyUtW12jhEWLzYgcfmisfsZrmZE+84U1A==", "cpu": [ "arm64" ], @@ -5778,9 +6328,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.15.46", - "resolved": "https://registry.npmmirror.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.46.tgz", - "integrity": "sha512-tUEnfr3Bn9u6FOjUb3PN9p+09qZC2j+wNDLKHzXXZn22rqGcUqR/ohCRSS+nG9B9+X+U+3FewNEHJkTmdIvMjQ==", + "version": "1.15.47", + "resolved": "https://registry.npmmirror.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.47.tgz", + "integrity": "sha512-ZIp49d2Z4/ka2jO9otOg4hDvTdPmp86kVOgS2M5FCPI7eKKZ1W0boxWn+8XeZrfERtFGW0AlMRm4JhlJa7l3NA==", "cpu": [ "ia32" ], @@ -5794,9 +6344,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.15.46", - "resolved": "https://registry.npmmirror.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.46.tgz", - "integrity": "sha512-Vux7UDzBJYQggSuPfcl2w9iu+IJpgpRCxHzgCaVkELnAXAE4XZMOTX9HNcaNiwfeIDqdu2rkr69RuDm6wY8neA==", + "version": "1.15.47", + "resolved": "https://registry.npmmirror.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.47.tgz", + "integrity": "sha512-2h8Iek95vnixkBRCo+H8p09+Q5ll2NgSMFrWTy0iKt7+/t+8/T5mBpiT6c0ZxSS7wcWjwZ9sGZkK70tTSYHdDw==", "cpu": [ "x64" ], @@ -5816,9 +6366,9 @@ "license": "Apache-2.0" }, "node_modules/@swc/html": { - "version": "1.15.46", - "resolved": "https://registry.npmmirror.com/@swc/html/-/html-1.15.46.tgz", - "integrity": "sha512-U5eaur7Hsickt5Tko7VHMNER/zLNNUAg9r+LCUBoevzP/0SeEU/ZqOxorKZ1eLFhm/rDT1Mv3KEP9W5vmeSsUw==", + "version": "1.15.47", + "resolved": "https://registry.npmmirror.com/@swc/html/-/html-1.15.47.tgz", + "integrity": "sha512-Olu/8OORvYB+43v2/85nHe1EA8WSvWp8D3kctEAput/o4F+EWCK0nr4yGTqvWB7Z+ODz0k+vnxpvHQYzsKP2LA==", "license": "Apache-2.0", "dependencies": { "@swc/counter": "^0.1.3" @@ -5827,24 +6377,24 @@ "node": ">=14" }, "optionalDependencies": { - "@swc/html-darwin-arm64": "1.15.46", - "@swc/html-darwin-x64": "1.15.46", - "@swc/html-linux-arm-gnueabihf": "1.15.46", - "@swc/html-linux-arm64-gnu": "1.15.46", - "@swc/html-linux-arm64-musl": "1.15.46", - "@swc/html-linux-ppc64-gnu": "1.15.46", - "@swc/html-linux-s390x-gnu": "1.15.46", - "@swc/html-linux-x64-gnu": "1.15.46", - "@swc/html-linux-x64-musl": "1.15.46", - "@swc/html-win32-arm64-msvc": "1.15.46", - "@swc/html-win32-ia32-msvc": "1.15.46", - "@swc/html-win32-x64-msvc": "1.15.46" + "@swc/html-darwin-arm64": "1.15.47", + "@swc/html-darwin-x64": "1.15.47", + "@swc/html-linux-arm-gnueabihf": "1.15.47", + "@swc/html-linux-arm64-gnu": "1.15.47", + "@swc/html-linux-arm64-musl": "1.15.47", + "@swc/html-linux-ppc64-gnu": "1.15.47", + "@swc/html-linux-s390x-gnu": "1.15.47", + "@swc/html-linux-x64-gnu": "1.15.47", + "@swc/html-linux-x64-musl": "1.15.47", + "@swc/html-win32-arm64-msvc": "1.15.47", + "@swc/html-win32-ia32-msvc": "1.15.47", + "@swc/html-win32-x64-msvc": "1.15.47" } }, "node_modules/@swc/html-darwin-arm64": { - "version": "1.15.46", - "resolved": "https://registry.npmmirror.com/@swc/html-darwin-arm64/-/html-darwin-arm64-1.15.46.tgz", - "integrity": "sha512-ZsC+iFnLOHPt7DF0tBxGoctF4/L0cUcuGonDavnwHhISHJiDQuT8TuRD9dB2jS7Du12ZY2Vu3jTugSnOfaDWxg==", + "version": "1.15.47", + "resolved": "https://registry.npmmirror.com/@swc/html-darwin-arm64/-/html-darwin-arm64-1.15.47.tgz", + "integrity": "sha512-Qe3FXNLO/k2WN7xmBP8SzBrtLvlIbyqa8cceUOI0opE4gk+myk5qIk022MiGJOgiF1B21/wMXgA08gYjQ2lP2Q==", "cpu": [ "arm64" ], @@ -5858,9 +6408,9 @@ } }, "node_modules/@swc/html-darwin-x64": { - "version": "1.15.46", - "resolved": "https://registry.npmmirror.com/@swc/html-darwin-x64/-/html-darwin-x64-1.15.46.tgz", - "integrity": "sha512-XBg/CK0sA+Fa0KUzShhnAM14MwhWoeMANY8NAAuSlDpJnv5A+ek4wd7eNvriTHwaS10hNzQeSFgVkkeS3I4x6A==", + "version": "1.15.47", + "resolved": "https://registry.npmmirror.com/@swc/html-darwin-x64/-/html-darwin-x64-1.15.47.tgz", + "integrity": "sha512-khCOiWmqlqi8yz+F/ePExhht/+3/cz1XzKV7raPKVynzd6sPxYtFQlNubj305s2soEXgkYYIH0zVVLwiMOVn6Q==", "cpu": [ "x64" ], @@ -5874,9 +6424,9 @@ } }, "node_modules/@swc/html-linux-arm-gnueabihf": { - "version": "1.15.46", - "resolved": "https://registry.npmmirror.com/@swc/html-linux-arm-gnueabihf/-/html-linux-arm-gnueabihf-1.15.46.tgz", - "integrity": "sha512-lIXI6nTEf8yaaCTN4mT7geL1L+CnoSSUCj9rds0B5W8Y/Jc3GHmAwErlFn2Eyt8hLjqvd7vZJw1oqAbmVwDesw==", + "version": "1.15.47", + "resolved": "https://registry.npmmirror.com/@swc/html-linux-arm-gnueabihf/-/html-linux-arm-gnueabihf-1.15.47.tgz", + "integrity": "sha512-7VRqaOEQEFPHSbUcnobmI59WbFK9M35Sse8TFN3hHxOlK9fINJ9yN5FuE9XEeRQAk+PFdR6WrIcF1Xwx1Cpi8A==", "cpu": [ "arm" ], @@ -5890,9 +6440,9 @@ } }, "node_modules/@swc/html-linux-arm64-gnu": { - "version": "1.15.46", - "resolved": "https://registry.npmmirror.com/@swc/html-linux-arm64-gnu/-/html-linux-arm64-gnu-1.15.46.tgz", - "integrity": "sha512-pBXrXBb3X5820lQQ+poQ/HcQxrtVfo+YJqHXLCFyAtkBxGG/c2XYFcMu4eBig1M5fvpquwtbb/qw6m67reM+kQ==", + "version": "1.15.47", + "resolved": "https://registry.npmmirror.com/@swc/html-linux-arm64-gnu/-/html-linux-arm64-gnu-1.15.47.tgz", + "integrity": "sha512-Ri9MmQqVRiEWuRfpkSTqz0bguvejXQcqQAkoW1Hke6+DColfzETcgNWa/Kw/ii5A/SS9Nb7acKaYdIw1vMBPwA==", "cpu": [ "arm64" ], @@ -5909,9 +6459,9 @@ } }, "node_modules/@swc/html-linux-arm64-musl": { - "version": "1.15.46", - "resolved": "https://registry.npmmirror.com/@swc/html-linux-arm64-musl/-/html-linux-arm64-musl-1.15.46.tgz", - "integrity": "sha512-vbbCIsKhZMooIZVG+v0NDVVmSKo22CyTVc6Qy/bijukj2/LDglxDjgMq68p0mnwhYyE4Y6URFtniMkIgY8CQuw==", + "version": "1.15.47", + "resolved": "https://registry.npmmirror.com/@swc/html-linux-arm64-musl/-/html-linux-arm64-musl-1.15.47.tgz", + "integrity": "sha512-NyXRQiVBkeutgCwCxUUaFqZdDmpZONs7Zz3AZGoY35s9GwXF412Nt22fK/e7lO/sM6G/+S3rOom/0xTmUQSK6A==", "cpu": [ "arm64" ], @@ -5928,9 +6478,9 @@ } }, "node_modules/@swc/html-linux-ppc64-gnu": { - "version": "1.15.46", - "resolved": "https://registry.npmmirror.com/@swc/html-linux-ppc64-gnu/-/html-linux-ppc64-gnu-1.15.46.tgz", - "integrity": "sha512-6bUllvm6IwF8vxhmD6gl2OFiHiCVMmnGqDywhmRSCB2mzSN6HAmNzNJk3wuRDHUILQa7R2bvA5Vpt00hLO71ww==", + "version": "1.15.47", + "resolved": "https://registry.npmmirror.com/@swc/html-linux-ppc64-gnu/-/html-linux-ppc64-gnu-1.15.47.tgz", + "integrity": "sha512-rQ+XLJHFzu0e4M5p1+8kF2FKzI7WO9KPPji87OuicHZVrDCEqg7/jSGu3hys9CjIQIYVfR+tAFuZz3Q1/jOoNA==", "cpu": [ "ppc64" ], @@ -5947,9 +6497,9 @@ } }, "node_modules/@swc/html-linux-s390x-gnu": { - "version": "1.15.46", - "resolved": "https://registry.npmmirror.com/@swc/html-linux-s390x-gnu/-/html-linux-s390x-gnu-1.15.46.tgz", - "integrity": "sha512-3kbCA/8Ij8xDbzgrTVyQ0OshcR2PvYiVOugIATQBV2qZ+RAyeozHPcodO+Fi+7X07p+D8hNfDfFik2rq4Vc45Q==", + "version": "1.15.47", + "resolved": "https://registry.npmmirror.com/@swc/html-linux-s390x-gnu/-/html-linux-s390x-gnu-1.15.47.tgz", + "integrity": "sha512-w6bitHrllrE3lqmf14cT3spmWhZHGts1O08O4adzxztSPto7O5GM3IerqZm/NtsqlxNsfbVHnhaNXxXWe/8Q+Q==", "cpu": [ "s390x" ], @@ -5966,9 +6516,9 @@ } }, "node_modules/@swc/html-linux-x64-gnu": { - "version": "1.15.46", - "resolved": "https://registry.npmmirror.com/@swc/html-linux-x64-gnu/-/html-linux-x64-gnu-1.15.46.tgz", - "integrity": "sha512-n5L9LVBW0aE1tfMGk4b6koOzHog51G25wXgWbRmUDG2iqUO1Ss75DFurGEnjM7KoiKw6iqTJU0sXl/S92SAQ7w==", + "version": "1.15.47", + "resolved": "https://registry.npmmirror.com/@swc/html-linux-x64-gnu/-/html-linux-x64-gnu-1.15.47.tgz", + "integrity": "sha512-FTA7E29gcyadd71prg8sJUVacYrIhAXS8L7p48yCfgcNOKquofN1TDOrHVOyYMoxplL3FUwwbN+AZxWO7QfWPQ==", "cpu": [ "x64" ], @@ -5985,9 +6535,9 @@ } }, "node_modules/@swc/html-linux-x64-musl": { - "version": "1.15.46", - "resolved": "https://registry.npmmirror.com/@swc/html-linux-x64-musl/-/html-linux-x64-musl-1.15.46.tgz", - "integrity": "sha512-NHjUyt+SrjSZGqoltQcNztZn6SmM7XkCgcrJoMTlAbrcC4XY+xvVi0QTp31roNnmX4GtqsZAGdgHGY5r0Who/w==", + "version": "1.15.47", + "resolved": "https://registry.npmmirror.com/@swc/html-linux-x64-musl/-/html-linux-x64-musl-1.15.47.tgz", + "integrity": "sha512-g+K1GKUrj+S9o8Qsgii2g7ooMzZ750R4IAqH5CVElIA5FTMAx7KGnu9ga6aEnRwwLYxY3s1k/nN+ls0NEk240g==", "cpu": [ "x64" ], @@ -6004,9 +6554,9 @@ } }, "node_modules/@swc/html-win32-arm64-msvc": { - "version": "1.15.46", - "resolved": "https://registry.npmmirror.com/@swc/html-win32-arm64-msvc/-/html-win32-arm64-msvc-1.15.46.tgz", - "integrity": "sha512-x0/muLfBFN9O8omLqxm3GaJe8GZrYR4LTyWMw+o4Pjx3sxX6+MuLne5ebhT2jBVADkucCURGnDHCBm53WHz7EA==", + "version": "1.15.47", + "resolved": "https://registry.npmmirror.com/@swc/html-win32-arm64-msvc/-/html-win32-arm64-msvc-1.15.47.tgz", + "integrity": "sha512-5Iw3i00JdTySi+ccc2CM5bxY+8TZivQmcTqUC6mUdAY0/KYBgSe1/L294UJQ4OTLQqNDOYXY9jdb070zZUX7jg==", "cpu": [ "arm64" ], @@ -6020,9 +6570,9 @@ } }, "node_modules/@swc/html-win32-ia32-msvc": { - "version": "1.15.46", - "resolved": "https://registry.npmmirror.com/@swc/html-win32-ia32-msvc/-/html-win32-ia32-msvc-1.15.46.tgz", - "integrity": "sha512-vebE5ouxwl4saFYmtjUuSqP83fj3eMJQgyrXwEFky08J5aAqt07y1d2jmetGA2guFoSYwAMKJWTU8287Mpzf4g==", + "version": "1.15.47", + "resolved": "https://registry.npmmirror.com/@swc/html-win32-ia32-msvc/-/html-win32-ia32-msvc-1.15.47.tgz", + "integrity": "sha512-YkKd0hbIOeuFC1Sg7uGKkU2JhL+c9vAJlT6P0nRbWCAL71n01IPbdtbW6PmvgVmI7pxRYucXpr4pg839nX5+9Q==", "cpu": [ "ia32" ], @@ -6036,9 +6586,9 @@ } }, "node_modules/@swc/html-win32-x64-msvc": { - "version": "1.15.46", - "resolved": "https://registry.npmmirror.com/@swc/html-win32-x64-msvc/-/html-win32-x64-msvc-1.15.46.tgz", - "integrity": "sha512-WBYYs0O/LUNZrO5eA7Zlkokbqg5Np3gQ2lQtkHeFCSFEJDYk8XWaHIU/3Kg89dduVUPer3h4TR/tqCWdBAKMzw==", + "version": "1.15.47", + "resolved": "https://registry.npmmirror.com/@swc/html-win32-x64-msvc/-/html-win32-x64-msvc-1.15.47.tgz", + "integrity": "sha512-w9Ug+VB9hlHT4hTWIJSB40AdF+qs5w07CYq/+ef1vQRjT5naN6/SKuXmr9/CKLn3T7A9z3lRMPKE4+lmtUkBOQ==", "cpu": [ "x64" ], @@ -6052,9 +6602,9 @@ } }, "node_modules/@swc/types": { - "version": "0.1.27", - "resolved": "https://registry.npmmirror.com/@swc/types/-/types-0.1.27.tgz", - "integrity": "sha512-K6h3iUlqeM946U4sXFYeahefR1YBbXJvko+hv8WS8/0BNJ4OHiHRywMnQUJCqkR7Y9+hqQ1TvEpiKqUhz7NEFg==", + "version": "0.1.28", + "resolved": "https://registry.npmmirror.com/@swc/types/-/types-0.1.28.tgz", + "integrity": "sha512-V6Mnml8v09QALx6K0elJ7o9K/MkVDtW3t6L+7Ou/JcWtb3xwId2AH4FeOceySd2JaO87IMw4+6vSZxLm34LPbw==", "license": "Apache-2.0", "dependencies": { "@swc/counter": "^0.1.3" @@ -6157,9 +6707,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.19.9", - "resolved": "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.9.tgz", - "integrity": "sha512-QP2ESEe/ImWY0HDwNAnK9PvEffUyhLTnWkk7KXzHfyeWAnlrDe1fN77bXl6ia8KT3wPlmA7t9/VPRpnf4Ex9sg==", + "version": "4.19.8", + "resolved": "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", + "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", "license": "MIT", "dependencies": { "@types/node": "*", @@ -6169,9 +6719,9 @@ } }, "node_modules/@types/hast": { - "version": "3.0.5", - "resolved": "https://registry.npmmirror.com/@types/hast/-/hast-3.0.5.tgz", - "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==", + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", "license": "MIT", "dependencies": { "@types/unist": "*" @@ -6268,9 +6818,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "26.1.1", - "resolved": "https://registry.npmmirror.com/@types/node/-/node-26.1.1.tgz", - "integrity": "sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw==", + "version": "26.0.1", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-26.0.1.tgz", + "integrity": "sha512-fc3KiUoBt6kie0N9bIW3E47vZsuaMf0PM2AaUpLCLT0s/LvX1nxAim6Fc049cNxODPpGm6qRAuUOB86SkRuPQw==", "license": "MIT", "dependencies": { "undici-types": "~8.3.0" @@ -6429,9 +6979,9 @@ "license": "MIT" }, "node_modules/@ungap/structured-clone": { - "version": "1.3.3", - "resolved": "https://registry.npmmirror.com/@ungap/structured-clone/-/structured-clone-1.3.3.tgz", - "integrity": "sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==", + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/@ungap/structured-clone/-/structured-clone-1.3.2.tgz", + "integrity": "sha512-5jsZFwgR5rTdKwidH9Qmat75RKwqfpKlWWB1frDkljN127mwqBu8K0PYo7/hFpF03IEJpfVPpCQDY/eDx3iHvA==", "license": "ISC" }, "node_modules/@webassemblyjs/ast": { @@ -6647,6 +7197,18 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.0" + } + }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -6761,9 +7323,9 @@ } }, "node_modules/algoliasearch-helper": { - "version": "3.29.2", - "resolved": "https://registry.npmmirror.com/algoliasearch-helper/-/algoliasearch-helper-3.29.2.tgz", - "integrity": "sha512-SaV+rZM3drExb0punEYYjT+sNcH74YFwN8ocjya7IDOyQvKWeQpEaSMVG3+IGTVos+feuatj7ljQ4BXlXdUp3w==", + "version": "3.29.3", + "resolved": "https://registry.npmmirror.com/algoliasearch-helper/-/algoliasearch-helper-3.29.3.tgz", + "integrity": "sha512-gVOMbbPVrCO3Xs+B+BLAIGFqIQow6qHMTYCEeBqLQB9m4ZmKUqMwkEumlal2iyyezHEd4Y0FvFTLbCRutCutIQ==", "license": "MIT", "dependencies": { "@algolia/events": "^4.0.1" @@ -7036,9 +7598,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.11.4", - "resolved": "https://registry.npmmirror.com/baseline-browser-mapping/-/baseline-browser-mapping-2.11.4.tgz", - "integrity": "sha512-s4+sLr9mZ/CyqeRritFeYV/Zx73OAtmaHn6kkBS1XRoJn1hrg3xIDUcpicAEX68tkcIN0iBCgti31C8zxtkhsQ==", + "version": "2.11.14", + "resolved": "https://registry.npmmirror.com/baseline-browser-mapping/-/baseline-browser-mapping-2.11.14.tgz", + "integrity": "sha512-JyJ954WzuIR8/FFzX0o5krdSTrBAkcCSRfWSleRsIHSWV+cZe2FI1PKggVkFke1hBldRs+LRxUczzE9iPmgZww==", "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.cjs" @@ -7075,9 +7637,9 @@ } }, "node_modules/body-parser": { - "version": "1.20.6", - "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.6.tgz", - "integrity": "sha512-p5tAzS57i5MV9fZFDj9LeIiTZEufbSe2eDozP+ElheSUq1m74CRq1jI4mYNDdVs9vQztXFLuk/Gd6BWTdwRJ5g==", + "version": "1.20.5", + "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.5.tgz", + "integrity": "sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==", "license": "MIT", "dependencies": { "bytes": "~3.1.2", @@ -7123,9 +7685,9 @@ "license": "MIT" }, "node_modules/bonjour-service": { - "version": "1.4.3", - "resolved": "https://registry.npmmirror.com/bonjour-service/-/bonjour-service-1.4.3.tgz", - "integrity": "sha512-2Kd5UYlFUVgAKMTyuBLl6w49wqfOnbxHqmuH0oCl/n7TfAikR0zoowNOP5BU4dfXmm+Vr9JyEN370auSMx+CNg==", + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/bonjour-service/-/bonjour-service-1.4.2.tgz", + "integrity": "sha512-lMskhnsW70yWHr4PhPeh2rvaIkLSaDpp+nmtbXBZaNKTXwxL73QOkW6HhbzqTImXjevn9TreGT4GACGBCGP9nQ==", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", @@ -7161,9 +7723,9 @@ } }, "node_modules/brace-expansion": { - "version": "1.1.16", - "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.16.tgz", - "integrity": "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==", + "version": "1.1.15", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.15.tgz", + "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -7183,9 +7745,9 @@ } }, "node_modules/browserslist": { - "version": "4.28.7", - "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.28.7.tgz", - "integrity": "sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==", + "version": "4.28.8", + "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.28.8.tgz", + "integrity": "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA==", "funding": [ { "type": "opencollective", @@ -7202,11 +7764,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.10.44", - "caniuse-lite": "^1.0.30001806", - "electron-to-chromium": "^1.5.393", - "node-releases": "^2.0.51", - "update-browserslist-db": "^1.2.3" + "baseline-browser-mapping": "^2.11.12", + "caniuse-lite": "^1.0.30001809", + "electron-to-chromium": "^1.5.402", + "node-releases": "^2.0.53", + "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" @@ -7372,9 +7934,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001806", - "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001806.tgz", - "integrity": "sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==", + "version": "1.0.30001809", + "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001809.tgz", + "integrity": "sha512-xxWVywk6a6Arlk+hymeycyn/VgqEfLDxupvhH/xiY5SJ/18kmi9o6MiO320DCUzypORHLtvh0I4i04tUhCNHNQ==", "funding": [ { "type": "opencollective", @@ -7701,6 +8263,12 @@ "node": ">=10" } }, + "node_modules/comlink": { + "version": "4.4.2", + "resolved": "https://registry.npmmirror.com/comlink/-/comlink-4.4.2.tgz", + "integrity": "sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==", + "license": "Apache-2.0" + }, "node_modules/comma-separated-tokens": { "version": "2.0.3", "resolved": "https://registry.npmmirror.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", @@ -7978,12 +8546,15 @@ } }, "node_modules/core-js-compat": { - "version": "3.49.0", - "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.49.0.tgz", - "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", + "version": "3.50.0", + "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.50.0.tgz", + "integrity": "sha512-XGpFGbMLHwSt74YLTKho7Ib242qi6O8MSX+sRokV4oz7iKXvQWGYZthjIhjRGMxjzVkAubBO512dKGYcefmX3Q==", "license": "MIT", "dependencies": { - "browserslist": "^4.28.1" + "browserslist": "^4.28.7" + }, + "engines": { + "node": ">=6.4.0" }, "funding": { "type": "opencollective", @@ -8089,9 +8660,9 @@ } }, "node_modules/css-blank-pseudo/node_modules/postcss-selector-parser": { - "version": "7.1.4", - "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz", - "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==", + "version": "7.1.5", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz", + "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -8163,9 +8734,9 @@ } }, "node_modules/css-has-pseudo/node_modules/postcss-selector-parser": { - "version": "7.1.4", - "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz", - "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==", + "version": "7.1.5", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz", + "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -8869,9 +9440,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.396", - "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.396.tgz", - "integrity": "sha512-yHiw2Y3C3H9U6TMbOfoWK/BPreiOPXRfTWPBwQBoZG6/8TB6eOPnsy5oaRYuatR7Fw2SJ4kKforgufeo7fq0EQ==", + "version": "1.5.406", + "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.406.tgz", + "integrity": "sha512-hWH5ORBi3d0IipnMh7BN5GDTaAmrSSSWmznwt2zltdiRNEWoEQyTwF0FFSBxzHO7hLSRT6loQu3IQGV0wg/Tvg==", "license": "ISC" }, "node_modules/emoji-regex": { @@ -8914,10 +9485,35 @@ "node": ">= 0.8" } }, + "node_modules/encoding-sniffer": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", + "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, + "funding": { + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + } + }, + "node_modules/encoding-sniffer/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/enhanced-resolve": { - "version": "5.24.3", - "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.24.3.tgz", - "integrity": "sha512-PwKooW9JUzh5chmYfHM3IQl5OkK2u2Nm011MgeZrss3JmFraUx/fqrf78kk8GUMYoibx/14MdwTl/1WKkG7TpQ==", + "version": "5.24.1", + "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.24.1.tgz", + "integrity": "sha512-7DdUaTjmNwMcH2gLr1qycesKII3BK4RLy/mdAb7x10Lq7bR4aNKHt1BR1ZALSv0rPM/hF5wYF0PhGop/rJm8vw==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", @@ -8967,9 +9563,9 @@ } }, "node_modules/es-module-lexer": { - "version": "2.3.1", - "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-2.3.1.tgz", - "integrity": "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==", + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-2.1.0.tgz", + "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==", "license": "MIT" }, "node_modules/es-object-atoms": { @@ -9416,9 +10012,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.1.4", - "resolved": "https://registry.npmmirror.com/fast-uri/-/fast-uri-3.1.4.tgz", - "integrity": "sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==", + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/fast-uri/-/fast-uri-3.1.2.tgz", + "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", "funding": [ { "type": "github", @@ -9701,9 +10297,9 @@ } }, "node_modules/fs-extra": { - "version": "11.4.0", - "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.4.0.tgz", - "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==", + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -9711,7 +10307,7 @@ "universalify": "^2.0.0" }, "engines": { - "node": ">=14.14" + "node": ">=12" } }, "node_modules/fsevents": { @@ -9835,6 +10431,12 @@ "tslib": "2" } }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "license": "BSD-2-Clause" + }, "node_modules/global-dirs": { "version": "3.0.1", "resolved": "https://registry.npmmirror.com/global-dirs/-/global-dirs-3.0.1.tgz", @@ -10304,9 +10906,9 @@ } }, "node_modules/html-webpack-plugin": { - "version": "5.6.8", - "resolved": "https://registry.npmmirror.com/html-webpack-plugin/-/html-webpack-plugin-5.6.8.tgz", - "integrity": "sha512-MZmKQcTnhEh1SPSyMiEytIeDZDUoBZVorNHivQGXMASHf/BSGGOrKa2xQ5bGx3TCe1n109ecCt+cpww7wwWhKA==", + "version": "5.6.7", + "resolved": "https://registry.npmmirror.com/html-webpack-plugin/-/html-webpack-plugin-5.6.7.tgz", + "integrity": "sha512-md+vXtdCAe60s1k6AU3dUyMJnDxUyQAwfwPKoLisvgUF1IXjtlLsk2se54+qfL9Mdm26bbwvjJybpNx48NKRLw==", "license": "MIT", "dependencies": { "@types/html-minifier-terser": "^6.0.0", @@ -10323,7 +10925,7 @@ "url": "https://opencollective.com/html-webpack-plugin" }, "peerDependencies": { - "@rspack/core": "0.x || 1.x || 2.x", + "@rspack/core": "0.x || 1.x", "webpack": "^5.20.0" }, "peerDependenciesMeta": { @@ -10548,6 +11150,12 @@ "node": ">=16.x" } }, + "node_modules/immediate": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", + "license": "MIT" + }, "node_modules/import-fresh": { "version": "3.3.1", "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.1.tgz", @@ -11051,9 +11659,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.3.0.tgz", - "integrity": "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==", + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.2.0.tgz", + "integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==", "funding": [ { "type": "github", @@ -11144,6 +11752,15 @@ "node": ">=0.10.0" } }, + "node_modules/klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, "node_modules/kleur": { "version": "3.0.3", "resolved": "https://registry.npmmirror.com/kleur/-/kleur-3.0.3.tgz", @@ -11466,6 +12083,19 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "license": "MIT" }, + "node_modules/loader-runner": { + "version": "4.3.2", + "resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.2.tgz", + "integrity": "sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==", + "license": "MIT", + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/loader-utils": { "version": "2.0.4", "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz", @@ -11571,6 +12201,24 @@ "yallist": "^3.0.2" } }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmmirror.com/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "license": "MIT" + }, + "node_modules/lunr-languages": { + "version": "1.20.0", + "resolved": "https://registry.npmmirror.com/lunr-languages/-/lunr-languages-1.20.0.tgz", + "integrity": "sha512-3LVgE7ekWXt04NBci/hjm+NXJxXZeRXuyClL0kA0HONyBOjxhP3ZQkuWIM4Ok3pbeptUW/rj3XcJcJuJVPwPYA==", + "license": "MPL-1.1" + }, + "node_modules/mark.js": { + "version": "8.11.1", + "resolved": "https://registry.npmmirror.com/mark.js/-/mark.js-8.11.1.tgz", + "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", + "license": "MIT" + }, "node_modules/markdown-extensions": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/markdown-extensions/-/markdown-extensions-2.0.0.tgz", @@ -12020,19 +12668,19 @@ } }, "node_modules/memfs": { - "version": "4.64.0", - "resolved": "https://registry.npmmirror.com/memfs/-/memfs-4.64.0.tgz", - "integrity": "sha512-Kw72fgY7Wn+sD8KmtNWSafl1dz0UvAsE/PHs3YVfLiaZuA3HxNm9sRLqAu0ATiBGJvME1PxZXbBZPv5GycDeAw==", + "version": "4.57.8", + "resolved": "https://registry.npmmirror.com/memfs/-/memfs-4.57.8.tgz", + "integrity": "sha512-bApYhn8BLpFAnAQmFfEl/NPN+8qx5Ar3V4Qt3ek23mVwBEElzV7c6XoPkb/PCG8ZFpowCEpHcPwMFTwHS7tSMA==", "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-core": "4.64.0", - "@jsonjoy.com/fs-fsa": "4.64.0", - "@jsonjoy.com/fs-node": "4.64.0", - "@jsonjoy.com/fs-node-builtins": "4.64.0", - "@jsonjoy.com/fs-node-to-fsa": "4.64.0", - "@jsonjoy.com/fs-node-utils": "4.64.0", - "@jsonjoy.com/fs-print": "4.64.0", - "@jsonjoy.com/fs-snapshot": "4.64.0", + "@jsonjoy.com/fs-core": "4.57.8", + "@jsonjoy.com/fs-fsa": "4.57.8", + "@jsonjoy.com/fs-node": "4.57.8", + "@jsonjoy.com/fs-node-builtins": "4.57.8", + "@jsonjoy.com/fs-node-to-fsa": "4.57.8", + "@jsonjoy.com/fs-node-utils": "4.57.8", + "@jsonjoy.com/fs-print": "4.57.8", + "@jsonjoy.com/fs-snapshot": "4.57.8", "@jsonjoy.com/json-pack": "^1.11.0", "@jsonjoy.com/util": "^1.9.0", "glob-to-regex.js": "^1.0.1", @@ -13979,95 +14627,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/minimizer-webpack-plugin": { - "version": "5.6.1", - "resolved": "https://registry.npmmirror.com/minimizer-webpack-plugin/-/minimizer-webpack-plugin-5.6.1.tgz", - "integrity": "sha512-DoeAZz8Q1C1znwsUzej1fdoi4jCf7/+Em27ouLqfK/+3m8G+D7yDhUwrc3CNhjSzGUN1kn7Iv4sWmjflQHenpw==", - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "jest-worker": "^27.4.5", - "schema-utils": "^4.3.0", - "terser": "^5.31.1" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@minify-html/node": { - "optional": true - }, - "@swc/core": { - "optional": true - }, - "@swc/css": { - "optional": true - }, - "@swc/html": { - "optional": true - }, - "clean-css": { - "optional": true - }, - "cssnano": { - "optional": true - }, - "csso": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "html-minifier-terser": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "postcss": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/minimizer-webpack-plugin/node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmmirror.com/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/minimizer-webpack-plugin/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, "node_modules/mrmime": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/mrmime/-/mrmime-2.0.1.tgz", @@ -14097,9 +14656,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.16", - "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.16.tgz", - "integrity": "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==", + "version": "3.3.18", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.18.tgz", + "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==", "funding": [ { "type": "github", @@ -14155,9 +14714,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.51", - "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.51.tgz", - "integrity": "sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==", + "version": "2.0.53", + "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.53.tgz", + "integrity": "sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ==", "license": "MIT", "engines": { "node": ">=18" @@ -14623,6 +15182,18 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "license": "MIT", + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/parse5/node_modules/entities": { "version": "6.0.1", "resolved": "https://registry.npmmirror.com/entities/-/entities-6.0.1.tgz", @@ -14753,9 +15324,9 @@ } }, "node_modules/postcss": { - "version": "8.5.23", - "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.23.tgz", - "integrity": "sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==", + "version": "8.5.26", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.26.tgz", + "integrity": "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==", "funding": [ { "type": "opencollective", @@ -14772,7 +15343,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.16", + "nanoid": "^3.3.17", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -14806,9 +15377,9 @@ } }, "node_modules/postcss-attribute-case-insensitive/node_modules/postcss-selector-parser": { - "version": "7.1.4", - "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz", - "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==", + "version": "7.1.5", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz", + "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -15050,9 +15621,9 @@ } }, "node_modules/postcss-custom-selectors/node_modules/postcss-selector-parser": { - "version": "7.1.4", - "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz", - "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==", + "version": "7.1.5", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz", + "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -15088,9 +15659,9 @@ } }, "node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser": { - "version": "7.1.4", - "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz", - "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==", + "version": "7.1.5", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz", + "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -15216,9 +15787,9 @@ } }, "node_modules/postcss-focus-visible/node_modules/postcss-selector-parser": { - "version": "7.1.4", - "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz", - "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==", + "version": "7.1.5", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz", + "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -15254,9 +15825,9 @@ } }, "node_modules/postcss-focus-within/node_modules/postcss-selector-parser": { - "version": "7.1.4", - "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz", - "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==", + "version": "7.1.5", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz", + "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -15543,9 +16114,9 @@ } }, "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { - "version": "7.1.4", - "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz", - "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==", + "version": "7.1.5", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz", + "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -15571,9 +16142,9 @@ } }, "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { - "version": "7.1.4", - "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz", - "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==", + "version": "7.1.5", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz", + "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -15670,9 +16241,9 @@ } }, "node_modules/postcss-nesting/node_modules/postcss-selector-parser": { - "version": "7.1.4", - "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz", - "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==", + "version": "7.1.5", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz", + "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -16033,9 +16604,9 @@ } }, "node_modules/postcss-pseudo-class-any-link/node_modules/postcss-selector-parser": { - "version": "7.1.4", - "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz", - "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==", + "version": "7.1.5", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz", + "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -16126,9 +16697,9 @@ } }, "node_modules/postcss-selector-not/node_modules/postcss-selector-parser": { - "version": "7.1.4", - "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz", - "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==", + "version": "7.1.5", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.5.tgz", + "integrity": "sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -16487,24 +17058,24 @@ } }, "node_modules/react": { - "version": "19.2.8", - "resolved": "https://registry.npmmirror.com/react/-/react-19.2.8.tgz", - "integrity": "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==", + "version": "19.2.7", + "resolved": "https://registry.npmmirror.com/react/-/react-19.2.7.tgz", + "integrity": "sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/react-dom": { - "version": "19.2.8", - "resolved": "https://registry.npmmirror.com/react-dom/-/react-dom-19.2.8.tgz", - "integrity": "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==", + "version": "19.2.7", + "resolved": "https://registry.npmmirror.com/react-dom/-/react-dom-19.2.7.tgz", + "integrity": "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==", "license": "MIT", "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.2.8" + "react": "^19.2.7" } }, "node_modules/react-fast-compare": { @@ -17607,9 +18178,9 @@ } }, "node_modules/shell-quote": { - "version": "1.10.0", - "resolved": "https://registry.npmmirror.com/shell-quote/-/shell-quote-1.10.0.tgz", - "integrity": "sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==", + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/shell-quote/-/shell-quote-1.9.0.tgz", + "integrity": "sha512-Iov+JwFv/2HcTpcwNMKd8+IWNb8tboQJNQTkAY/LLVK7gGH9jy+LGkVqPxfekHl+yMmiqXszdGWXgkfml7hjqA==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -18144,9 +18715,9 @@ } }, "node_modules/terser": { - "version": "5.49.0", - "resolved": "https://registry.npmmirror.com/terser/-/terser-5.49.0.tgz", - "integrity": "sha512-SNiDnXyHSrxVcIOtVbULzcTmniUiwcV7Nwdyj1twVubeTmbjoa8p69KKDpfkdoOavuM4/GRm1+ykI8qqnavHoA==", + "version": "5.48.0", + "resolved": "https://registry.npmmirror.com/terser/-/terser-5.48.0.tgz", + "integrity": "sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q==", "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -18257,9 +18828,9 @@ "license": "MIT" }, "node_modules/thingies": { - "version": "2.6.1", - "resolved": "https://registry.npmmirror.com/thingies/-/thingies-2.6.1.tgz", - "integrity": "sha512-cV/CMGTK3M4MlnJ/0At6ismOw/A0EEniDNScajjz/Br3c1sqE72YD01rGpPTKwd27wAxI5Pr+6+0w8yofzFRYw==", + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/thingies/-/thingies-2.6.0.tgz", + "integrity": "sha512-rMHRjmlFLM1R96UYPvpmnc3LYtdFrT33JIB7L9hetGue1qAPfn1N2LJeEjxUSidu1Iku+haLZXDuEXUHNGO/lg==", "license": "MIT", "engines": { "node": ">=10.18" @@ -18458,6 +19029,15 @@ "node": ">=14.17" } }, + "node_modules/undici": { + "version": "7.29.0", + "resolved": "https://registry.npmmirror.com/undici/-/undici-7.29.0.tgz", + "integrity": "sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==", + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, "node_modules/undici-types": { "version": "8.3.0", "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-8.3.0.tgz", @@ -18647,9 +19227,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.3.1.tgz", + "integrity": "sha512-ZZ61DsRsOnakl74HAmp3oSN4aXUmEWXf+i/yv0h7tIBfICc3VdrFErQKUUKPgu3AMsTUMbcongALEN4l6GSUrQ==", "funding": [ { "type": "opencollective", @@ -18984,9 +19564,9 @@ } }, "node_modules/webpack": { - "version": "5.109.0", - "resolved": "https://registry.npmmirror.com/webpack/-/webpack-5.109.0.tgz", - "integrity": "sha512-vomrngskVVXEZF9sMZfYAd4pXZUnfaWdJGlF+BTNF+gJBCKYCQBnOeVPlrh39Ewl7nlCsirDplMy6o5g9xJHBg==", + "version": "5.107.2", + "resolved": "https://registry.npmmirror.com/webpack/-/webpack-5.107.2.tgz", + "integrity": "sha512-v7RhXaJbpMlV0D7hC7lb2EbnxkoeUqf9qhKr6lozx3Q48pmFrqqNRmZFUEGmi7pSwm6fCQ2H1IjvCkHqdpVdjQ==", "license": "MIT", "dependencies": { "@types/estree": "^1.0.8", @@ -18995,20 +19575,23 @@ "@webassemblyjs/wasm-edit": "^1.14.1", "@webassemblyjs/wasm-parser": "^1.14.1", "acorn": "^8.16.0", + "acorn-import-phases": "^1.0.3", "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.24.2", + "enhanced-resolve": "^5.22.0", "es-module-lexer": "^2.1.0", "eslint-scope": "5.1.1", "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.11", + "loader-runner": "^4.3.2", "mime-db": "^1.54.0", - "minimizer-webpack-plugin": "^5.6.1", "neo-async": "^2.6.2", "schema-utils": "^4.3.3", "tapable": "^2.3.0", - "watchpack": "^2.5.2", - "webpack-sources": "^3.5.1" + "terser-webpack-plugin": "^5.5.0", + "watchpack": "^2.5.1", + "webpack-sources": "^3.5.0" }, "bin": { "webpack": "bin/webpack.js" @@ -19116,22 +19699,18 @@ } }, "node_modules/webpack-dev-middleware/node_modules/range-parser": { - "version": "1.3.0", - "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.3.0.tgz", - "integrity": "sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==", + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "license": "MIT", "engines": { "node": ">= 0.6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" } }, "node_modules/webpack-dev-server": { - "version": "5.2.6", - "resolved": "https://registry.npmmirror.com/webpack-dev-server/-/webpack-dev-server-5.2.6.tgz", - "integrity": "sha512-HNLRmamRvVavZQ+avceZifmv8hmdUjg43t6MI4SqJDwFdW7RPQwH5vzGhDRZSX59SgfbeHhLnq3g+uooWo7pVw==", + "version": "5.2.5", + "resolved": "https://registry.npmmirror.com/webpack-dev-server/-/webpack-dev-server-5.2.5.tgz", + "integrity": "sha512-4wZtCquSuv9CKX8oybo+mqxtxZqWz47uM1Ch94lxowBztOhWCbhqvRbfC/mODOwxgV2brY+JGZpHq58/SuVFYg==", "license": "MIT", "dependencies": { "@types/bonjour": "^3.5.13", @@ -19152,7 +19731,7 @@ "graceful-fs": "^4.2.6", "http-proxy-middleware": "^2.0.9", "ipaddr.js": "^2.1.0", - "launch-editor": "^2.14.1", + "launch-editor": "^2.6.1", "open": "^10.0.3", "p-retry": "^6.2.0", "schema-utils": "^4.2.0", @@ -19216,9 +19795,9 @@ } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.21.1", - "resolved": "https://registry.npmmirror.com/ws/-/ws-8.21.1.tgz", - "integrity": "sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw==", + "version": "8.21.0", + "resolved": "https://registry.npmmirror.com/ws/-/ws-8.21.0.tgz", + "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -19251,9 +19830,9 @@ } }, "node_modules/webpack-sources": { - "version": "3.5.1", - "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.5.1.tgz", - "integrity": "sha512-jyuiGJdtvY434z5bUZrjz67v76/ePNvFZTp9Mdz29IlH4+GPsgyGjiv0fKI+M7BdkU6ADjulUcKAd3tUK3WlEw==", + "version": "3.5.0", + "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.5.0.tgz", + "integrity": "sha512-HPuy+uuoTCaaoEoI1LQ3JN9+vrPBvEesnnX1jADHy728cHSMlq4wUc4afYqahq2B1mhQVZxCXOkNTnXltr+2vQ==", "license": "MIT", "engines": { "node": ">=10.13.0" @@ -19318,6 +19897,40 @@ "node": ">=0.8.0" } }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", @@ -19423,9 +20036,9 @@ } }, "node_modules/ws": { - "version": "7.5.13", - "resolved": "https://registry.npmmirror.com/ws/-/ws-7.5.13.tgz", - "integrity": "sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==", + "version": "7.5.11", + "resolved": "https://registry.npmmirror.com/ws/-/ws-7.5.11.tgz", + "integrity": "sha512-zS54Oen9bITtp7kp2XM3AydrCIq1D+HwJOuH+c+e4LfpL/lotP5osijd+UoMnxwAam1GN8R4KtLAyIrIcBNpiA==", "license": "MIT", "engines": { "node": ">=8.3.0" diff --git a/package.json b/package.json index 7c26abd..b6c60a9 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "private": true, "scripts": { "docusaurus": "docusaurus", - "start": "docusaurus start", + "start": "docusaurus start --host 0.0.0.0", "build": "docusaurus build", "swizzle": "docusaurus swizzle", "deploy": "docusaurus deploy", @@ -18,6 +18,7 @@ "@docusaurus/core": "3.10.2", "@docusaurus/faster": "3.10.2", "@docusaurus/preset-classic": "3.10.2", + "@easyops-cn/docusaurus-search-local": "^0.55.3", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", "prism-react-renderer": "^2.3.0", diff --git a/src/css/custom.css b/src/css/custom.css index 2bc6a4c..5a58dd9 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -1,11 +1,9 @@ /** - * Any CSS included here will be global. The classic template - * bundles Infima by default. Infima is a CSS framework designed to - * work well for content-centric websites. + * 全局自定义样式 */ -/* You can override the default Infima variables here. */ :root { + /* 主题色 */ --ifm-color-primary: #2e8555; --ifm-color-primary-dark: #29784c; --ifm-color-primary-darker: #277148; @@ -13,11 +11,62 @@ --ifm-color-primary-light: #33925d; --ifm-color-primary-lighter: #359962; --ifm-color-primary-lightest: #3cad6e; - --ifm-code-font-size: 95%; + + /* 代码 */ + --ifm-code-font-size: 0.8rem; --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); + + /* 代码块字体大小 */ + --docusaurus-theme-code-block-font-size: 0.8rem; + + /* 表格 */ + --ifm-table-cell-padding: 0.2rem 0.75rem; /* 上下间距压缩,左右保持默认 */ +} + +/* 表格:横向是否铺满,字体大小 */ +table { + /* display: table; */ + font-size: 0.8rem; + width: 100%; +} + +/* 「编辑此页」固定到右上角 */ +.theme-blog-footer-edit-meta-row .theme-edit-this-page, +.theme-doc-footer .theme-edit-this-page { + position: fixed; + bottom: 30px; + right: 20px; + z-index: 100; + background: var(--ifm-background-surface-color); + padding: 4px 12px; + border-radius: 6px; + border: 1px solid var(--ifm-color-emphasis-300); + font-size: 0.85rem; + box-shadow: 0 2px 8px rgba(0,0,0,0.1); +} + +/* 悬停效果 */ +.theme-blog-footer-edit-meta-row .theme-edit-this-page:hover, +.theme-doc-footer .theme-edit-this-page:hover { + text-decoration: none; + background: var(--ifm-color-primary-lightest); + border-color: var(--ifm-color-primary); +} + +/* 代码块自动换行 */ +pre { + white-space: pre-wrap; + word-break: break-word; +} + +/* 代码注释颜色改成棕褐色,更清晰 */ +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: #aa5500 !important; } -/* For readability concerns, you should choose a lighter palette in dark mode. */ [data-theme='dark'] { --ifm-color-primary: #25c2a0; --ifm-color-primary-dark: #21af90; diff --git a/src/pages/about/aaa.md b/src/pages/about/aaa.md new file mode 100644 index 0000000..1144e8b --- /dev/null +++ b/src/pages/about/aaa.md @@ -0,0 +1,9 @@ +--- +title: my hello page title +description: my hello page description +hide_table_of_contents: true +--- + +# Hello + +How are you? \ No newline at end of file diff --git a/src/pages/about/index.md b/src/pages/about/index.md new file mode 100644 index 0000000..1144e8b --- /dev/null +++ b/src/pages/about/index.md @@ -0,0 +1,9 @@ +--- +title: my hello page title +description: my hello page description +hide_table_of_contents: true +--- + +# Hello + +How are you? \ No newline at end of file diff --git a/src/pages/helloMarkdown.md b/src/pages/helloMarkdown.md new file mode 100644 index 0000000..1144e8b --- /dev/null +++ b/src/pages/helloMarkdown.md @@ -0,0 +1,9 @@ +--- +title: my hello page title +description: my hello page description +hide_table_of_contents: true +--- + +# Hello + +How are you? \ No newline at end of file diff --git a/src/pages/helloReact.tsx b/src/pages/helloReact.tsx new file mode 100644 index 0000000..75020ee --- /dev/null +++ b/src/pages/helloReact.tsx @@ -0,0 +1,20 @@ +import Layout from '@theme/Layout'; + +export default function Hello() { + return ( + +
+

+ 你好,这是我的第一个 React 页面!🎉 +

+
+
+ ); +} diff --git a/start.vbs b/start.vbs new file mode 100644 index 0000000..bf1d8fa --- /dev/null +++ b/start.vbs @@ -0,0 +1,6 @@ +' 启动 Docusaurus 开发服务器(无黑窗口) +Dim shell +Set shell = CreateObject("WScript.Shell") +shell.CurrentDirectory = "D:\projects\my-website" +shell.Run "cmd /c npm start", 0, False +Set shell = Nothing diff --git a/static/admin/config.yaml b/static/admin/config.yaml new file mode 100644 index 0000000..e38c723 --- /dev/null +++ b/static/admin/config.yaml @@ -0,0 +1,110 @@ +# ============================================ +# Sveltia CMS 配置 +# ============================================ + +backend: + name: github + repo: lhth/testdecap + branch: master + +media_folder: static/img +public_folder: /img + +site_url: https://your-docusaurus-site.example.com +display_url: https://your-docusaurus-site.example.com + +logo: + src: /img/code.ico + show_in_header: true + +collections: + + - name: 'blog_1970' + label: '博客-初始' + label_singular: '博客' + folder: 'blog/1970-01-01-welcome' + create: true + delete: true + format: frontmatter + slug: '{{slug}}' + summary: '{{title}} — {{date | date("YYYY-MM-DD")}}' + preview_path: 'blog/{{slug}}' + fields: + - { label: '标题', name: 'title', widget: 'string' } + - { label: '标签', name: 'tags', widget: 'list', required: false, default: [] } + - { label: '正文', name: 'body', widget: 'markdown', modes: [raw, rich_text] } + + - name: 'blog_2025' + label: '博客-2025' + label_singular: '博客' + folder: 'blog/2025-01-01-xy' + create: true + delete: true + format: frontmatter + slug: '{{slug}}' + summary: '{{title}} — {{date | date("YYYY-MM-DD")}}' + preview_path: 'blog/{{slug}}' + fields: + - { label: '标题', name: 'title', widget: 'string' } + - { label: '标签', name: 'tags', widget: 'list', required: false, default: [] } + - { label: '正文', name: 'body', widget: 'markdown', modes: [raw, rich_text] } + + - name: 'blog_2026' + label: '博客-2026' + label_singular: '博客' + folder: 'blog/2026-01-01-xy' + create: true + delete: true + format: frontmatter + slug: '{{slug}}' + summary: '{{title}} — {{date | date("YYYY-MM-DD")}}' + preview_path: 'blog/{{slug}}' + fields: + - { label: '标题', name: 'title', widget: 'string' } + - { label: '标签', name: 'tags', widget: 'list', required: false, default: [] } + - { label: '正文', name: 'body', widget: 'markdown', modes: [raw, rich_text] } + + - name: 'docs_2026' + label: '文档-2026开发笔记' + label_singular: '文档' + folder: 'docs/2026开发笔记' + create: true + delete: true + format: frontmatter + slug: '{{slug}}' + summary: '{{title}}' + preview_path: 'docs/{{slug}}' + fields: + - { label: '标题', name: 'title', widget: 'string' } + - { label: '侧边栏位置', name: 'sidebar_position', widget: 'number', required: false, default: 1 } + - { label: '正文', name: 'body', widget: 'markdown', modes: [raw, rich_text] } + + - name: 'docs_me' + label: '文档-个人资料' + label_singular: '文档' + folder: 'docs/个人资料' + create: true + delete: true + format: frontmatter + slug: '{{slug}}' + summary: '{{title}}' + preview_path: 'docs/{{slug}}' + fields: + - { label: '标题', name: 'title', widget: 'string' } + - { label: '侧边栏位置', name: 'sidebar_position', widget: 'number', required: false, default: 1 } + - { label: '正文', name: 'body', widget: 'markdown', modes: [raw, rich_text] } + + - name: 'docs_xy' + label: '文档-相寓资料' + label_singular: '文档' + folder: 'docs/相寓资料' + create: true + delete: true + format: frontmatter + slug: '{{slug}}' + summary: '{{title}}' + preview_path: 'docs/{{slug}}' + fields: + - { label: '标题', name: 'title', widget: 'string' } + - { label: '侧边栏位置', name: 'sidebar_position', widget: 'number', required: false, default: 1 } + - { label: '正文', name: 'body', widget: 'markdown', modes: [raw, rich_text] } diff --git a/static/admin/index.html b/static/admin/index.html new file mode 100644 index 0000000..9b21bc1 --- /dev/null +++ b/static/admin/index.html @@ -0,0 +1,12 @@ + + + + + + Sveltia CMS + + + + + + \ No newline at end of file diff --git a/static/img/code.ico b/static/img/code.ico new file mode 100644 index 0000000000000000000000000000000000000000..b1541cf6b0d63c2928a2ed3b7892b2bd3db01157 GIT binary patch literal 52374 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 literal 0 HcmV?d00001 diff --git a/static/img/taitongle.jpg b/static/img/taitongle.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d293176a821cb3b4ad9ec0d559613bc3836043fa GIT binary patch literal 73910 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%0DQ1&-(o>AzpZIH6GWt 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 hwDptOH+F&(@iOA; + + + + diff --git a/tools/v1bak/register-typora-protocol-闪黑窗口.reg b/tools/v1bak/register-typora-protocol-闪黑窗口.reg new file mode 100644 index 0000000..6a7a744 --- /dev/null +++ b/tools/v1bak/register-typora-protocol-闪黑窗口.reg @@ -0,0 +1,14 @@ +Windows Registry Editor Version 5.00 + +[HKEY_CLASSES_ROOT\typora] +@="URL:Typora Protocol" +"URL Protocol"="" + +[HKEY_CLASSES_ROOT\typora\shell] +@="open" + +[HKEY_CLASSES_ROOT\typora\shell\open] +@="Open Typora" + +[HKEY_CLASSES_ROOT\typora\shell\open\command] +@="\"C:\\nvm4w\\nodejs\\node.exe\" \"D:\\projects\\my-website\\tools\\typora-handler.js\" \"%1\"" diff --git a/tools/v1bak/register-typora-protocol.reg b/tools/v1bak/register-typora-protocol.reg new file mode 100644 index 0000000..2638a05 --- /dev/null +++ b/tools/v1bak/register-typora-protocol.reg @@ -0,0 +1,14 @@ +Windows Registry Editor Version 5.00 + +[HKEY_CLASSES_ROOT\typora] +@="URL:Typora Protocol" +"URL Protocol"="" + +[HKEY_CLASSES_ROOT\typora\shell] +@="open" + +[HKEY_CLASSES_ROOT\typora\shell\open] +@="Open Typora" + +[HKEY_CLASSES_ROOT\typora\shell\open\command] +@="wscript.exe \"D:\\projects\\my-website\\tools\\typora-handler.vbs\" \"%1\"" diff --git a/tools/v1bak/typora-handler.js b/tools/v1bak/typora-handler.js new file mode 100644 index 0000000..f33f36f --- /dev/null +++ b/tools/v1bak/typora-handler.js @@ -0,0 +1,14 @@ +const { exec } = require('child_process'); +const fs = require('fs'); +const url = process.argv[2]; +const filePath = decodeURIComponent(url) + .replace(/^typora:\/\/file\//, '') + .replace(/\//g, '\\'); + +//fs.writeFileSync(__dirname + '/typora-debug.log',`url: ${url}\nfilePath: ${filePath}\n`, 'utf8'); + +exec('"D:\\Program Files\\Typora\\Typora.exe" "' + filePath + '"', (err, stdout, stderr) => { + if (err) { + //fs.appendFileSync(__dirname + '/typora-debug.log', 'err: ' + err.message + '\n'); + } +}); diff --git a/tools/v1bak/typora-handler.vbs b/tools/v1bak/typora-handler.vbs new file mode 100644 index 0000000..5594f02 --- /dev/null +++ b/tools/v1bak/typora-handler.vbs @@ -0,0 +1,19 @@ + +' typora-handler.vbs +' 获取传入的参数,也就是 typora:// 后面的完整链接 +Dim url +url = WScript.Arguments(0) + +' 创建一个 Shell 对象 +Set WshShell = CreateObject("WScript.Shell") + +' 构造要执行的命令 +' 注意:这里的路径需要根据你电脑上 node.exe 和 .js 文件的实际位置来写 +Dim command +command = """C:\nvm4w\nodejs\node.exe"" ""D:\projects\my-website\tools\typora-handler.js"" """ & url & """" + +' 执行命令 +' 参数 0 表示隐藏窗口,False 表示不等待程序结束就返回 +WshShell.Run command, 0, False + +Set WshShell = Nothing \ No newline at end of file