2026-09-10 10:57:40 +08:00
2026-09-10 10:57:40 +08:00
2026-09-10 10:57:40 +08:00
2026-09-10 10:57:40 +08:00
2026-09-10 10:57:40 +08:00
2026-09-10 10:57:40 +08:00

AI 融资移动端

基于 uni-app x、Vue 3、UTS 的移动端原型,包含 27 个页面。使用 HBuilderX(VDOM 模式)开发,已验证 5.24 和 5.26 的本地编译;本项目没有独立的 npm 构建入口。

2026-09-28:原型07产品对比已接通,匹配列表/本次产品详情可选择2—3项历史产品,支持补选、移除、刷新恢复、失败列重试及手机横向滚动。复用本人冻结匹配详情,不新增表或模型调用;当前26页,真实产品与跨平台验收仍待完成。见开发进度6.16。

2026-09-28:原型09报告已改为“评估概况/匹配结果/改善建议”,支持栏目URL刷新、最多3项历史候选、分组产品依据与局部重试;重新评估进入空白个人/企业表单,旧报告不补算。PDF、上下文助手与行动页继续独立开发。验证见开发进度6.17。

2026-09-28:原型10下一步行动已接通报告/产品入口,支持材料准备、查看已存报告、优化资料后同类型空白重评和上下文AI咨询;登录返回与当前可用性守卫已验证。H5 38项检查、Android/微信编译通过;09 PDF待开发,真实产品/真机待验收。见开发进度6.20。

2026-09-28:09报告与10行动页已接入普通H5 PDF下载:鉴权、冻结数据、中文分页、脱敏及失败重试;29项文件检查、20项HTTP及24项浏览器检查通过,Android/微信编译通过。微信内浏览器/原生下载与生产容量待验收。见开发进度6.21。

本地运行

2026-09-24:本地产品库已按用户要求上架6条演示产品(ID22—27)。新评估会冻结目录、计算三态及证据并保存匹配结果;报告已展示实际统计和演示标记,旧报告不补算。匹配列表/详情API和03/04/05/06基础已接通,可从新报告进入本次匹配;07—10扩展待开发。数据、脚本与参数见产品规则契约第7节,验收进度见开发进度6.12。

本地评估分析还需要启动后端队列进程;仅启动 phpStudy、Redis 和前端页面不会执行模型任务。在 PowerShell 中运行下列命令,并保持终端运行(重启电脑后需重新启动):

Set-Location 'D:\AAdesk\202609\airz'
& 'D:\Develop\phpstudy_pro\Extensions\php\php7.4.3nts\php.exe' think analysis:work

提交后一直“分析中”时,先检查此进程是否运行;未运行时任务会保留在队列中,启动后继续处理,无需重复提交。运行会调用已配置的真实模型并产生用量。生产环境需要独立的进程守护;本地手动启动不代表已配置开机自启。

在 HBuilderX 中导入当前目录,选择“运行 → 运行到浏览器”。共享请求配置位于 services/api.uts,账户、融资服务分别位于对应分包的 services/。现已接入本地后端密码登录、账户资料、头像、退出及改密,以及融资需求v2录入、正式提交、历史、DeepSeek自填报告与失败重试;完整度/准备状态及报告v2自填支线已接入;短信与真实机构产品资料仍待接入。无草稿;金额显示万元、接口传元字符串。最新状态和验证范围见开发进度0.6及6.6。

也可使用 HBuilderX CLI。以下 PowerShell 命令中的安装路径应按本机环境调整;在项目根目录执行:

$hbuilderCli = 'D:\Develop\HBuilderX\cli.exe'
$projectPath = (Get-Location).Path
& $hbuilderCli open
& $hbuilderCli launch web --project $projectPath --compile false --continue-on-error false

各平台编译

以下命令仅本地编译,不上传、不发布:

& $hbuilderCli launch mp-weixin --project $projectPath --compile true --continue-on-error false
& $hbuilderCli launch app-android --project $projectPath --compile true --continue-on-error false
& $hbuilderCli launch app-ios --project $projectPath --iosTarget simulator --compile true --continue-on-error false

