242 lines
13 KiB
Markdown
242 lines
13 KiB
Markdown
# LTJT Business Module API Inventory
|
|
|
|
Date: 2026-07-07
|
|
|
|
## Scope
|
|
Authorized browser session for the `业务操作` module on `https://ltjt.yunzhi.run/`.
|
|
|
|
This inventory records endpoint shapes and parameter names only. It intentionally avoids storing business data rows, cookie values, passwords, CAPTCHA values, or other secrets.
|
|
|
|
## Integration Model Observed
|
|
- The app is a classic ASP/IIS back office.
|
|
- Business screens are HTML pages under `/System/Business/*.asp`.
|
|
- List data is usually loaded by jQuery XHR from `/System/dat/*.asp` with `POST` form encoding.
|
|
- Most list endpoints return `text/html; Charset=UTF-8`, not JSON.
|
|
- Common pagination keys: `Act`, `Tpage`, `P_Size`, then the page's `SearchForm.serialize()` fields.
|
|
- The UI opens modules as extra iframes/tabs inside `System/Mainlt.asp`, not as a single replaced iframe.
|
|
- A direct unauthenticated or expired call returns JavaScript such as `alert('登陆失效,请重新登陆!')`.
|
|
|
|
## Core List Endpoints
|
|
|
|
| Module | Page | List endpoint | Act | Notes |
|
|
|---|---|---|---|---|
|
|
| 产品管理 | `/System/Business/Product.asp` | `POST /System/dat/product.asp` | `PrintGridList` | Confirmed by real menu click. |
|
|
| 独立团计划表 | `/System/Business/orders.asp` | `POST /System/dat/orders.asp` | `JH_OrderList` | Confirmed by real menu click. |
|
|
| 散拼团计划表 | `/System/Business/plan.asp` | `POST /System/dat/plan.asp` | `SP_OrderList` | Confirmed by real menu click. |
|
|
| 团队安排 | `/System/Business/teams.asp` | `POST /System/dat/team.asp` | `PrintGridLists` | Confirmed by real menu click. |
|
|
| 航班控位表 | `/System/Business/tickets.asp` | `POST /System/dat/tickets.asp` | `PrintGridListh` | Confirmed from page JS; initial load also calls `AjaxPublicFun.asp?Act=Probaowei`. |
|
|
| 团队备案表 | `/System/Business/teams_beians.asp` | `POST /System/dat/team.asp` | `PrintGridListb` | Confirmed by real menu click. |
|
|
| 退货管理 | `/System/Business/teams_return.asp` | `POST /System/dat/team_return.asp` | `PrintGridLists` | Confirmed by real menu click. |
|
|
| 客服回访 | `/System/Business/kefu.asp` | `POST /System/dat/team.asp` | `PrintGridListk` | Confirmed by real menu click. |
|
|
| 酒店用房表 | `/System/Business/Hotels.asp` | `POST /System/dat/hotels.asp` | TBD | Page references confirmed; exact `Act` still needs a stable-login script capture. |
|
|
|
|
## Parameter Shapes
|
|
|
|
### 产品管理
|
|
Endpoint: `POST /System/dat/product.asp`
|
|
|
|
Observed body keys:
|
|
`Act=PrintGridList`, `Tpage`, `P_Size`, `S_fabudanwei`, `S_chanpinming`, `S_tianshu`, `S_kehu`, `S_caozuoren`, `S_zhuanxianming`, `S_zhuangtai`.
|
|
|
|
Related endpoints:
|
|
- `POST /System/dat/AjaxPublicFun.asp?Act=ProGetTableZD&tb=Product&zd=chanpinming&s_fabudanwei=...`
|
|
- `GET /System/Business/product_list.asp?ID=...`
|
|
- `GET /System/Business/product_add.asp?cp=...`
|
|
- `POST ../DAT/product.asp` and `POST ../dat/product.asp` are referenced for product actions.
|
|
|
|
### 独立团计划表
|
|
Endpoint: `POST /System/dat/orders.asp`
|
|
|
|
Observed list body keys:
|
|
`Act=JH_OrderList`, `Tpage`, `P_Size`, `riqi`, `S_chufariqi`, `S_chufarizhi`, `S_fabudanwei`, `S_tuanxuhao`, `S_kehuming`, `S_chanpinming`, `S_gendanren`, `S_youkexinxi`, `S_daoyou`, `S_lingdui`, `S_querenshu`, `S_zhuanxianming`, `S_zhuangtai`.
|
|
|
|
Other actions referenced:
|
|
- `Act=JH_OrderList_one`
|
|
- `Act=DelRecord`
|
|
- `Act=JH_Ordercopy`
|
|
- `Act=JH_set_quxiao`
|
|
|
|
Related pages:
|
|
- `/System/Business/orders_list.asp?did=...`
|
|
- `/System/Business/orders_add.asp?fabudanwei=...`
|
|
- `/System/Business/orders_adds.asp?fabudanwei=...`
|
|
- `/System/Business/cash_shou_add.asp?...`
|
|
- `/System/Business/teams_shoudaoyou.asp?tdid=...`
|
|
- `orders_excel.asp`
|
|
|
|
#### 独立团下单 / 新增订单
|
|
Full extracted field schema:
|
|
- Machine-readable JSON: [schemas/orders_add_form_schema.json](/Users/inmanx/Documents/lwltAPI/schemas/orders_add_form_schema.json)
|
|
- Human-readable summary: [schemas/orders_add_form_schema.md](/Users/inmanx/Documents/lwltAPI/schemas/orders_add_form_schema.md)
|
|
|
|
Entry point:
|
|
- The `下单` button on `/System/Business/orders.asp` has `onclick=OPEN_update(0,0,0)`.
|
|
- It opens a dialog iframe:
|
|
`/system/Business/orders_add.asp?fabudanwei=<分公司>©=0&ddid=0&_=<timestamp>`
|
|
- The page title is `计划下单/修改`.
|
|
|
|
Save endpoint:
|
|
- Form id/name: `ListForm`
|
|
- Form action: `/System/DAT/orders.asp?Act=DoInfoJH`
|
|
- JavaScript submit call:
|
|
`POST /System/DAT/orders.asp`
|
|
- Submit payload:
|
|
`Act=DoInfoJH&` + `$("#ListForm").serialize()`
|
|
- Response type: JavaScript (`dataType: "script"`), so success/failure is probably returned as executable script/alerts rather than JSON.
|
|
|
|
Submit behavior observed:
|
|
- `SubmitInfoForm()` first checks that the total large/small passenger counts are not both zero.
|
|
- It then calls `Vidy.CheckMastInput("ListForm")` to enforce required fields and basic input filtering.
|
|
- Only after those checks does it call `$.ajax({ type: "POST", url: "/System/DAT/orders.asp", dataType: "script", data: "Act=DoInfoJH&" + $("#ListForm").serialize() })`.
|
|
- The loaded add form contained about 825 `input/select/textarea` fields, because it includes repeated itinerary, receivable, flight, restaurant, hotel, attraction, attachment, and hidden metadata rows.
|
|
|
|
Primary required fields observed on the add form:
|
|
- `chufa_ri` - 出发日期
|
|
- `zhuanxianming` - 专线名称
|
|
- `TianShu` - 行程天数
|
|
- `zutuanshe` plus hidden `zutuansheid`, `zutuanshegzr`, `bizhong` - 预订客户/customer metadata
|
|
- `chanpinming` plus hidden `baojia` - 产品名称/pricing metadata
|
|
- `gendanren` - 跟单人
|
|
- `tuanxuhao1`, `tuanxuhao2` - 团号 parts
|
|
- `darenshu`, `xiaorenshu`, `ertrenshu`, `yingrenshu`, `quanrenshu` - adult/child/infant/leader counts
|
|
- `xiaoshouren` - 销售人
|
|
|
|
Other form field groups observed:
|
|
- `lianxiren`, `keyuandi`, `xiadanbeizhu`, `yaobeian`, `danzhuangtai`
|
|
- `frenshu*` traveler-count breakdown fields
|
|
- `Text*_N` and `shuomingN` itinerary/explanation blocks
|
|
- `PicFile0`, `PicFile1` upload attachment references
|
|
- `ys_*` receivable/charge rows, including unit, item, currency, quantity, unit price, amount, payment-state metadata, remarks, operator/reviewer fields
|
|
- `ban*` flight rows, up to 4 observed row groups
|
|
- `zao*`, `zhong*`, `wan*`, `zhusu*`, `jingdian*` itinerary/service arrangement rows, up to 15 day rows and repeated attraction slots
|
|
- hidden operational fields including `ddid`, `tdid`, `quanxian`, `fabudanwei`, `caozuoren`, `ys_shenhe`, `yingfu_jing`, `yingfu_can`, `zhusuanpai`, `daoyoujiesuan`, `youyingshoukuan`, `session_id`
|
|
|
|
Lookup/support endpoints loaded by the add page:
|
|
- `POST /system/dat/AjaxPublicFun.asp?Act=GetInformation&fl=1&fabudanwei=...`
|
|
- `POST /system/dat/AjaxPublicFun.asp?Act=ProTravel&fabudanwei=...`
|
|
- `POST /system/dat/AjaxPublicFun.asp?Act=GetSFXiangMu&sf=0`
|
|
- `POST /system/dat/AjaxPublicFun.asp?Act=Probaowei&fabudanwei=...`
|
|
- `POST /system/dat/AjaxPublicFun.asp?Act=GetProucttextes&fabudanwei=...`
|
|
- `POST /system/dat/AjaxPublicFun.asp?Act=ProDanweiZCxm&leibie=3&fabudanwei=...`
|
|
- `POST /system/dat/AjaxPublicFun.asp?Act=ProDanweiZCxm&leibie=4&fabudanwei=...`
|
|
- `POST /system/dat/AjaxPublicFun.asp?Act=ProDanweiZCxm&leibie=1&fabudanwei=...`
|
|
- `POST /system/dat/AjaxPublicFun.asp?Act=GetInformation&fl=3&fls=1&fabudanwei=...`
|
|
- `POST /system/dat/AjaxPublicFun.asp?Act=ProGetProductname&fls=1&fabudanwei=...`
|
|
- `POST ../dat/AjaxPublicFun.asp?Act=Find_danweixinxi&...`
|
|
- `POST ../DAT/AjaxPublicFun.asp?Act=Find_qiankuan&...`
|
|
- `POST ../dat/AjaxPublicFun.asp?Act=GetProduct&cpm=...`
|
|
|
|
Attachment helper pages:
|
|
- `/Inc/UpLoadImg.asp?InputID=PicFile0&Exe=jpg|jpeg|bmp|png|gif|tif|doc|xls|xlsx|docx|pdf&oldval=...`
|
|
- `/Inc/UpLoadImg.asp?InputID=PicFile1&Exe=jpg|jpeg|bmp|png|gif|tif|doc|xls|xlsx|docx|pdf&oldval=...`
|
|
|
|
Feasibility note:
|
|
- The down-order operation is technically addressable through `Act=DoInfoJH`, but it is a large browser-form contract rather than a small API call.
|
|
- Building a reliable adapter requires reproducing the page's client-side construction of `ListForm`: lookup fills, hidden IDs, currency/unit metadata, itinerary rows, receivable rows, uploaded attachment references, and validation.
|
|
- It should be developed first as a dry-run serializer that opens `orders_add.asp`, fills fields in a controlled browser/page context, serializes `ListForm`, and compares the payload without pressing submit.
|
|
- Actual `Act=DoInfoJH` submission should wait for explicit owner approval and a test/sandbox order or rollback policy.
|
|
|
|
### 散拼团计划表
|
|
Endpoint: `POST /System/dat/plan.asp`
|
|
|
|
Observed list body keys:
|
|
`Act=SP_OrderList`, `Tpage`, `P_Size`, `riqi`, `S_chufariqi`, `S_chufarizhi`, `S_fabudanwei`, `S_tuanxuhao`, `S_kehuming`, `S_chanpinming`, `S_gendanren`, `S_youkexinxi`, `S_daoyou`, `S_querenshu`, `S_zhuanxianming`, `S_zhuangtai`.
|
|
|
|
Other actions referenced:
|
|
- `Act=SP_OrderList_one`
|
|
- `Act=SP_Plancopy`
|
|
- `Act=DelRecord`
|
|
- `Act=JH_set_quxiao`
|
|
|
|
Related pages:
|
|
- `/System/Business/plan_List.asp?tid=...`
|
|
- `/System/Business/plan_order.asp?tdid=...`
|
|
- `/System/Business/plan_add.asp?fabudanwei=...`
|
|
- `/System/Business/plan_update.asp?tid=...`
|
|
|
|
### 团队安排
|
|
Endpoint: `POST /System/dat/team.asp`
|
|
|
|
Observed body keys:
|
|
`Act=PrintGridLists`, `Tpage`, `P_Size`, `riqi`, `S_chufariqi`, `S_chufarizhi`, `S_fabudanwei`, `S_chanpinming`, `S_fatuanren`, `S_daoyou`, `S_kehu`, `S_jiudian`, `S_chedui`, `S_tuanxuhao`, `S_Guide`, `S_Car`, `S_Hotel`, `S_Train`, `S_Other`, `S_youke`, `S_tuanbao`, `S_zhuanxianming`, `S_zhuanxianlei`, `S_zhuangtai`.
|
|
|
|
Related pages:
|
|
- `/System/Business/plan_List.asp?tid=...`
|
|
- `/System/Business/orders_list.asp?tid=...`
|
|
- `/System/Business/teams_daoyou.asp?tdid=...`
|
|
- `/System/Business/teams_cheliang.asp?tdid=...`
|
|
- `/System/Business/teams_jiudian.asp?tdid=...`
|
|
- `/System/Business/teams_piao.asp?tdid=...`
|
|
- `/System/Business/teams_qita.asp?tdid=...`
|
|
- `teams_excel.asp`
|
|
|
|
### 航班控位表
|
|
Endpoint: `POST /System/dat/tickets.asp`
|
|
|
|
Observed list body keys:
|
|
`Act=PrintGridListh`, `Tpage`, `P_Size`, `S_chufariqi`, `S_chufarizhi`, `S_fabudanwei`, `S_picihao`, `S_kehu`, `S_danweiid`, `S_danwei`, `S_zhuanxianlei`.
|
|
|
|
Related endpoints/pages:
|
|
- `POST /System/dat/AjaxPublicFun.asp?Act=Probaowei&fabudanwei=...`
|
|
- `/System/Business/tickets_add.asp?...`
|
|
- `/System/Business/tickets_one.asp?hangbanhao=...`
|
|
- `tickets_excel.asp`
|
|
|
|
### 团队备案表
|
|
Endpoint: `POST /System/dat/team.asp`
|
|
|
|
Observed body keys:
|
|
`Act=PrintGridListb`, `Tpage`, `P_Size`, `riqi`, `S_chufariqi`, `S_chufarizhi`, `S_fabudanwei`, `S_chanpinming`, `S_jidiaoren`, `S_daoyou`, `S_kehu`, `S_beianhao`, `S_tuanxuhao`, `S_Other`, `S_youke`, `S_zhuanxianming`, `S_zhuanxianlei`, `S_zhuangtai`.
|
|
|
|
Related page:
|
|
- `/System/Business/teams_qita.asp?tdid=...`
|
|
|
|
### 退货管理
|
|
Endpoint: `POST /System/dat/team_return.asp`
|
|
|
|
Observed body keys:
|
|
`Act=PrintGridLists`, `Tpage`, `P_Size`, `riqilei`, `S_chufariqi`, `S_chufarizhi`, `S_fabudanwei`, `S_tuanxuhao`, `S_chanpinming`, `S_gouwudian`, `S_daoyou`, `S_kehu`, `S_youke`, `S_fatuanren`, `S_zhuanxianming`, `S_zhuangtai`.
|
|
|
|
Related pages:
|
|
- `/System/Business/teams_return_add.asp?fabudanwei=...`
|
|
- `teams_return_excel.asp`
|
|
|
|
### 客服回访
|
|
Endpoint: `POST /System/dat/team.asp`
|
|
|
|
Observed body keys:
|
|
`Act=PrintGridListk`, `Tpage`, `P_Size`, `riqi`, `S_chufariqi`, `S_chufarizhi`, `S_fabudanwei`, `S_tuanxuhao`, `S_chanpinming`, `S_fatuanren`, `S_daoyou`, `S_zhuanxianlei`, `S_zhuanxianming`, `S_zhuangtai`.
|
|
|
|
Related actions/pages:
|
|
- `/System/Business/kefu_add.asp?tdid=...`
|
|
- `Act=del_kefu` on `POST /System/DAT/team.asp`
|
|
|
|
## Permission or Session-Sensitive Pages
|
|
|
|
The following business-menu items showed permission alerts, empty frames, or session invalidation during capture and should be rechecked after a fresh login if they are needed:
|
|
- `/System/Business/Cash_fu.asp` - 我的付款单
|
|
- `/System/Business/Cash_shou.asp` - 我的收款单
|
|
- `/System/Business/Cash_zhi.asp` - 我的费用报销单
|
|
- `/System/Business/Invoice.asp` - 我的发票申请
|
|
- `/System/Business/Bill_out.asp` - 我发放的签单
|
|
- `/System/Business/Arrears.asp` - 我的客户欠款
|
|
|
|
## Practical Feasibility
|
|
|
|
Direct integration appears feasible, but not as a clean public API. The practical path is to build an adapter that:
|
|
- Logs in through an approved account/session strategy.
|
|
- Replays the same `application/x-www-form-urlencoded` XHR calls used by each page.
|
|
- Parses HTML fragments, not JSON.
|
|
- Handles session expiry scripts and permission-alert scripts as first-class errors.
|
|
- Keeps writes disabled until each write endpoint is separately reviewed and authorized.
|
|
|
|
Runtime must not depend on AI/LLM decisions. AI is only acceptable for discovery and mapping drafts. The production adapter should be deterministic: standard data object -> explicit field mapping -> lookup resolution -> dry-run serialization -> validated submit.
|
|
|
|
See [adapter_design.md](/Users/inmanx/Documents/lwltAPI/adapter_design.md) for the recommended non-AI runtime architecture.
|
|
|
|
Open items before production:
|
|
- Confirm stable login/session renewal with the system owner.
|
|
- Capture response-body structure for successful list calls after a fresh login.
|
|
- Confirm whether dat endpoints require a page-opened iframe context, Referer, or additional cookies.
|
|
- Define allowed read/write operations for the integration account.
|