产物位于 unpackage/dist/dev/ 对应平台目录。Android 命令可检查 Kotlin/class 编译;Windows 上 iOS 命令只检查当前编译链生成的源码产物,不代表已完成 Xcode 构建或生成 IPA。

运行微信小程序需配置自己的 AppID,并开启微信开发者工具服务端口。Android 真机运行需启用 USB 调试;iOS 真机运行需相应签名环境。正式发行还需配置应用图标、签名、真实接口及平台要求的资料,并完成真机测试。

跨端维护约定

  • 页面尺寸和安全区计算集中在 services/layout.uts。新增页面应复用这里的逻辑,并检查小屏、横屏、键盘弹出及底部安全区。
  • 微信小程序首页在右侧预留胶囊区域与 8px 间距;公共页面标题采用左右对称的安全留白,始终按屏幕中心定位。获取胶囊失败时按 104px 避让。产品分享入口在小程序端放在内容区,App 和 Web 仍保留在标题栏右侧。导航不新增顶部空行,顶部按状态栏和安全区计算。
  • 首页右上角依次为搜索、消息通知;微信端两个按钮与胶囊等高、顶部对齐,按钮组向左展开,左侧 Logo 对齐胶囊的垂直中心;其他端仍在导航栏内居中。AI 助手保留首页横幅及快捷入口。
  • 原生样式遵循 uni-app x 支持范围。仅 Web/小程序支持的样式用条件编译隔离;修改 UTS 类型后应重新验证 Android 编译。
  • 首页及跨包共用的轻量位图位于 static/mobile/,专属大图位于各分包的 static/,原始图片保留在 static/images/ 与 static/icons-generated/。箭头继续使用 static/icons/ 下的 SVG。
  • 底栏使用 static/mobile/navigation/ 的专用位图,由现有高清图标按可见边界裁切、等高居中得到。更换素材时保持一致的图案高度和画布留白,避免仅统一图片元素尺寸却出现视觉错位。
  • 微信打包忽略原始图片目录和未使用的 static/logo.png,规则位于 manifest.json 的 mp-weixin.packOptions.ignore。新增资源要检查引用与排除规则,最终包体以微信开发者工具结果为准。
  • API 环境配置在 services/config.uts,开发地址为 http://127.0.0.1/api/v1。共享请求已统一Bearer、FastAdmin响应解包及401处理;模拟开关关闭,缺服务配置时失败而非模拟成功。测试/生产地址待配置,生产只允许HTTPS。真机需改为可访问的局域网/正式地址,不能使用手机自身127.0.0.1。

当前前端交互

个人与企业评估不提供草稿功能:填写页与确认页仅通过内存传递本次输入,离开流程、刷新或退出账户后丢弃;已接入正式提交及历史列表/详情接口;提交后资料只读。选图仅供本机预览,证件资料上传和数据查询尚未接入。课程章节进度、消息已读与体验签到均保存在当前设备,不代表服务器账户数据。

个人中心顶部的头像、昵称、手机号区域统一进入修改资料;账户安全独立提供修改密码、验证码重设密码及换绑手机号。昵称和头像缓存按稳定userId隔离,手机号仅保留为内部兼容键。头像已接入后端上传及持久化,限制 500KB 以内的 JPG / PNG / WebP,服务端验证真实图片并重新编码,保存时校验附件归属,不修改融资档案的实名信息。密码登录、原密码改密及退出已接入Redis会话;短信验证和换绑尚未接入,不在本机模拟成功,也不保存密码、验证码或其散列。安全接口成功后清除当前会话并要求重新登录;验证码计时仅在服务端发送成功后启动。

账户接口集中在 packages/account/services/account.uts,请求携带当前会话的 Authorization: Bearer <token>;后端需根据 token 确定账户,校验验证码用途与有效期、限制发送频率并完成旧会话撤销。接口状态:

  • 已实现 GET/PUT /account/profile:PUT 接收 nickname(2–20字符)及可选 avatarId;省略保留原头像,null 恢复默认。GET 返回服务端资料。
  • 已实现 POST /account/avatar:multipart 的 file,返回 attachmentId、avatarUrl;头像为公开资料,不能用该接口上传私有证件。
  • POST /account/security/sms-code:purpose(password / phone-current / phone-new)与 newPhone(仅新号码验证传入);当前号码从认证账户读取。
  • PUT /account/password:verification(password / sms)、oldPassword 或 code、newPassword。新密码为 8–32 位可打印 ASCII,需含字母和数字,不允许空格。
  • PUT /account/phone:newPhone、currentCode、newCode;后端验证两组验证码及新号码占用情况。

资产与负债包含 creditLoanCount(信用贷款笔数)、totalDebtBalance(欠款总余额)、monthlyLoanPayment(贷款月还款金额)、creditCardCount(银行信用卡张数)、creditCardTotalLimit(总额度)、creditCardUsedLimit(已使用总额度)、house / car(有 / 无)。移动端所有金额统一以万元输入和展示,最多六位小数;提交接口前精确换算成元的两位小数字符串,范围为 0–999999999.99 元(DECIMAL(11,2))。数量为非负整数;资产负债保持原来的可跳过规则。企业经营时间使用实际经营月数,不从区间猜测。启动时清理旧评估草稿缓存,不导入、不恢复。

新闻与课程的数据定义位于 packages/content/services/content.uts。正式匹配与产品适配位于 packages/finance/services/matches.uts;GET /assessments/:id/matches及结果详情返回冻结的产品范围、判定和证据;GET /products/:id返回当前公共资料。金额范围使用元的十进制字符串,在适配层精确转换为万元。旧无评估GET /matches和模拟fetchProduct入口已移除。后端产品表使用独立的额度、期限和利率范围字段,匹配分数与理由属于评估结果。申请入口目前仅引导准备资料,不向金融机构提交申请。

首页搜索进入内容分包的 search/search,支持全部、新闻、融资课堂筛选及对应详情跳转。搜索服务位于 packages/content/services/search.uts,当前匹配本地标题、简介、分类和正文;空格分隔的多个关键词需同时命中。预留 GET /content/search,参数为 keyword 与 type(all / news / lesson),返回 { items: ContentSearchResult[] },每项包含 id、type、title、summary、category、meta、image。后端接入时需同步接入新闻和课程详情的数据源,确保返回的 ID 可查询详情。

页面与分包

“帮助与反馈”从个人中心进入内容分包的 help/help,按账户使用、融资评估、资料与隐私分组展示可展开的问答,不跳转 AI 助手。数据与客服接入点位于 packages/content/services/help.uts;预留 GET /help/faqs 返回 { items: HelpQuestion[] }。联系客服当前只展示暂未开放提示,不发起客服会话或提交反馈。

pages/ 只保留 home/home.uvue,也是唯一主包页面。页面注册统一维护在 pages.json 的 pages 和 subPackages,分包内的 path 相对于 root。

目录 内容 页面数
pages/home 首页 1
packages/finance 融资入口、评估、确认、分析、报告、匹配、产品、对比、助手、档案 10
packages/account 启动引导、登录、个人中心、修改资料、账户安全、修改密码、更换手机号、积分、消息 9
packages/content 搜索、帮助与反馈、新闻、文章、融资课堂、课程详情 6

当前各模块体积较小,优先保持完整业务链;普通内容统一一个包。新增功能先放入所属分包,再根据微信编译产物大小决定是否细分。单包以 2 MiB 为保守预算,需预留增长空间,最终体积以微信开发者工具为准。

2026-09-20 使用 HBuilderX 5.26 本地微信开发编译,按 packOptions.ignore 排除原始素材后统计:主包约 887 KiB,融资包 378 KiB,账户包 148 KiB,内容包 355 KiB。此为磁盘产物统计,不等同于开发者工具上传后的压缩体积。

  • 分包页面使用完整绝对路由 /packages/<模块>/<页面>/<页面>,包含路由比较和携带参数的跳转;主包首页仍为 /pages/home/home。
  • 微信按 subPackages 下载分包。Android、iOS 使用相同目录、页面注册和路由编译为应用,不将小程序按需下载机制等同于 App 热更新。
  • 保留现有自绘 BottomNav,新闻、消息、我的允许在分包中;不配置要求页面留在主包的原生 tabBar。底栏切换使用 reLaunch,详情使用 navigateTo / navigateBack。
  • 冷启动首页通过 services/launch.uts 只触发一次账户引导,之后按登录状态进入首页或登录;直接打开分包页面和正常返回首页不会重复触发引导。
  • components/ 与 services/ 只保留共享组件、布局、请求、会话和当前评估流程的内存状态。主包或其他分包不得 import 某个分包的专属模块;分包间只通过路由与共享服务交互。
  • 仅某个分包使用的图片放在该包 static/;首页也使用的插图及通用图标保留在根 static/,避免分包资源被主包引用。

参考:uni-app x 页面与分包配置。

2026-09-22 金额与评估存储约定

services/money.uts 集中处理万元与元的精确转换;填写页与确认页均为万元,submitAssessment 仅在提交边界转换。后端每次评估对应一条 fa_user_info,其报告和产品快照保存在唯一关联的 fa_ai_chat 中。后端数据库及生命周期服务已准备,移动端已切换真实本地接口,未完成的评估、AI、私有证件上传及授权接口不会模拟成功,需按开发进度继续接入。

2026-09-22 开发启动状态

  • 登录默认使用密码模式;需已有手机号账户。尚未配置短信服务商,发送验证码会展示后端503提示,不启动倒计时或生成demo Token。
  • 会话包含userId/有效期,旧无身份的模拟会话作废。昵称头像、课程本机进度、体验签到和消息已读按userId隔离;退出、会话过期和401时清理当前账户缓存。评估输入不写本机存储,应用启动清理旧草稿键。
  • DeepSeek配置已记录在后端私密环境文件,腾讯云TokenHub地址及两个模型见开发文档;密钥不进入前端,尚未发起真实模型调用。
  • 首批真实接口不等于25页已业务化。首页/资讯/课程等部分展示仍为原型;正式评估提交与历史已接通,产品匹配和AI助手接口尚未实现。各模块状态以 开发进度为准。
  • 默认开发环境不代表正式部署;发布前需核验目标环境、API地址、HTTPS/CORS及所有必做依赖,禁止把本机地址作为生产配置。

2026-09-23 正式评估记录

  • packages/finance/services/records.uts 负责表单白名单DTO、元/万元转换、枚举和历史适配;确认页提交获得assessmentId后清空流程内存及页面栈。幂等键在网络失败时复用,不跨刷新保存。
  • 个人/企业评估提交后保存到后端;分析页读取真实状态,只有processing时每5秒轮询,离开停止;不自动跳到固定分数报告。
  • 当前分析服务未接通,显示“资料已保存,分析服务尚未开放”;不意味着DeepSeek已经执行。附件/外部授权尚未接入,必须移除本次资料与授权选择后才能提交。
  • 档案页展示本人历史、分页、错误重试及只读详情;金额万元,身份证/手机号脱敏。无新增页面,仍为25页。

2026-09-23 DeepSeek与分析任务(覆盖此前未接入状态)

已接腾讯云TokenHub,指定Pro/Flash真实权限通过,默认Flash生成自填资料分析。新增POST /api/v1/assessments/:id/retry(HTTP202)及GET /api/v1/assessments/:id/report,初次提交HTTP201回执保持不变。前端已接真实状态、幂等失败重试、报告与档案跳转,移除固定评分/雷达;金额精确显示万元,无产品规则时明确未执行匹配。

后端目录运行 php think analysis:work;--once只消费一条,--recover-only仅补投和回收过期租约。已开启本地私密.env的deepseek.enabled,示例默认false;配置/代码变更后重启worker。开发进程不代表生产守护。

数据库事务预留任务后投Redis,数据库queued状态支持漏投补偿;running租约过期明确失败,不自动重复调用收费模型。行锁+taskId拦截重复消费和旧结果回写;重试键映射保存原任务回执。fa_ai_chat保存报告和空匹配,fa_ai_chat_log记录用量/状态,未知tokens为null。开发默认每用户每日20次预留、每评估3次;商业预算待确认。

迁移 database/migrate_analysis_tasks.py --apply 已执行,仅增补fa_user_info的task_requests/task_stage/attempt_count/lease_until/dispatched_at及idx_task_dispatch;无新表。执行前0条评估,备份为 D:/AAdesk/202609/airz-backups/analysis-tasks-20260923-172957-846359/user_info.sql。回退需先停worker并关闭分析,核对新增业务数据后再用备份恢复,不能直接覆盖后来评估;优先保留兼容字段、回退代码。

验证:先停全部worker,运行 php tests/analysis_tasks.php --worker-stopped(29项)和 php tests/analysis_http.php --worker-stopped(15项),使用合成数据与假模型;恢复扫描可能发现任意queued测试行,不能只依赖随机Redis队列隔离。任务测试可显式追加--live真实调用一次;tests/deepseek_smoke.php --live真实调用两个模型。常规正式评估HTTP回归需分析关闭,开启时会SKIP。当前真实个人自填报告及企业H5重试→worker→报告均通过,普通Chromium与Android编译通过;生产、微信内H5、Safari/真机、外部数据及真实产品匹配未验收。

2026-09-24 匹配读取与页面接入

新增GET /api/v1/assessments/:id/matches、GET /api/v1/assessments/:id/matches/:productId、GET /api/v1/products/:id,均需会员Bearer;前两者还校验评估归属及成功状态。匹配使用已存快照,当前可用性另查,不重跑规则或模型。报告→匹配三态列表→解释/详情/条件三栏已接通,金额显示万元;演示产品明确标识,旧报告不补算。产品对比已完成本地接口联调,报告三栏已完成本地联调;单产品AI解释、PDF和行动页仍待开发。

后端tests/match_records.php --worker-stopped验证62项接口/快照边界(先停止正式worker,合成账户/假模型自动清理,产品变动回滚);前端Web/Android本地编译通过,H5验证记录见前端docs/开发进度.md第6.13节。无新增表或迁移。

2026-09-28 融资档案界面

“我的融资档案”恢复个人/企业切换、完整度与四组资料卡;默认读取该类型最新提交,支持历史分页选择与只读展开。完整度使用所选成功报告中的冻结结果,旧版/未完成/无记录显示未评定说明;底部可查看同次报告或发起空白新评估。不恢复草稿,不编辑历史资料。后端沿用GET /assessments的type过滤及详情/报告接口,验证范围见docs/开发进度.md第6.14节。

2026-09-28:个人中心入口去重,顶部为“开始评估”(选择个人/企业)和“最近报告”(本人最近提交且已完成的报告直达),下方“我的融资档案”管理历史资料。无报告但有任务时可查看进度,无记录时明确提示;不重新提交或调用模型。验证范围见开发进度6.15。

2026-09-28 原型04/05与单产品解释

已按原型还原产品匹配详情,接通逐条DeepSeek解释、状态查询、失败重试和历史保存。新增POST /api/v1/assessments/:id/matches/:productId/explanation,body仅requestId,返回匹配详情中的异步状态;GET不调用模型。复用fa_ai_chat匹配JSON和fa_ai_chat_log,无新表/迁移。analysis:work新增消费解释任务,更新代码后重启进程;成功解释重复打开不收费,失败须明确新键重试,每产品最多三次,与报告共享每日用户额度。

原型08上下文咨询、09 PDF、10行动页和真实产品验收仍待完成。51项解释回归、70项匹配HTTP/快照检查及真实Flash/浏览器验证详见前端docs/开发进度.md第6.18节;模型凭据只从后端配置读取。

2026-09-28 原型08上下文AI助手

已接普通/报告/产品/对比的持久会话、消息分页、异步回复、原键重试和登录返回,界面参考原型08。需保持后端analysis:work运行;进入页面、点击快捷问题不调用模型,明确发送才预留调用。后端本机增量迁移已获授权并完成;原报告未改写。助手70项及相关回归通过,Android/微信编译与H5手机/桌面联调通过;真实多轮DeepSeek语义、真机和生产容量待验收。详见助手契约及开发进度6.19。

S
Description
No description provided
Readme
26 MiB
Languages
JavaScript 96.2%
Python 1.9%
SCSS 1.1%
CSS 0.4%
HTML 0.4%